发布时间:2026/8/5 11:07:40
Mysql 复合查询 多表查询实际开发中往往数据来自不同的表所以需要多表查询。本节我们用一个简单的公司管理系统有三张 表EMP,DEPT,SALGRADE来演示如何进行多表查询。部门表 dept员工表 emp工资等级表 salgrade案例显示雇员名、雇员工资以及所在部门的名字因为上面的数据来自EMP和DEPT表因此要联合查询select emp.ename,emp.sal,dept.dname from emp,dept where emp.deptnodept.deptno;其实我们只要emp表中的deptno dept表中的deptno字段的记录,所以后面要有个where限定结果显示部门号为10的部门名员工名和工资select ename, sal,dname from EMP, DEPT where EMP.deptnoDEPT.deptno and DEPT.deptno 10;显示各个员工的姓名工资及工资级别select ename,sal,grade from emp,salgrade where emp.sal between losal and hisal;自连接自连接是指在同一张表连接查询案例使用的子查询使用多表查询自查询-- 使用到表的别名--from emp leader, emp worker给自己的表起别名因为要先做笛卡尔积所以别名可以先识 别子查询子查询是指嵌入在其他sql语句中的select语句也叫嵌套查询单行子查询返回一行记录的子查询显示SMITH同一部门的员工select * from EMP WHERE deptno (select deptno from EMP where enamesmith);多行子查询返回多行记录的子查询in关键字查询和10号部门的工作岗位相同的雇员的名字岗位工资部门号但是不包含10自 己的select ename,job,sal,deptno from emp where job in (select distinct job from emp where deptno10) and deptno10;all关键字显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号select ename, sal, deptno from EMP where sal all(select sal from EMP where deptno30);any关键字显示工资比部门30的任意员工的工资高的员工的姓名、工资和部门号包含自己部门 的员工select ename, sal, deptno from EMP where sal any(select sal from EMP where deptno30);多列子查询单行子查询是指子查询只返回单列单行数据多行子查询是指返回单列多行数据都是针对单列而言的而多列子查询则是指查询返回多个列数据的子查询语句案例查询和SMITH的部门和岗位完全相同的所有雇员不含SMITH本人mysql select ename from EMP where (deptno, job)(select deptno, job from EMP where enameSMITH) and ename SMITH;在from子句中使用子查询子查询语句出现在from子句中。这里要用到数据查询的技巧把一个子查询当做一个临时表使用。 案例 显示每个高于自己部门平均工资的员工的姓名、部门、工资、平均工资//获取各个部门的平均工资将其看作临时表 select ename, deptno, sal, format(asal,2) from EMP, (select avg(sal) asal, deptno dt from EMP group by deptno) tmp where EMP.sal tmp.asal and EMP.deptnotmp.dt;查找每个部门工资最高的人的姓名、工资、部门、最高工资select emp.ename, emp.sal, emp.deptno, ms from emp, (select max(sal) ms, deptno from emp group by deptno) tmp where emp.deptnotmp.deptno and emp.saltmp.ms;显示每个部门的信息部门名编号地址和人员数量方法1使用多表select dept.dname, dept.deptno, dept.loc,count(*) 部门人数 from emp,dept where emp.deptnodept.deptno group by dept.deptno,dept.dname,dept.loc;方法2使用子查询-- 1. 对EMP表进行人员统计 select count(*), deptno from emp group by deptno; -- 2. 将上面的表看作临时表 select dept.deptno, dname, mycnt, loc from dept, (select count(*) mycnt, deptno from emp group by deptno) tmp where dept.deptnotmp.deptno;合并查询在实际应用中为了合并多个select的执行结果可以使用集合操作符 unionunion allunion该操作符用于取得两个结果集的并集。当使用该操作符时会自动去掉结果集中的重复行。案例将工资大于2500或职位是MANAGER的人找出来select ename, sal, job from emp where sal2500 union select ename, sal, job from emp where jobMANAGER;--去掉了重复记录union all该操作符用于取得两个结果集的并集。当使用该操作符时不会去掉结果集中的重复行。案例将工资大于25000或职位是MANAGER的人找出来select ename, sal, job from emp where sal2500 union all select ename, sal, job from emp where jobMANAGER;连接查询重点表的连接分为内连和外连内连接内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选我们前面学习的查询都是内连 接也是在开发过程中使用的最多的连接查询。select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件备注前面学习的都是内连接案例显示SMITH的名字和部门名称-- 用前面的写法 select ename, dname from emp, dept where emp.deptnodept.deptno and enameSMITH; -- 用标准的内连接写法 select ename, dname from emp inner join dept on emp.deptnodept.deptno and enameSMITH;外连接外连接分为左外连接和右外连接左外连接如果联合查询左侧的表完全显示我们就说是左外连接。select 字段名 from 表名1 left join 表名2 on 连接条件案例-- 建两张表 create table stu (id int, name varchar(30)); -- 学生表 insert into stu values(1,jack),(2,tom),(3,kity),(4,nono); create table exam (id int, grade int); -- 成绩表 insert into exam values(1, 56),(2,76),(11, 8);查询所有学生的成绩如果这个学生没有成绩也要将学生的个人信息显示出来-- 当左边表和右边表没有匹配时也会显示左边表的数据 select * from stu left join exam on stu.idexam.id;右外连接如果联合查询右侧的表完全显示我们就说是右外连接。select 字段 from 表名1 right join 表名2 on 连接条件案例对stu表和exam表联合查询把所有的成绩都显示出来即使这个成绩没有学生与它对应也要 显示出来select * from stu right join exam on stu.idexam.id;列出部门名称和这些部门的员工信息同时列出没有员工的部门方法一select d.dname, e.* from dept d left join emp e on d.deptnoe.deptno;方法二select d.dname, e.* from emp e right join dept d on d.deptnoe.deptno;

