MySQL进阶
1.外键约束
概念: 让表和表之间产生关系,从而保证数据的准确性!
外键约束格式: CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主表主键列名)
ps: 可以不设置外键名: FOREIGN KEY (本表外键列名) REFERENCES 主表名(主表主键列名)
创建表后添加外键约束: ALTER TABLE 从表名 ADD FOREIGN KEY (外键) REFERENCES 主表(主键);
删除外键约束: ALTER TABLE 表名 DROP FOREIGN KEY 外键名;
-- 添加外键约束,同时添加级联更新 标准语法 ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名) ON UPDATE CASCADE; -- 添加外键约束,同时添加级联删除 标准语法 ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名) ON DELETE CASCADE; -- 添加外键约束,同时添加级联更新和级联删除 标准语法 ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (本表外键列名) REFERENCES 主表名(主键列名) ON UPDATE CASCADE ON DELETE CASCADE;
子查询结果 | 使用场景 | 语句 |
结果是单行单列的 | 可以作为条件,使用运算符进行判断 | SELECT 列名 FROM 表名 WHERE 列名=(SELECT 聚合函数(列名) FROM 表名 [WHERE 条件]); |
结果是多行单列的 | 可以作为条件,使用运算符in或not in进行判断 | SELECT 列名 FROM 表名 WHERE 列名 [NOT] IN (SELECT 列名 FROM 表名 [WHERE 条件]); |
结果是多行多列的 | 可以作为一张虚拟表参与查询! | SELECT 列名 FROM 表名 [别名],(SELECT 列名 FROM 表名 [WHERE 条件]) [别名] [WHERE 条件]; |
-
-
这个虚拟的表并不在数据库中实际存在
-
作用是将一些比较复杂的查询语句的结果,封装到一个虚拟表中。后期再有相同复杂查询时,直接查询这张虚拟表即可
-