首页 > 数据库 >MySQL---多表查询

MySQL---多表查询

时间:2023-06-25 13:57:36浏览次数:45  
标签:多表 查询 --- dept emp MySQL where 连接 select

多表查询可分为两大类,一是连接查询,另一种是子查询

准备两张案例表

连接查询

  1. 内连接查询 :相当于查询AB交集数据
  2. 外连接查询
    2.1 左外连接查询 :相当于查询A表所有数据和交集部门数据
    2.2 右外连接查询 : 相当于查询B表所有数据和交集部分数据

** 内连接查询**
内连接相当于查询 A B 交集数据
语法
隐式内连接:SELECT 字段列表 FROM 表1,表2… WHERE 条件;
显式内连接:SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 条件;
案例:查询 emp的 name, gender,dept表的dname
隐式内连接:SELECT emp. NAME, emp.gender,dept.dname FROM emp, dept WHERE emp.dep_id = dept.did;

显式内连接:select * from emp inner join dept on emp.dep_id = dept.did;

外连接查询
语法
左外连接:SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件;
左外连接:相当于查询A表所有数据和交集部分数据
右外连接:SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件;
右外连接:相当于查询B表所有数据和交集部分数据
案例:查询emp表所有数据和对应的部门信息(左外连接)
select * from emp left join dept on emp.dep_id = dept.did

查询dept表所有数据和对应的员工信息(右外连接)
select * from emp right join dept on emp.dep_id = dept.did;

子查询
概念:查询中嵌套查询,称嵌套查询为子查询。
案例分析:查询工资高于猪八戒的员工信息。

  1. 第一步:先查询出来 猪八戒的工资
    select salary from emp where name = '猪八戒';
  2. 第二步:查询工资高于猪八戒的员工信息
    select * from emp where salary > 3600;
  3. 第二步中的3600可以通过第一步的sql查询出来,所以将3600用第一步的sql语句进行替换
    select * from emp where salary > (select salary from emp where name = '猪八戒');
    子查询根据查询结果不同,作用不同
  • 子查询语句结果是单行单列,子查询语句作为条件值,使用 = != > < 等进行条件判断
  • 子查询语句结果是多行单列,子查询语句作为条件值,使用 in 等关键字进行条件判断
  • 子查询语句结果是多行多列,子查询语句作为虚拟表
    案例1:查询 '财务部' 和 '市场部' 所有的员工信息
    首先查询 '财务部' 或者 '市场部' 所有的员工的部门did
    select did from dept where dname = '财务部' or dname = '市场部';
    select * from emp where dep_id in (select did from dept where dname = '财务部' or dname = '市场部');
    案例2:查询入职日期是 '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;

标签:多表,查询,---,dept,emp,MySQL,where,连接,select
From: https://www.cnblogs.com/wzh-Official/p/17502743.html

相关文章

  • 用node-webkit把web应用打包成桌面应用
    1.下载node-webkit:https://github.com/nwjs/nw.js=>下载完成后是个压缩包。解压即可。=>看到nw.exe文件,双击运行一下,看是否正常=>exe文件的图标可以用ResourceHacker,nw-builder和node-winresourcer之类的工具替换。 2.项目新建package.json:{  "name":"zqz",//这里......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-4-playwright等待浅析
    1.简介在介绍selenium的时候,宏哥也介绍过等待,是因为在某些元素出现后,才可以进行操作。有时候我们自己忘记添加等待时间后,查了半天代码确定就是没有问题,奇怪的就是获取不到元素。然后搞了好久,或者经过别人的提示才恍然大悟没有添加等待时间。而playwright为了避免我们犯这么low的......
  • 实际案例分析 - 根据应用程序日志的记录,反查出哪一行 ABAP 代码产生的这条日志试读版
    本文的写作动机来自笔者知识星球一个朋友的提问:调用bapi创建主数据的时候报错,没有未物料组分配特性参数文件,这个是什么原因?实际查看,特性文件已经生成了这个朋友提供的是应用程序日志(即ApplicationLog)里的截图。关于应用程序日志的详细用法,笔者之前的文章已经做过介绍。74.学会......
  • 使用ansible-app2k8s管理和部署服务到 kubernetes
    ansible-app2k8s#1介绍使用ansible管理和部署服务到kubernetes适用于项目容器化,多套k8s环境的管理,可结合CICD工具做DevOps来自于项目实践,已部署多套k8s环境自建k8s阿里云ACK腾讯云TEK华为云CCEAWSEKS微软云AKS#2主要功能镜像构建并推送到镜像仓......
  • C/C++C/C++语言课程设计参考题目[2023-06-25]
    C/C++C/C++语言课程设计参考题目[2023-06-25]《高级程序设计技术综合课程设计》C/C++语言课程设计参考题目目录信息管理类 1工资管理系统 1职工工资信息管理系统 2职工工资管理系统 2院职工工资管理系统 3公司职工工资管理系统 3工资纳税计算系统 3校际运动会管理系统......
  • TensorFlow11.2 循环神经网络RNN-循环神经网络、RNN-layer实现
    循环神经网络SentimentAnalysis(情感分析)类似于淘宝的好评还是差评,我们比较直观的一个方法就是:这里不好的是:Downsides:1.Longsentence100+wordstoomuchparameters[w,b]。就是比如说我们有100个单词,会产生很多个w,b,参数太多了。2.Nocontextinformation(没有语......
  • 2 - Web APIs
    day02-WebAPIs1.1.排他操作1.1.1排他思想如果有同一组元素,我们想要某一个元素实现某种样式,需要用到循环的排他思想算法:所有元素全部清除样式(干掉其他人)给当前元素设置样式(留下我自己)注意顺序不能颠倒,首先干掉其他人,再设置自己  <button>按钮1</button>......
  • 云服务器使用记录-20230625
    三丰云提供稳定可靠的云服务器,搭载宝塔面板,支持多种语言环境(包括PHP等),让您轻松地管理网站和数据。无论您是个人博客、企业官网还是电商平台,都可以快速部署并安全运行。这样,您就可以专注于业务发展,享受高效稳定的云服务体验。我推荐您使用Linux版本的系统,因为它占用的资源较少。......
  • 5 - Web APIs
    1.1.元素偏移量offset系列1.1.1offset概述offset翻译过来就是偏移量,我们使用offset系列相关属性可以动态的得到该元素的位置(偏移)、大小等。获得元素距离带有定位父元素的位置获得元素自身的大小(宽度高度)注意:返回的数值都不带单位1.1.2offset与style区......
  • 6 - Web APIs
    1.1.动画函数封装1.1.1缓动效果原理缓动动画就是让元素运动速度有所变化,最常见的是让速度慢慢停下来思路:让盒子每次移动的距离慢慢变小,速度就会慢慢落下来。核心算法:(目标值-现在的位置)  /  10   做为每次移动的距离步长停止的条件是:让当前盒子位置......