相关新闻

2026/8/5 11:07:40

STM32串口中断通信:从阻塞轮询到高效并发的HAL库实战指南

1. 从阻塞到响应:为什么串口通信必须用中断? 搞STM32开发的,串口通信是绕不开的基础。很多新手教程都是从HAL库的 HAL_UART_Transmit 和 HAL_UART_Receive 这两个轮询(Polling)函数开始的,代码简单直接…

2026/8/5 11:02:40

智能体入门:概念、架构与应用亮点

智能体(AI Agent)可以理解为一种具备自主思考与行动能力的人工智能系统。如果说传统AI像个只会执行单一指令的"工具",智能体就更像一位能理解目标、自己想办法完成复杂任务的"数字伙伴"或"虚拟员工"。&#x1…

2026/8/5 11:02:40

VMware虚拟机IPv6配置全攻略:从桥接到NAT模式实战指南

1. 项目背景与核心价值:为什么要在VMware中开启IPv6?如果你还在用VMware搭建测试环境、部署服务,却只停留在IPv4的世界里,那可能已经落后于时代了。我最近在为一个分布式微服务项目搭建开发环境时,就遇到了一个典型问题…

2026/8/5 12:12:43

PDF论文处理-Dify数据库构造 项目文件说明

📁 项目文件说明核心文件主脚本process_papers.py - 主执行脚本,用于处理PDF论文并生成Dify知识库数据测试文件test_processor.py - 单元测试脚本,验证各个模块功能源码目录 (src/pdf_processor/)config.py - 配置文件,包含chunk设…

2026/8/5 12:12:43

Linux关机重启命令详解与reboot挂死问题排查指南

1. 项目概述:不只是关机重启那么简单在Linux世界里,关机重启是每个系统管理员和开发者都绕不开的基础操作。表面上看,这不过是敲几个命令的事,但背后涉及的机制、权限、信号处理乃至硬件交互,却常常藏着不少“坑”。我…

2026/8/5 12:12:43

系统架构师之数据库-Redis

基本概念 Redis(Remote Dictionary Server)开源的、基于Key-Value结构的NoSql内存数据库。 工作流程 用户读取数据 -> Redis查询是否命中 -> 是》直接返回数据 否》从数据库查询数据->返回数据给用…

2026/8/5 12:07:43

Django ORM高效左连接:prefetch_related深度解析与实践

它深入探究了于其中怎样高效地去执行父子表的左连接查询, 目的是获取全部父记录以及与之关联的子记录, 这里所说的父记录包含那些不存在子记录的情况, 我们对和原始SQL查询的局限进行了对比, 着重介绍了ORM所提供的方法, 阐释了其工作原理、具备的优势以及在防止数据冗余和优化…

2026/8/5 3:13:11

如何用免费工具突破游戏窗口限制:SRWE完整使用指南

如何用免费工具突破游戏窗口限制:SRWE完整使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否遇到过这样的困扰?想为心爱的游戏截图,却发现游戏不支持自定义分辨率…

2026/8/5 0:01:34

三升四,比成绩下滑更可怕的,是孩子开始「认命」

分水岭上,最难的不是翻过去,是孩子不想翻了。八月初了。这两个字,对三升四的家长来说,比任何闹钟都让人清醒。最近的家长群里,气氛明显不一样了。一升二的在关心兴趣班,二升三的在讨论要不要提前学英语。而…

2026/8/5 0:01:34

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:01:34

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/3 22:40:58

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/3 13:26:41

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/3 16:43:13

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…