所有的约束简介
约束 | 语句 | 解释 |
---|---|---|
主键约束 | primary key | 要求设定的列非空(NOT NULL)且唯一(unique) |
外键约束 | foreign key (…) references【C】 | 要求设定的列参照列C,列C有数据时,在设定的列中才可添加相应的数据,两列数据类型必须相同 |
非空约束 | not null | 要求设定的列非空 |
唯一性约束 | unique | 要求设定的列唯一 |
检查约束 | check | 检查列值是否满足给定的一个布尔表达式 |
默认值约束 | default | 给设定的列一个默认值 |
解释缩写
【T】表名
【C】列名
《S》数据类型
【Y】约束名
【V】数据类型对应的一个具体的值
【F】布尔表达式
语句 | 解释 |
---|---|
sex in(‘男’,‘女’) | 性别必须是男或女 |
cno like ‘[0-9][0-9][0-9]’ | 课程号必须是三位数字字符,如001 |
grade>=0 and grade<=100 | 成绩必须在0至100之间 |
主键约束
例如,学生的学号,每个人都有学号,并且是唯一的,不与其他人的学号重复
一个表只可有一个主键约束
语句 | 解释 |
---|---|
create table【T】(【C】《S》primary key) | 创建表T的同时给列C设置主键 |
create table【T】(【C1】《S》,【C2】《S》,primary key(【C1,C2】)) | 创建表T的同时给列C1,C2设置主键 |
外键约束
例如,学生所选课程的课程号,课程号必须提前存在,学生才可以选
一个表可有多个外键约束
语句 | 解释 |
---|---|
create table【T】(【C1】《S》foreign key references【T1(C2)】) | 创建表T的同时给列C1设置外键,参考表T1的列C2 |
create table【T】(【C1】《S》foreign key references【T1(C2)】on《update/delete》no action) | 创建表T的同时给列C1设置外键,参考表T1的列C2 删除/更新列C2数据时,拒绝删除/更新,因为列C1与C2关联 |
create table【T】(【C1】《S》foreign key references【T1(C2)】on《update/delete》cascade) | 创建表T的同时给列C1设置外键,参考表T1的列C2 删除/更新列C2数据时,同时删除/更新列C1对应的数据,使列C1与C2中的行(元组)相匹配 |
create table【T】(【C1】《S》foreign key references【T1(C2)】on《update/delete》set-null) | 创建表T的同时给列C1设置外键,参考表T1的列C2 删除/更新列C2数据时,使列C1对应的数据变为空值 |
create table【T】(【C1】《S》,foreign key(【C1】) references【T1(C2)】) | 创建表T的同时给列C1设置外键,参考表T1的列C2 |
create table【T】(【C1】《S》,foreign key(【C1】) references【T1(C2)】on《update/delete》no action) | 创建表T的同时给列C1设置外键,参考表T1的列C2 删除/更新列C2数据时,拒绝删除/更新,因为列C1与C2关联 |
create table【T】(【C1】《S》,foreign key(【C1】) references【T1(C2)】on《update/delete》cascade) | 创建表T的同时给列C1设置外键,参考表T1的列C2 删除/更新列C2数据时,同时删除/更新列C1对应的数据,使列C1与C2中的行(元组)相匹配 |
create table【T】(【C1】《S》,foreign key(【C1】) references【T1(C2)】on《update/delete》set-null) | 创建表T的同时给列C1设置外键,参考表T1的列C2 删除/更新列C2数据时,使列C1对应的数据变为空值 |
非空约束
例如,学生的姓名,每个人都有姓名,所以必须有,不能没有
一个表可有多个非空约束
语句 | 解释 |
---|---|
create table【T】(【C】《S》not null) | 创建表T的同时给列C设置非空约束 |
唯一性约束
例如,公民的身份证号,每个人的身份证号唯一
一个表可有多个唯一性约束
语句 | 解释 |
---|---|
create table【T】(【C】《S》unique) | 创建表T的同时给列C设置唯一约束 |
create table【T】(【C1】《S》,【C2】《S》unique(【C1,C2】)) | 创建表T的同时给列C1,C2设置唯一约束 |
检查约束
用于规定一些满足复杂条件的列,例如分数是小数在0至100之间
一个表可有多个检查约束
语句 | 解释 |
---|---|
create table【T】(【C】《S》check(【F】)) | 创建表T的同时给列C设置检查约束 |
create table【T】(【C】《S》,check(【F】)) | 创建表T的同时给列C设置检查约束 |
默认值约束
例如,在王者荣誉中每个人的初始信誉积分都是100
语句 | 解释 |
---|---|
create table【T】(【C】《S》default ‘【V】’) | 创建表T的同时给列C设置默认值为V |
alter table【T】add constraint【Y】default【V】for【C】 | 给已经存在表T的列C添加默认值V |
完整性约束命名子句
个人感觉是给约束起个名字
语句 | 解释 |
---|---|
create table【T】(【C】《S》,constraint【Y】《primary key(…)/foreign key(…)/check(…)》 | 创建表T的同时,新建一个名为Y的约束 |
alter table【T】add constraint【Y】《primary key(…)/foreign key(…)/check(…)》 | 给已经存在的表T新建一个约束Y |
alter table【T】drop constraint【Y】 | 删除表T的约束Y |