从 MySQL 8.0.19 版本开始, MySQL 支持了检查约束。检查约束允许你在表定义中声 明条件,并确保符合该条件的数据才能插入或更新到相应的列中。
creat table employee(
id int AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
age INT,
email VARCHAR(100),
CHECK (age>= 18));
ALTER TABLE 表名 CHANGE 列名 列名 列类型 CHECK(condition);
ALTER TABLE 表名 MODIFY 列名 列类型 CHECK(condition);
ALTER TABLE 表名 ADD CONSTRAINT 列名 CHECK(condition);
- 删除检查约束
ALTER TABLE 表名 DROP CONSTRAINT 约束名;
外键约束
ALTER TABLE 从表表名 ADD [CONSTRAINT] 约束名称 FOREIGN KEY (从表字段) REFERENCES 主表表名(主表字段);
ALTER TABLE goods ADD [CONSTRAINT] fk_category_no FOREIGN KEY (category_no) REFERENCES category(no);
-- 删除
ALTER TABLE 表名称 DROP FOREIGN KEY 索引名 ;# 设置外键时的名称
constraint 如果后面没有设置约束名会自动生成一个;用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。 表中列的值来自于另外一张表的主键或唯一键的列称为外键 FK ,将被引用值的表称 为主表或父表,将引用值的表称为从表或子表。主表必须有主键;
删除主表数据时,会先检查从表中有没有对此数据的关联,如果有就不能直接 删除
可以删除外键,或 在 设 置 外 键 的 时 候 后 面 添 加 on delete cascade / on update cascade 在删除/更新主表时,级联删除/更新外键列的数据 在设置外键的时候后面添加 on delete set null / on update set null 在删除/更新主表时,外键列的值会变成null
聚合函数
select sum(列) from table_name [其他子句];
select max(列) from table_name [其他子句];
select min(列) from table_name [其他子句];
select avg(列) from table_name [其他子句];
select count(列) from table_name [其他子句];
group by
select 列1, 列2, (聚合函数) from table_name group by 列1, 列2;
having
having 是对 group by 分组后的结果集进行筛选。
select 列1, 列2, (聚合函数) from table_name group by 列1, 列2 having 分组后条件;