【学习数据库】约束

所有的约束简介

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

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序鸡

如果帮到您,点个赞鼓励一下吧。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值