• 内连接和外连接


    内连接和外连接都是表的连接方式(将两张表连接起来

    内连接:等值连接,非等值连接,自连接

    外连接:左连接,右连接

    1.笛卡尔积

    表一和表二做笛卡尔积,就是将表一的每一行和表二的每一行进行拼接

     所有的这些连接都是先将这两张表做笛卡尔积,然后留下其中某些列,删除其他列

    2.内连接

    3.外连接(左连接,右连接)

    (1)Outer是可以省略的

    Left Join=Left Outer Join 即左连接就是左外连接

    Right Join=Right Outer Join 即右连接就是右外连接

    (2)谁是主表?(进行外连接的两张表是有主次关系的)

          主表中即使在另一张表中没有匹配的行,也要返回左表中的行

         a Right Join b,Join关键字右边的表b表是主表

         a Left Join b,Join关键字左边的表a表是主表

    举个例子:下面两张表

     Persons表和Orders表进行笛卡尔积得到:​​​​​​​​​​​​​​

     

     运行Mysql语句:

    1. SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
    2. FROM Persons
    3. LEFT JOIN Orders
    4. ON Persons.Id_P=Orders.Id_P
    5. ORDER BY Persons.LastName

     就是在上面的笛卡尔积中,只保存Persons.Id_P=Orders.Id_P的行(也就是红色四行)

     最后由于是Persons Left Join Orders,所以Persons表是主表,因此Persons表是主表,主表Person表中有些行在Orders表中匹配不到,但是也要添加到最后的结果里面,最后结果为:

     如果是右连接:(也就是主表不再是Persons表了,而是Orders表

    1. SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
    2. FROM Persons
    3. RIGHT JOIN Orders
    4. ON Persons.Id_P=Orders.Id_P
    5. ORDER BY Persons.LastName

     此时要保存的就是主表Orders中没有匹配到的行了(而不是Persons表中没有匹配到的行)

     

    leetcode上例题:

    力扣183  从不订购的客户

     显然2,4号员工是从不订购的客户

    将Customers表和Orders表进行外连接,比如:Customers Left Join Orders 得到:

    1. Select Customers.Name as Customers /* 给最后选出来的列起个别名,否则就叫Name*/
    2. From Customers Left Join Orders
    3. on Customers.Id=Orders.CustomerId

    得到的是:

    +Customers表中没有匹配到的行,也就是:

     所以还要添加一个条件:where Orders.CustomerId Is Null;

    1. Select Customers.Name as Customers /* 给最后选出来的列起个别名,否则就叫Name*/
    2. From Customers Left Join Orders
    3. on Customers.Id=Orders.CustomerId
    4. where Orders.CustomerId Is Null;/*这里where Orders.Id Is Null也是可以的*/

     

  • 相关阅读:
    【登录安全测试】
    element拖拽表单拖拽排序
    下一代工具链「GitHub 热点速览 v.22.43」
    基于springboot的青年公寓服务平台源码数据库
    【Spring】@Autowired和@Resource关键字的区别
    在idea中配置tomcat服务器,然后部署一个项日
    Unity ECS最新DOTS环境搭建教程
    Spring Boot+微信小程序_保存微信登录者的个人信息
    riscv fpga
    Java之—hutool工具类二维码生成跟背景图合并输出
  • 原文地址:https://blog.csdn.net/weixin_47414034/article/details/126303114