05-约束
1.1 实体完整性约束
表中的一列数据代表一个实体(entity),实体完整性的作用即是
标识每一列数据不重复、实体唯一
。
1.1.1 主键约束
关键字:
PRIMARY KEY
唯一,标识表中的一列数据,此列的值不可重复,且不能为 NULL
。
1 |
|
1.1.2 唯一约束
关键字:
UNIQUE
唯一,标识表中的一列数据,不可重复,可以为 NULL(NULL可以重复)
。
1 |
|
1.1.3 自动增长列
关键字:
AUTO_INCREMENT
给主键数值列添加自动增长。从 1 开始,每次加 1;不能单独使用,和主键配合
。
1 |
|
1.2 域完整性约束
限制列的单元格的
数据正确性
。
1.2.1 非空约束
关键字:
NOT NULL
非空,此列必须有值,不能出现 NULL。
1 |
|
1.2.2 默认值约束
关键字:
DEFAULT 值
为列赋予默认值,当新增数据不指定值时,书写 DEFAULT,以指定的默认值进行填充
1 |
|
1.2.3 引用完整性约束
语法:
CONSTRAINT 引用名 FOREIGN KEY(列名) REFERENCES 被引用表名(列名)
详解:FOREIGN KEY 引用外部表的某个列的值,新增数据时,约束此列的值必须是被引用表中存在的值。
1 |
|
- 注意:当两张表存在引用关系,要执行删除操作,一定要
先删除从表(引用表),再删除主表(被引用表)
1.3 约束创建整合案例
创建带有约束的表。
1.3.1 创建表
列名 | 数据类型 | 约束 | 说明 |
---|---|---|---|
GradeId | INT | 主键、自动增长 | 班级编号 |
GradeName | VARCHAR(20) | 唯一、非空 | 班级名称 |
1 |
|
列名 | 数据类型 | 约束 | 说明 |
---|---|---|---|
student_id | VARCHAR(50) | 主键 | 学号 |
Student_name | VARCHAR(50) | 非空 | 姓名 |
sex | CHAR(2) | 默认填充’男’ | 性别 |
borndate | DATE | 非空 | 生日 |
phone | VARCHAR(11) | 无 | 电话 |
GradeId | INT | 非空,外键约束:引用班级表的 gradeid。 | 班级编号 |
1 |
|
- 注意:创建关系表时,一定要
先创建主表,再创建从表
; 删除关系表时,先删除从表,再删除主表
。