美文网首页
MySql查询-连接查询

MySql查询-连接查询

作者: GaoYuan117 | 来源:发表于2020-03-20 17:24 被阅读0次

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

    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查询-连接查询

          本文链接:https://www.haomeiwen.com/subject/dutsyhtx.html