Mysql 多表查询
合并结果集
UNION:去重
UNION ALL:不去重
要求两个结果集的列数和字段类型必须相同,不然会报错
连接查询
笛卡尔积
A={a,b},B={0,1,2} ==> {(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}
SELECT * FROM students,score; // 学生表的每条数据会合并分数表的每条数据,形成一条新的数据
99 连接
去笛卡尔积,查交集。使用两张表的公共字段(主外键),原理是在笛卡尔积中进行筛选,条件就是公共字段一致,如果一致就留下,不一致就丢掉
SELECT * FROM students st,score sc WHERE st.id = sc.sid;
内连接
和 99 连接效果一致,也是去笛卡尔积,查交集
SELECT * FROM students st [INNER] JOIN score sc ON st.id = sc.sid WHERE sc.score >= 60;
左连接
交集+左表独有数据
SELECT * FROM students st LEFT JOIN score sc ON st.id = sc.sid;
右连接
交集+右表独有数据
SELECT * FROM students st RIGHT JOIN score sc ON st.id = sc.sid;