07-连接查询
当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回
语法:
select * from 表1 inner或left或right join 表2 on 表1.列 = 表2.列
一.mysql支持三种类型的连接查询,分别为:
inner join (内连接查询):查询的结果为两个表匹配到的数据

例1:使用内连接查询班级表与学生表
select * from students inner join classes on students.cls_id = classes.id;
例2:查询学生姓名及班级名称
此处使用了as为表起别名,目的是编写简单
select s.name,c.name from students as s inner join classes as c on s.cls_id = c.id;
left join (左连接查询):查询的结果为两个表匹配到的数据,左表特有的数据,对于右表中不存在的数据使用null填充

例3:使用左连接查询班级表与学生表
select * from students as s left join classes as c on s.cls_id = c.id;
right join (右连接查询):查询的结果为两个表匹配到的数据,右表特有的数据,对于左表中不存在的数据使用null填充

例4:使用右连接查询班级表与学生表
select * from students as s right join classes as c on s.cls_id = c.id;
二.连接查询还可以结合where 条件
语法:
select * from 表1 inner或left或right join 表2 on 表1.列 = 表2.列 where条件
例5:使用内连查询查询班级和学生表,并过滤出学生年龄大于18的
select s.* from students as s inner join classes as c on s.cls_id = c.id where s.age>18;
Last updated
Was this helpful?