美文网首页
SQL基础介绍—关联查询

SQL基础介绍—关联查询

作者: 小数点数据咨询 | 来源:发表于2017-09-08 11:41 被阅读0次

    SQL基础介绍—关联查询

    前面,我们介绍的都是单表查询(就是只从一张表中获取数据),而实际应用的时候,我们都会同时查询多张表,这里,我们就介绍下,多表关联查询的使用。

    SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据

    关联查询.png

    前置知识

    主键(Primary Key):可以唯一确定一条记录的字段,比如学生表中的学生ID,生活中我们的身份证号
    外键(Foreign Key):指向另一张表的主键,比如学生表中的班级ID,班级ID是班级表中的主键,但在学生表中是外键

    主键和外键可以在建表的时候指定,他可以在数据库层面,控制你的数据的完整性、一致性。

    inner join

    inner join 可以简写为 join,结果集是两张表中 都存在的记录,是一个交集,详情参考上面的图片。
    比如:在学生表中,有一个班级ID,我们想根据班级ID,在班级表中找到班级信息

    select 
        *
    from 
        t_student a 
    -- 要关联查询的表
    join 
        t_class b 
    -- 使用什么字段去关联这两张表
    on 
        a.c_id = b.c_id
    ;
    
    
    join

    left join

    左关联,以左边的表为主表,不管外键在右表中是否存在,左表的数据都会存在。
    比如学生表中,有这样一条记录,他的班级ID是904,但是班级表中并没有904的班级信息,
    所以,使用join的话是查不到这条记录的

    -- 2. left join 
    -- 学生表为主表,包含所有学生信息
    select 
        *
    from 
        t_student a 
    left join 
        t_class b 
    on 
        a.c_id = b.c_id
    ;
    
    left join

    right join

    右关联,和做关联类似,但已右表为主表

    
    -- 3. right join 
    -- 班级表为主表,不管改班级是否有学生信息
    select 
        *
    from 
        t_student a 
    right join 
        t_class b 
    on 
        a.c_id = b.c_id
    ;
    
    right join

    full outer join

    全关联,mysql没有full join 语法,我们可以通过使用union来实现

    select 
        *
    from 
        t_student a 
    left join 
        t_class b 
    on 
        a.c_id = b.c_id
    UNION
    select 
        *
    from 
        t_student a 
    right join 
        t_class b 
    on 
        a.c_id = b.c_id
    ;
    
    full join

    小结

    关联查询的话,我们主要是选择好主表,然后找好表与表之间的关联关系,注意多对多、一对多的这种关系,验证号结果数据就行了。

    相关文章

      网友评论

          本文标题:SQL基础介绍—关联查询

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