常见约束
用于限制表中的数据,为了保证表中的数据的准确性和可靠性
分类
- not null :非空,保证该字段不能为空,比如姓名,学号
- default:默认,用于保证该字段有默认值,比如性别
- primary key:主键,用于保证该字段的值具有唯一性,比如学号,员工编号
- unique:唯一,用于保证该字段的值具有唯一性,可以为空
例如座位号 - check:检查约束【mysql不支持,但不报错】
- foreign key:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值。
例如学生表的专业编号、员工表的部门编号、员工表的工种编号
在从表添加外键约束,用于引用主表中的某列的值
查看表的索引:主键、外键、唯一
show index from 表名;
添加表的时机
- 创建表时
- 修改表时
约束的添加分类
- 列级约束:六大约束语法上都支持,但外键约束无效果
CREATE TABLE 表名(
字段名 字段类型 列级约束,
);
只支持主键、默认、非空、唯一
- 表级约束:除了非空、默认
CREATE TABLE 表名(
字段名 字段类型 ,
constraint 约束名 约束类型(字段名)
);
约束名:自定义
CREATE TABLE stuinfo(
id INT,
stuname VARCHAR(20),
gender CHAR(1),
seat INT,
age INT,
marjorid INT,
CONSTRAINT pk PRIMARY KEY(id),
CONSTRAINT uq UNIQUE(seat),
CONSTRAINT ck CHECK(gender=‘男’ OR gender=‘女’),
CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id),
);
- 通用
CREATE TABLE stuinfo(
id INT PRIMARY KEY,
stuname VARCHAR(20) NOT NULL,
seat INT UNIQUE,
age INT DEFAULT 18, #默认18岁
marjorid INT,
CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)
);
“祝你前程似锦在冬深在初春在夏至在秋末”
小徐加油!
——2021.2.10