一、MySQL约束种类
MySQL提供了多种类型的约束,包括:1. 主键约束 (PRIMARY KEY): 主键是一种唯一的索引,通常用于标识表中的每一行数据。主键约束可以保证每行数据都有唯一的标识,避免了数据冲突的问题。例如:
CREATE TABLE student (
id INT(11) NOT NULL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT(3) NOT NULL
);
2. 唯一约束(UNIQUE): 唯一约束用于保证在特定的表列中数据的唯一性。例如:
CREATE TABLE student (
id INT(11) NOT NULL,
name VARCHAR(50) NOT NULL UNIQUE,
age INT(3) NOT NULL
);
3. 外键约束(FOREIGN KEY): 外键约束用于保持关系型数据库表之间的关联关系。例如:
CREATE TABLE course (
id INT(11) NOT NULL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
cid INT(11) NOT NULL,
FOREIGN KEY (cid) REFERENCES student(id)
);
二、MySQL约束条件
约束条件是用于控制表中数据的一致性和完整性的规则。MySQL支持以下约束条件:1. NOT NULL:保证表中列不包含NULL值。例如:
CREATE TABLE student (
id INT(11) NOT NULL,
name VARCHAR(50) NOT NULL,
age INT(3) NOT NULL
);
2. DEFAULT:默认值约束,对于未提供值的列设置默认值。例如:
CREATE TABLE student (
id INT(11) NOT NULL DEFAULT 0,
name VARCHAR(50) NOT NULL DEFAULT 'No Name',
age INT(3) NOT NULL DEFAULT 18
);
三、MySQL约束类型
MySQL支持以下约束类型:1. 表级约束:对表中的数据整体进行约束控制,可以在表创建之后或表上已存在的数据上执行。例如:
ALTER TABLE student ADD CONSTRAINT pk_id PRIMARY KEY(id);
2. 列级约束:对表中的数据列进行约束控制,只有在列添加时才能定义。例如:
CREATE TABLE student (
id INT(11) NOT NULL PRIMARY KEY,
name VARCHAR(50) NOT NULL UNIQUE,
age INT(3) NOT NULL CHECK (age >= 18)
);
四、MySQL设置约束名
MySQL约束名是指将约束命名的规则或惯例。要给约束定义名称,可以使用以下语法:
CREATE TABLE student (
id INT(11) NOT NULL PRIMARY KEY CONSTRAINT pk_student_id,
name VARCHAR(50) NOT NULL UNIQUE CONSTRAINT uk_student_name,
age INT(3) NOT NULL CHECK (age >= 18) CONSTRAINT check_student_age
);
五、MySQL常见的约束
MySQL的主键、外键和唯一键是最常见的约束类型。这里分别给出代码示例:1. 主键约束
CREATE TABLE student (
id INT(11) NOT NULL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT(3) NOT NULL
);
2. 唯一约束
CREATE TABLE student (
id INT(11) NOT NULL,
name VARCHAR(50) NOT NULL UNIQUE,
age INT(3) NOT NULL
);
3. 外键约束
CREATE TABLE course (
id INT(11) NOT NULL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
cid INT(11) NOT NULL,
FOREIGN KEY (cid) REFERENCES student(id)
);