【个人笔记】《知了堂》mysql表连接

为什么使用表连接

  • 什么是表连接?
    • 如果数据来自多个表,那么可以采用链接查询的方式来实现。因此表连接就是多个表连接合在一起实现查询效果
  • 表连接的原理
    • 表连接采用的是笛卡尔乘积,称之为横向连接。
  • 笛卡尔乘积
    • 表连接的基本原理就是采用笛卡尔乘积。笛卡尔乘积是指将两张表的所有数据相连,最后连接的结果数为两张表数量的乘积。
  • 从上面图示可以看出表联接是将两张表的数据相乘而得到的结果,第一张表的每条记录都会和第二张表的所有记录相连。
    在数据库中将多表相连需要使用JOIN关键字。
    标准结构

    

  • 笛卡尔乘积出来的结果数量太多,其中有不少数据是没用的。因为我们在建表时为了表示他们的关系,都会建立外键来确定关系,所以在表联接时就要根据其外键来过滤没用的数据。使用ON关键字来确定其是否匹配。
    完整结构

    
--MySQL中表连接分为:内连接,外链接,都是横向连接 还有oracle的纵向连接

--使用表连接  -- 内连接 第一种语法 inner join     inner可以省略

  1. select * from 主表名 as 主别名 join 连接表名 as 连接的别名 on 主表名.列名=连接表名.列名 where 条件

-- 外链接:

定义:外联接是指不管有没有匹配,被定义了外联接的表数据都要出现在结果中。比如左外联接,那么在JOIN左边的表就被定义为外联接,那么此表中所有数据都会出现在查询结果中。右外联接则是JOIN右边的表为外联接表。全外联接就是JOIN左右两张表都是外联接表。

  • 左外联接
    用法:LEFT OUTER JOIN 或 LEFT JOIN
  • 右外联接
    用法:RIGHT OUTER JOIN 或 RIGHT JOIN
  • 全外联接
    用法:FULL OUTER JOIN 或 FULL JOIN
  • 注意:MYSQL不支持全外联接

 --自连接

定义:自联接其实就是内联接或外联接的一种特例,同样可以使用INNER JOIN 或 OUTER JOIN。
自联接所联接的表是来自于同一张表。

  • 举例:一张存放员工信息的表,每个员工有个直属领导。当然直属领导也是员工,所以员工信息和他们的领导信息都再一张表中。下面是表结构:
原文地址:https://www.cnblogs.com/1542986913Yu/p/7561906.html