版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lwz45698752/article/details/86559952
概述
- 约束一定有名字(若不显式命名,则默认命名)
- 查看约束方式:1.代码 2.GUI
- 每个列对应一个数据类型,数据类型即可看作一种约束
- 空值之间不违反唯一性约束
表级约束与列级约束
- 只有非空约束(not null)只能定义于列级下,其他都是两种定义方式
- 列级约束:紧跟列后
- 表级约束:写在表结构声明后
实例
- 创建表时添加约束的实例
- 起名要有可读性
- 最后一行才不用加逗号
- 表级约束的()中指明表级约束作用的列
小结
- 列级约束:列名 + 列数据类型 + (数据长度)+ constraint +约束名(要求易懂)+关键字
- 表级约束:constraint +约束名(易懂)+关键字+(作用的列名列表)
- 外键:constraint +约束名+关键字(列A)+references+另一个表 (列B)
主键
-
通过表中某列定位数据记录时,能唯一定位,则该列可声明为主键(通过主键能唯一地定位表中的一条数据记录)
-
主键隐式包含非空约束,唯一约束
-
类比身份证号,作为公民表的主键(唯一且非空)
外键
- 两表有相同的列,通过此相同列,两表进行连接,该列称为外键
- constraint +约束名+关键字(列A)+references+另一个表 (列B)
- 表示两表通过A列与B列,进行连接
- 外键作用:限制数据取值范围
- 如将一员工数据插入员工表中,其部门ID在部门表中没有,则不满足外键约束,从而插入不了
- 表与表间有关系——》相应地创建外键,使之连接——》限制数据取值范围,保证数据安全
- 级联删除:一部门ID从部门表中剔除,则员工表中属于该部门的员工记录全部剔除
- 级联置空:一部门ID从部门表中剔除,则员工表中属于该部门的员工记录的部门ID置为空,等待update新的部门ID
check约束
修改约束
- 非真正修改,广泛意义上的修改
- 除了用modify关键字修改非空约束,其余操作约束都是add关键字
- 添加约束时,参照表级约束的写法
- 激活时,要考虑原先数据内容,再enable
- 如enable非空约束,要先将那些非空的数据剔除,才行
实例