数据库约束 爱被打了一巴掌 2024-03-25 00:06 26阅读 0赞 #### 文章目录 #### * * 1. 简介 * 2. 代码演示 * 3. 外键约束 * 4. 外键删除和更新行为 ### 1. 简介 ### * 概念:约束时作用于表中子段上的规则,用于限制存储在表中的shuju * 目的:保证数据库中数据的正确、有效性和完整性 * 分类: <table> <thead> <tr> <th>约束</th> <th>描述</th> <th>关键字</th> </tr> </thead> <tbody> <tr> <td>非空约束</td> <td>限制该字段不能为null</td> <td>NOT NULL</td> </tr> <tr> <td>唯一约束</td> <td>保证该字段的所有数据都是唯一、不重复的</td> <td>UNIQUE</td> </tr> <tr> <td>主键约束</td> <td>主键时一行数据的唯一标识,要求非空且唯一</td> <td>Primary key</td> </tr> <tr> <td>默认约束</td> <td>保存数据时,如果未指定该字段的值,则采用默认值</td> <td>Default</td> </tr> <tr> <td>检查约束</td> <td>保证字段值满足某一个条件</td> <td>check</td> </tr> <tr> <td>外键约束</td> <td>用来让两张表的数据之间建立连接,保证数据的一致性和完整性</td> <td>foreign key</td> </tr> </tbody> </table> ### 2. 代码演示 ### create table user( id int primary key auto_increment comment '主键', name varchar(10) not null unique comment '姓名', age int check(age>0 && age<=120) comment '年龄', status char(1) default '1' comment '状态' ) ### 3. 外键约束 ### 用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性 alter table user add constraint f_id foreign key(dept_id) references dept(id) #user表的dept_id字段外键引用dept表的id字段 ### 4. 外键删除和更新行为 ### * 删除/更新行为 <table> <thead> <tr> <th>行为</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>no action</td> <td>当在父表中删除/更新对应记录时,首先检查该记录是否有对应的外键,如果有则不允许删除/更新</td> </tr> <tr> <td>restrict</td> <td>当在父表中删除/更新对应记录时,首先检查该记录是否有对应的外键,如果有则不允许删除/更新</td> </tr> <tr> <td>cascade</td> <td>当在父表中删除/更新记录时,首先检查记录是否存在外键,如果有,则也删除/更新外键所在子表中的记录</td> </tr> <tr> <td>set null</td> <td>当在父表中删除对应记录时,首先检查记录是否存在对应外键,如果有则设置子表中该外键值为null(这就要求该外键允许取null)</td> </tr> <tr> <td>set default</td> <td>父表中有变更时,子表将外键列设置成一个默认的值(innodb不支持)</td> </tr> </tbody> </table> alter table 表名 add constraint 外键名称 foreign key references 主表名(主表名字段) on update cascade on delete cascade
还没有评论,来说两句吧...