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 ;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容