MySql查询-连接查询

当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回

mysql支持三种类型的连接查询,分别为:

  • 内连接查询:查询的结果为两个表匹配到的数据
  • 右连接查询:查询的结果为两个表匹配到的数据,右表特有的数据,对于左表中不存在的数据使用null填充
  • 左连接查询:查询的结果为两个表匹配到的数据,左表特有的数据,对于右表中不存在的数据使用null填充

语法

select * from 表1 inner或left或right join 表2 on 表1.列 = 表2.列

示例:
-- 连接查询
    -- inner join ... on
    -- 交集
    -- select ... from 表A inner join 表B
    select * from student inner join classes;

    -- 查询 学生信息及对应班级信息
    select * from student inner join classes on student.cls_id = classes.id;

    -- 查询 学生信息及对应班级名字 不显示班级id
    select student.*,classes.name as class_name from student inner join classes on student.cls_id = classes.id;

    -- 查询 学生姓名 对应 班级名字
    select student.name,classes.name as class_name from student inner join classes on student.cls_id = classes.id;

    -- 给数据表起名字
    select s.*,c.name as class_name from student as s inner join classes as c on s.cls_id = c.id;

    -- 查询信息 班级名字显示在第一列
    select c.name,s.* from student as s inner join classes as c on s.cls_id = c.id;

    -- 按照班级进行排序
    select classes.name,student.* from student inner join classes on student.cls_id = classes.id order by classes.name asc;

    -- left join .. on ..
    -- 以左边的表的信息为基准取值
    -- 查询 每位学生对应的班级信息
    select * from student left join classes on student.cls_id = classes.id;

    -- 查询没有班级的学生信息
    select * from student left join classes on student.cls_id = classes.id having classes.id is null ;

你可能感兴趣的:(MySql查询-连接查询)