基本约束
#外键约束
添加外键
CREATE TABLE 表名 (
字段名 数据类型,
.......
[CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表名(主表id)
);
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名) REFERENCES 主表名(主表id);
删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
删除更新行为
ALTER TABLE 表名
ADD CONSTRAINT 外键名称
FOREIGN KEY (外键字段名)
REFERENCES 主表名(主表id)
ON UPDATE CASCADE ON DELETE CASCADE;
多表关系分为 1对1、1对多(多对1)、多对多
#多表查询
~~内连接查询
隐式内链接
SELECT 字段列表 FROM 表1,表2 WHERE 条件 ....;
显示内连接
SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 连接条件...;
注意:用法最好是用显示内连接,便于维护,不易于造成笛卡尔积;
~~外连接查询
左外链接
SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件;
注意:相当于查询表1(左表)的所有数据包含表1和表2交集部分的数据;
右外连接
SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件;
注意:相当于查询表2(左表)的所有数据包含表1和表2交集部分的数据;
~~自链接查询语法
SELECT 字段列表 FROM 表A 别名A JOIN 表名A 别名B ON 条件.....;
注意:自链接查询,可以是内链接查询, 也可以是外连接查询。
~~联合查询语法
SELECT 字段列表 FROM 表A ...
UNION[ALL]
SELECT字段列表 FROM 表b ....;'
注意:UNION ALL 是吧所有的可能都查询出来, UNION是去除重复的。
~~子查询
SELECT * FROM t1 WHERE column = (SELECT column FROM t2);
注意:子查询外部的语句可以是INSERT / UPDATE / DELETE /SELECT的任何一个。