【MySQL】多表查询

这篇具有很好参考价值的文章主要介绍了【MySQL】多表查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【MySQL】多表查询

🎉多表查询

🎈3.1 内连接查询

  • 语法
-- 隐式内连接
SELECT 字段列表 FROM1,2WHERE 条件;

-- 显示内连接
SELECT 字段列表 FROM1 [INNER] JOIN2 ON 条件;

内连接相当于查询 A B 交集数据

【MySQL】多表查询

  • 案例

    • 隐式内连接

      SELECT
      	*
      FROM
      	emp,
      	dept
      WHERE
      	emp.dep_id = dept.did;
      

      执行上述语句结果如下:

      【MySQL】多表查询

    • 查询 emp的 name, gender,dept表的dname

      SELECT
      	emp. NAME,
      	emp.gender,
      	dept.dname
      FROM
      	emp,
      	dept
      WHERE
      	emp.dep_id = dept.did;
      

      执行语句结果如下:

      【MySQL】多表查询

      上面语句中使用表名指定字段所属有点麻烦,sql也支持给表指别名,上述语句可以改进为

      SELECT
      	t1. NAME,
      	t1.gender,
      	t2.dname
      FROM
      	emp t1,
      	dept t2
      WHERE
      	t1.dep_id = t2.did;
      
    • 显式内连接

      select * from emp inner join dept on emp.dep_id = dept.did;
      -- 上面语句中的inner可以省略,可以书写为如下语句
      select * from emp  join dept on emp.dep_id = dept.did;
      

      执行结果如下:

      【MySQL】多表查询

🎈3.2 外连接查询

  • 语法

    -- 左外连接
    SELECT 字段列表 FROM1 LEFT [OUTER] JOIN2 ON 条件;
    
    -- 右外连接
    SELECT 字段列表 FROM1 RIGHT [OUTER] JOIN2 ON 条件;
    

    左外连接:相当于查询A表所有数据和交集部分数据

    右外连接:相当于查询B表所有数据和交集部分数据

    【MySQL】多表查询

  • 案例

    • 查询emp表所有数据和对应的部门信息(左外连接)

      select * from emp left join dept on emp.dep_id = dept.did;
      

      执行语句结果如下:

      【MySQL】多表查询

      结果显示查询到了左表(emp)中所有的数据及两张表能关联的数据。

    • 查询dept表所有数据和对应的员工信息(右外连接)

      select * from emp right join dept on emp.dep_id = dept.did;
      

      执行语句结果如下:

      【MySQL】多表查询

      结果显示查询到了右表(dept)中所有的数据及两张表能关联的数据。

      要查询出部门表中所有的数据,也可以通过左外连接实现,只需要将两个表的位置进行互换:

      select * from dept left join emp on emp.dep_id = dept.did;
      

🎈3.3 子查询

  • 概念

    查询中嵌套查询,称嵌套查询为子查询。

    什么是查询中嵌套查询呢?我们通过一个例子来看:

    需求:查询工资高于猪八戒的员工信息。

    来实现这个需求,我们就可以通过二步实现,第一步:先查询出来 猪八戒的工资

    select salary from emp where name = '猪八戒'
    

    第二步:查询工资高于猪八戒的员工信息

    select * from emp where salary > 3600;
    

    第二步中的3600可以通过第一步的sql查询出来,所以将3600用第一步的sql语句进行替换

    select * from emp where salary > (select salary from emp where name = '猪八戒');
    

    这就是查询语句中嵌套查询语句。

  • 子查询根据查询结果不同,作用不同

    • 子查询语句结果是单行单列,子查询语句作为条件值,使用 = != > < 等进行条件判断
    • 子查询语句结果是多行单列,子查询语句作为条件值,使用 in 等关键字进行条件判断
    • 子查询语句结果是多行多列,子查询语句作为虚拟表
  • 案例

    • 查询 ‘财务部’ 和 ‘市场部’ 所有的员工信息

      -- 查询 '财务部' 或者 '市场部' 所有的员工的部门did
      select did from dept where dname = '财务部' or dname = '市场部';
      
      select * from emp where dep_id in (select did from dept where dname = '财务部' or dname = '市场部');
      
    • 查询入职日期是 ‘2011-11-11’ 之后的员工信息和部门信息

      -- 查询入职日期是 '2011-11-11' 之后的员工信息
      select * from emp where join_date > '2011-11-11' ;
      -- 将上面语句的结果作为虚拟表和dept表进行内连接查询
      select * from (select * from emp where join_date > '2011-11-11' ) t1, dept where t1.dep_id = dept.did;
      

