【学习数据库】约束

所有的约束简介

约束 语句 解释
主键约束 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

发布了36 篇原创文章 · 获赞 34 · 访问量 3221

猜你喜欢

转载自blog.csdn.net/weixin_44611096/article/details/105415480