mysql学习笔记:多表查询
程序员文章站
2022-05-29 16:42:44
...
-
内连接查询
- 隐式内连接
例:查询总分低于500的学生的id、姓名、总分。SELECT t1.id, -- 学生ID t1.name, -- 学生姓名 t2.score -- 学生总分 FROM student t1, -- 学生表 grade t2 -- 成绩表 WHERE t1.id = t2.id AND t2.score < 500;
- 显式内连接
SELECT t1.id, -- 学生ID t1.name, -- 学生姓名 t2.score -- 学生总分 FROM student t1, -- 学生表 JOIN grade t2 -- 成绩表 ON t1.id = t2.id AND t2.score < 500;
- 隐式内连接
-
外连接
例:有两个表:学生表与成绩表,有一个学生没有参加考试,所以成绩为NULL。
我们查询时又想显示出他的姓名。- 左外连接
显示前一个表的全部记录SELECT t1.id, -- 学生ID t1.name, -- 学生姓名 t2.score -- 学生总分 FROM student t1 -- 学生表 LEFT JOIN grade t2 -- 成绩表 ON t1.id = t2.id AND t2.score < 500;
- 右外连接
显示后一个表的全部记录SELECT t2.id, -- 学生ID t2.name, -- 学生姓名 t1.score -- 学生总分 FROM grade t1 -- 成绩表 RIGHT JOIN student t2 -- 学生表 ON t1.id = t2.id AND t1.score < 500;
- 左外连接
-
子查询
将一个查询语句作为一个表来使用
例:查询女性学生的id、姓名、总分SELECT t1.id, -- 学生ID t1.name, -- 学生姓名 t2.score -- 学生总分 FROM (SELECT id, name FROM student WHERE sex = '女') t1, -- 显示性别为女的学生表 grade t2 -- 成绩表 WHERE t1.id = t2.id;