最后说一句

感谢大家的阅读,文章通过网络资源与自己的学习过程整理出来,希望能帮助到大家。

才疏学浅,难免会有纰漏,如果你发现了错误的地方,可以提出来,我会对其加以修改。

【MySQL】多表查询文章来源地址https://www.toymoban.com/news/detail-416302.html

到了这里,关于【MySQL】多表查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • MySQL ——多表连接查询

    MySQL ——多表连接查询

    内连接 : 假设A和B表进行连接,使用内连接的话,凡是A表和B表能够匹配上的记录查询出来。A和B两张表没有主付之分,两张表是平等的。 :inner join on 语句:select * from a_table a inner join b_table b on a.a_id = b.b_id; 说明:组合两个表中的记录,返回关联字段相符的记录,也就

    2024年04月16日
    浏览(12)
  • 【MySQL】多表查询

    【MySQL】多表查询

    🎈3.1 内连接查询 语法 内连接相当于查询 A B 交集数据 案例 隐式内连接 执行上述语句结果如下: 查询 emp的 name, gender,dept表的dname 执行语句结果如下: 上面语句中使用表名指定字段所属有点麻烦,sql也支持给表指别名,上述语句可以改进为 显式内连接 执行结果如下:

    2023年04月17日
    浏览(8)
  • MySQL- 多表查询(上)

    MySQL- 多表查询(上)

    ♥️ 作者:小刘在C站 ♥️ 个人主页: 小刘主页 ♥️ 每天分享云计算网络运维课堂笔记,努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 树高千尺,落叶归根人生不易,人间真情 前言 我们之前在讲解 SQL 语句的时候,讲解了 DQL 语句,也就是数

    2024年02月05日
    浏览(8)
  • MySQL-----多表查询(一)

    MySQL-----多表查询(一)

    目录 一.多表关系: 1.1 一对多(多对一): 1.2 多对多: 1.3 一对一: 二.多表查询概述: 三.连接查询: 3.1内连接: 3.2外连接: 3.3自连接查询: 3.4联合查询: 项目开发中, 在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构 ,由于业务之间

    2024年04月27日
    浏览(7)
  • MySQL-多表查询(下)

    MySQL-多表查询(下)

    ♥️ 作者:小刘在C站 ♥️ 个人主页: 小刘主页 ♥️ 每天分享云计算网络运维课堂笔记,努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 树高千尺,落叶归根人生不易,人间真情 前言 我们之前在讲解 SQL 语句的时候,讲解了 DQL 语句,也就是数

    2024年02月06日
    浏览(12)
  • MySQL 多表查询

    MySQL 多表查询

    :::success 多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。 前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。 ::: 一对多(多对一) 多对多 一对一 一对多

    2024年01月25日
    浏览(10)
  • MySQL笔记-多表查询

    MySQL笔记-多表查询

    本文标签 : 多表查询  事务四大特性  并发事务问题  事务隔离级别 文章目录 目录 文章目录 一、多表查询 1.多表关系 2.多表查询概念  3.多表查询的分类  4.内连接  5.外连接 6.自连接  7.联合查询  8.子查询   1.标量子查询 2.列子查询 3.行子查询 4.表子查询  9.多表查询案

    2024年02月04日
    浏览(7)
  • MySQL多表查询操作

    MySQL多表查询操作

    JOIN 表示连接, inner 表示内连接, outer 表示外连接,缺省情况是内连接。 ON后面接连接条件 默认的表数据连接是内连接,只会查询出满足连接条件的行 语句格式 FROM 表1 [inner] JOIN 表2 ON 连接条件 表X和Y内连接结果 一张表和自身连接。必须给表起别名 • 【例】查询与C语言在

    2024年02月04日
    浏览(9)
  • MySQL-06.多表查询

    MySQL-06.多表查询

    多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。 前提条件,这些一起查询的表之间是有关系的(一对一,一对多等),它们之间一定是有关联字段,这个关联字段可能建立了外键,也可能没有建立外键。 1.1 案例说明 涉及到的表结构 查询员工名(last_name)为

    2024年02月05日
    浏览(7)
  • mysql多表查询练习

    mysql多表查询练习

    两个表如图所示 1、查询每个部门的所属员工 根据表中展现的情况,员工表里面是没有人事部的,如果我们使用内连接就看不出具体的情况,人事部会被直接屏蔽掉 这个时候应该使用左连接,将人事部的情况体现出来 2、查询研发部门的所属员工 3、查询研发部和销售部的所

    2024年02月13日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包