一、六大约束条件
1.1 not null非空约束
该字段的值不能为空。
1.2 default默认值约束
如果插入数据时,该字段没有赋值,则为默认值。
1.3 primary key主键约束
该字段不能重复,且不能为空。
比如学号。
一个表中只能有一个主键约束。
通过表级约束对两个字段设置联合主键:
1.4 unique唯一约束
该字段值不能重复,可以为空,但只能有一个null值。
比如座位号。
一个表中可以有多个唯一约束。
1.5 check检查约束
用于检查字段值是否正确。
比如检查年龄是否规范,性别是否不男不女。
1.6 foreign key外键约束
该字段的值必须要来自约束关联的外表字段值。
比如学生成绩表的学号必须来自学生信息表的学号字段。
注意 : 外键foreign( 从 ) 必须关联references 其他表的某个字段( 主 )。
被关联的主表字段必须时一个key ( 主键或者唯一 )。
插入数据时,必须先插主表,再插从表。
删除数据时,先删除从表,再删除主表
1.7主键(primary key)和唯一(unique)约束的比较
| 唯一性 | Nullable | 一个表允许存在几个约束 | 是否允许组合 |
主键 | 是 | 不允许 | 最多一个 | 允许,但是不推荐 |
唯一 | 是 | 允许 | 可以有多个 | 允许,但是不推荐 |
二、在定义字段时添加约束(列级约束)
①添加 主键约束
#语法 :
字段名 字段类型 primary key,
例如:
empNo varchar2(50) primary key,
②添加默认约束和非空约束
#语法 :
字段名 字段类型 default 默认值 not null,
例如:
nation varchar2(20) default '汉族' not null,
注意:not null约束必须加在default末尾。
③添加唯一约束和非空约束
#语法 :
字段名 字段类型 unique,
例如:
IDnumber varchar2(50) unique not null,
注意:not null约束必须加在unique末尾。
④添加外键约束
#语法 :
字段名 字段类型 constraint 约束名
references 主表(关联字段)
例如:
empDeptNo number(10) constraint FK_EMPINFO_EMPDEPTNO
references dept(deptno)
⑤添加检查约束
#语法 :
字段名 字段类型 constraint 约束名
check (检查的内容)
例如:
empSex char(4) constraint CK_EMPINFO_EMPSEX
check(empSex = '男' or empSex = '女'),
三、在定义字段后添加约束
注意:非空和默认约束无法使用表级约束实现
推荐使用表级约束建表,将基本约束写在字段之后,检查和外键约束写在之后。
5.7.3 列级约束和表级约束的区别
| 位置 | 支持类型 | 能否起约束名 |
列级约束 | 列的后面 | 全都支持 | 只能给外键和检查约束起名 |
表级约束 | 所有列的下面 | 不支持默认和非空 | 可以 |