基础篇主要内容:MySQL概述、SQL语句、函数、约束、多表查询、事务。
约束(constraint)
一、概述
约束是作用于表中字段上的规则,用于限制存储在表中的数据。
约束是作用在表中字段上的,在创建表/修改表时可以添加约束。
约束保证了数据库中数据的正确性、有效性和完整性。
常见的约束有:非空约束(not null)、唯一约束(unique)、主键约束(primary key)、默认约束(default)、检查约束(check)、外键约束(foreign key)
二、各种约束实例
注意:
主键约束(primary key)一张表只能设置一个主键,主键的特点是非空且唯一;
数据自增(auto_increment) 一张表只能设置一个数据自增的字段。
三、外键约束(foreign key)
外键用来使两张表的数据之间建立联系。对于外键约束关系来说,被引用的表称为‘父表’或‘主表’,引用外键的表称为‘子表’或‘从表’。主表的关联字段受到子表的约束,不能轻易删除,从而保证了数据的一致性和完整性。
添加外键
法一:创建表时
create table 表名(
···
constraint 外键名称 foreign key 外键字段名 references 主表(主表列名);
);
法二:单独添加
alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表(主表列名);
删除外键
alter table 表名 drop foreign key 外键名称;
外键约束下的删除、更新操作
no action / restrict(默认)
默认行为:当在父表中删除或更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除或更新。
cascade
语法:alter table 表名 constraint 外键名 foreign key(外键字段名)references主表(主表列名)①on update cascade ②on delete cascade;
当在父表中删除或更新对应记录时,首先检查该记录是否有对应外键,如果有则子表数据跟着父表发生相应删除或更新。
set null
语法:alter table 表名 constraint 外键名 foreign key(外键字段名)references主表(主表列名)①on update set null ②on delete set null;
当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则继续删除该记录且将对应外键设置为null。
set default
当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则继续删除该记录且将对应外键设置为默认值。( innodb不支持 )