• 数据库之左连接,右连接和内连接


    要想写出正确的结果,首先我们要知道LEFT JOIN 、RIGHT JOIN、INNER JOIN的语法:

    LEFT JOIN:

    左连接,会读取左表全部数据,即便右表没有对应数据。左连接从左表产生一套完整的记录,和右表匹配的记录 .如果右边没有匹配记录,右侧结果集字段将为null。结果集图示如下:

     图片5.png

    RIGHT JOIN:

    右连接,以右表为基础,与LEFT JOIN相反。结果集图示如下:

    图片6.png

    INNER JOIN :内连接,或等值连接,可以获取两个表中字段匹配关系的记录。结果集图示如下:

    图片7.png

    掌握了以上的语法,不难得到上面题目的查询结果。为了更方便大家理解,我们改造题目如下:

    非诚勿扰节目来了6位女嘉宾和6位男嘉宾,他们的信息和配对情况分别保存在grils表和boys表中。其中id分别是两个表的主键,boyNum、girlNum分别男女嘉宾的编号,matchNum是男女嘉宾的配对编号,如果男生和女生的配对编号相对,则表示配对成功,表数据如下所示: 1.png

    根据以上结构新建girls表和boys表并初始化两个表的数据: 初始化girls表:

    1:创建girls表
    create table girls(id int(10) primary key auto_increment,
    girlNum varchar(20),
    matchNum int(10));

    2.初始化girls数据
    insert into girls(girlNum,matchNum)
    values("girl001",1),("girl002",2),("girl003",3)("girl004",4),("girl005",5),("girl006",6);

    3.创建boys表
    create table boys (id int(10) primary key auto_increment,
    boyNum varchar(20),
    matchNum int(10));

    4.初始化boys数据
    insert into boys (boyNum,matchnum)
    values ("boy001",1),("boy002",2),("boy003",3),("boy004",7)),("boy005",8),("boy006",9);

    5

    LEFT JOIN

     
    SELECT * FROM girls LEFT  JOIN boys ON girls.matchNum = boys.matchNum;

    图片8.png

    6.

    RIGHT JOIN

    select * from girls right join boys on girls.matchNum = boys.matchNum;

    图片9.png

    INNER JOIN 

    select * from girls inner join boys on girls.matchNum=boys.matchNum;

    图片10.png

    可以看到LEFT JOIN 和RIGHT JOIN对于没有匹配的记录行,字段会用NULL来表示。

  • 相关阅读:
    双向链表循环
    双向链表的删除操作
    双向链表的插入操作
    双向链表的结构
    双向链表的删除操作
    双向链表循环
    OD使用教程17 调试篇17
    OD使用教程17 调试篇17
    双向链表的结构
    独生子女证办理
  • 原文地址:https://www.cnblogs.com/wz123/p/9722759.html
Copyright © 2020-2023  润新知