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?