• 二十一、MySQL(多表)内连接、外连接、自连接实现


    1、多表查询

    (1)基础概念:

     (2)多表查询的分类:

    2、内连接

    (1)基础概念: 

    (2)隐式内连接:

    基础语法:

    select1.name,表2.name from1,表2 where1.外键=2.被链接的字段;

    实际操作:

    1. # (1)查询每一个员工的姓名,以及关联的部门名称--隐式查询
    2. select emp.name,course.name from emp,course where emp.number=course.id;

    (3)显式内连接:

    基础语法:

    select1.name,表2.name from1 inner join2 on1.外键 =2.被链接的字段;

    实际操作:

    1. # (2)查询每一条员工的姓名,以及关联的部门名称--显式查询
    2. # inner join ... on ...
    3. select emp.name,course.name from emp inner join course on emp.number =course.id;

    (4)区别:

            相对而言,隐式连接好理解好书写,语法简单,担心的点较少。但是显式连接可以减少字段的扫描,有更快的执行速度。这种速度优势在3张或更多表连接时比较明显。

    3、外连接

    (1)基础概念:

     

     (2)左外连接:

    1. -- 外连接演示:
    2. -- 1、查询emp表的所有数据,和对应的部门信息(左外连接):
    3. -- 表结构:emp、course
    4. -- 左外连接,会显示左表中的每一条数据
    5. select emp.*,course.name from emp left outer join course on emp.number=course.id;

    (3)右外连接:

    1. -- 2、查询course表的所有数据,和对应的员工信息(右外连接):
    2. -- 表结构:emp、course
    3. -- 右外连接,会显式左表中的每一条数据
    4. select course.*,emp.* from emp right outer join course on emp.number=course.id;

     4、自连接

    (1)基础概念:

    自连接顾名思义,就是自己链接自己,基础语法如下:

    select 字段列表 from 表A 别名A join 表A 别名B on 条件……;

    (2)原表格:

     (3)实际操作:

    1. -- 自链接演示
    2. # 一张表自己连接自己
    3. # select 字段列表 from 表A 别名A join 表A 别名B on 条件……;
    4. # 查询员工及其所属领导的名字
    5. select e1.name as '员工',e2.name as '领导' from emp e1 join emp e2 on e1.manager=e2.id;

  • 相关阅读:
    rabbitMq急速安装教程
    pytest 的使用===谨记
    随便谈谈职场人对开会的看法和建议以及针对无聊会议的摆烂建议
    RecyclerView刷新后定位问题
    Mybatis知识【Mybatis快速入门】第二章
    态势丨黑客侵扰加剧,靶场为网络安全架设“防御盾”
    论文总结-交通预测(未完成)
    组件以及组件间的通讯
    SequoiaDB湖仓一体分布式数据库2022.6月刊
    NoSQL 数据库之redis键值设计、批处理优化、服务端优化、集群配置优化
  • 原文地址:https://blog.csdn.net/2301_79149013/article/details/132886669