zoukankan      html  css  js  c++  java
  • 【个人笔记】《知了堂》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。
    自联接所联接的表是来自于同一张表。

    • 举例:一张存放员工信息的表,每个员工有个直属领导。当然直属领导也是员工,所以员工信息和他们的领导信息都再一张表中。下面是表结构:
  • 相关阅读:
    【机器学习】均方误差(MSE)和均方根误差(RMSE)和平均绝对误差(MAE)
    python自动化测试框架nose
    python单元测试之unittest框架使用总结
    【flask】flask讲解
    Python查询手机号码归属地几种方法
    数据库的备份与恢复
    python中OrderedDict的使用
    python struct 结构体
    【Linux】linux-nfs挂载
    【机器学习】方差为何除以n-1
  • 原文地址:https://www.cnblogs.com/1542986913Yu/p/7561906.html
Copyright © 2011-2022 走看看