Day43(13)-基本上都是在敲SQL-db04

news/2025/11/19 20:20:29/文章来源:https://www.cnblogs.com/David0919/p/19243892

多表查询

笛卡尔积

image-20251119162608028

-- 查询
select * from emp ,dept where emp.dept_id = dept.id;
-- 查询
select * from emp ,dept where emp.dept_id = dept.id;-- ============================= 内连接 ==========================
-- A. 查询所有员工的ID, 姓名 , 及所属的部门名称 (隐式、显式内连接实现)
-- 隐式
select emp.id, emp.name,dept.name from emp ,dept where emp.dept_id = dept.id;-- 显式 inner 可以省略
select emp.id, emp.name,dept.name from emp inner join dept on emp.dept_id = dept.id ;-- B. 查询 性别为男, 且工资 高于8000 的员工的ID, 姓名, 及所属的部门名称 (隐式、显式内连接实现)
-- 隐式
select emp.id, emp.name,dept.name from emp ,dept where emp.dept_id = dept.id and emp.gender = 1 and emp.salary>8000;-- 显式
select emp.id, emp.name,dept.name from emp join dept on emp.dept_id = dept.id where emp.gender = 1 and emp.salary>8000;-- 为表起别名 as 可以省略
select e.id, e.name,dept.name from emp as e join dept on e.dept_id = dept.id where e.gender = 1 and e.salary>8000;

image-20251119170708058

-- =============================== 外连接 ============================
-- A. 查询员工表 所有 员工的姓名, 和对应的部门名称 (左外连接)out 可以省略
select e.name,d.name from emp e left outer join dept d on d.id = e.dept_id;-- B. 查询部门表 所有 部门的名称, 和对应的员工名称 (右外连接)out 可以省略
select e.name,d.name from emp e right outer join dept d on d.id = e.dept_id;-- C. 查询工资 高于8000 的 所有员工的姓名, 和对应的部门名称 (左外连接)
select e.name,d.name from emp e left join dept d on d.id = e.dept_id where salary >8000;select e.name,d.name from dept d right join emp e on d.id = e.dept_id where salary >8000;

image-20251119170941283

-- ========================= 子查询 ================================
-- 标量子查询
-- A. 查询 最早入职 的员工信息
-- a.先去获取最早入职时间
select min(entry_date) from emp;-- b.查询 最早入职 的员工信息
select * from emp where entry_date = '2000-01-01';select * from emp where entry_date = (select min(entry_date) from emp);-- B. 查询在 "阮小五" 入职之后入职的员工信息
-- a.先去获取阮小五入职时间
select entry_date from emp where name = '阮小五';-- b.查询 阮小五入职之后 的员工信息
select * from emp where entry_date > '2015-01-01';select * from emp where entry_date > (select entry_date from emp where name = '阮小五');-- 列子查询
-- A. 查询 "教研部" 和 "咨询部" 的所有员工信息
-- a.先需要去查询"教研部" 和 "咨询部" 的部门ID
select id from dept where name = '教研部' or name = '咨询部';-- b.查询指定部门ID的员工信息
select * from emp where dept_id in (2,3);select * from emp where dept_id in (select id from dept where name = '教研部' or name = '咨询部');-- 行子查询
-- A. 查询与 "李忠" 的薪资 及 职位都相同的员工信息 ;
-- a.查询与 "李忠" 的薪资 及 职位
select salary,job from emp where name = '李忠';-- b.查询指定薪资和职位的员工信息
select * from emp where salary = 5000 and job = 5;select * from emp where salary = (select salary from emp where name = '李忠') and job = (select job from emp where name = '李忠');-- 优化:
select * from emp where (salary,job) = (5000,5);select * from emp where (salary,job) = (select salary,job from emp where name = '李忠');-- 表子查询
-- A. 获取每个部门中薪资最高的员工信息
-- a.获取每个部门中的最高薪资
select dept_id,max(salary) from emp group by dept_id;-- b.查询每个部门中薪资最高的员工信息
select * from emp e,(select dept_id,max(salary) max_sal from emp group by dept_id) awhere e.dept_id = a.dept_id and e.salary = a.max_sal;
-- 需求:
-- 1. 查询 "教研部" 性别为 男,且在 "2011-05-01" 之后入职的员工信息 。
-- 表:dept ,emp
select * from emp where dept_id = (select id from dept where dept.name = '教研部') and gender = 1 and entry_date > '2011-05-01';select * from emp e,dept d where e.dept_id=d.id and d.name = '教研部' and e.gender = 1 and entry_date >  '2011-05-01';-- 2. 查询工资 低于公司平均工资的 且 性别为男 的员工信息 。
-- 表:emp
-- 2.1 查询 公司的平均工资
select avg(salary) from emp;-- 2.2 查询工资 低于公司平均工资的 且 性别为男 的员工信息 。
select * from emp where salary < (select avg(salary) from emp) and gender = 1;-- 3. 查询部门人数超过 10 人的部门名称 。
-- 表:emp dept
select d.name,count(*) from emp e,dept d where e.dept_id=d.id group by d.name having count(*)>10;select name from dept where id = (select dept_id from (select count(*) c,dept_id from emp group by dept_id) a where a.c >10);-- 4. 查询在 "2010-05-01" 后入职,且薪资高于 10000 的 "教研部" 员工信息,并根据薪资倒序排序。
-- 表:emp dept
select e.* from emp e,dept d where e.dept_id=d.id and entry_date>'2010.05.01' and salary > 10000 and d.name= '教研部' order by salary desc ;select * from emp where entry_date>'2010-05-01' and salary>10000 and  dept_id=(select id from dept where dept.name = '教研部') order by  salary desc ;-- 5. 查询工资 低于本部门平均工资的员工信息 。
-- 表:emp dept
-- 5.1 查询每个部门的平均薪资
select dept_id,avg(salary) avg_sal from emp group by dept_id;-- 5.2 查询工资 低于本部门平均工资的员工信息 。
select * from emp e,(select dept_id,avg(salary) avg_sal from emp group by dept_id) a where e.dept_id = a.dept_id and e.salary<a.avg_sal;select * from (select emp.*,avg from emp ,(select avg(salary) avg,dept_id from emp group by dept_id) a where a.dept_id=emp.dept_id) ans where salary<avg;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/970355.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

空间变换层和自注意力机制

空间变换层和自注意力机制Spatial Transformer Layer(空间变换层)是一种在卷积神经网络中引入空间变换的机制。它允许网络自动学习输入图像的几何变换,以提高网络的鲁棒性和性能。它可以通过学习如何对输入进行旋转…

linux ftp 客户端安装

在 Linux 系统中,ftp 是一个传统的 FTP 客户端工具,但随着现代 Linux 发行版的更新,ftp 已被 ftp 工具(如 vsftpd)所替代,或者更常见的是使用 curl、wget、lftp 等现代工具来实现 FTP 功能。 一、使用 ftp 工具(…

MacX Video Converter Pro for Mac v6.8.2 安装视频转换器安装步骤(附安装包)

MacX Video Converter Pro for Mac v6.8.2 安装视频转换器安装步骤(附安装包)​ MacX Video Converter Pro是一款专为 Mac 电脑用户设计的 专业视频格式转换软件,支持 快速转换各种视频格式,比如 MP4、AVI、MOV、M…

数字分身---沃伦巴菲特

# 沃伦巴菲特 数字化身 ━━━━━━━━━━━━━━━━ **输入接口**:任意提问 **输出模式**:以巴菲特视角作答 ━━━━━━━━━━━━━━━━ ## 身份定位 你是沃伦巴菲特。 价值投资教父本杰明格雷厄姆的嫡…

SPYSE团队独家专访:构建互联网基础设施搜索引擎的技术实践

本文深入访谈SPYSE团队,探讨其CertDB SSL证书搜索引擎的技术架构、数据采集方式和产品定位。团队详细介绍了全网扫描技术、API设计理念、与Censys等竞品的对比分析,以及未来在DNS和域名分析领域的技术规划。独家专访…

数学的大厦(四):减法与整数

为了解决旧领域内“不自然”或“不可能”的问题,我们必须构想并构建一个更广阔的新领域。自然数宇宙的边界,正是被“减法”这道鸿沟给清晰地勾勒了出来。 在我们的自然数世界里,加法 a + b 和乘法 a * b 是畅通无阻…

深入解析:Kotlin 高阶函数在回调设计中的最佳实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

医药生产线HMI与PLC互联:总线协议Modbus RTU 转Modbus TCP 适配方案

一、项目背景:无菌注射剂灌装生产线的通讯困境 在工业自动化领域的医药无菌注射剂灌装生产线中,某企业采用施耐德 HMI(Modbus RTU 协议)负责灌装参数设定(如剂量 5ml0.02ml)、设备操作监控,搭配西门子 S7-1500 …

信息化、数字化、智能化、智慧化、数智化,到底啥区别 - 智慧园区

这几年啊,很多人开口闭口就是“我们要搞数智化转型”“我们系统已经智能化了”“这个流程已经数字化改造过了” ……听着都挺高大上,但你真要追问一句:“信息化、数字化、智能化、智慧化、数智化,咱们到底搞的是哪…

洛谷 B4413:[GESP202509 三级] 数组清零

​【题目来源】https://www.luogu.com.cn/problem/B4413【题目描述】小 A 有一个由 n 个非负整数构成的数组 a=[a1, a2, …, an]。他会对阵组 a 重复进行以下操作,直到数组 a 只包含 0。在一次操作中,小 A 会依次完成…

MOSHELL (7) : 构建3G RNC端到端性能可观测性体系 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

中大型超市智能运营导购系统:AI 精准推送,滞销品库存加速 19%!

想象一下:周六下午的超市人潮汹涌,新客推着购物车一脸茫然,老客直奔货架却找不到心仪商品,导购被围得喘不过气,促销海报无人问津——这不是个例,而是中大型超市每天上演的“失控剧本”。中大型超市每天面对的痛点…

雨水从黑云降临到了人间 果实脱落枝叶吸收于地面 时间流逝再也回不到从前 曾经珍藏回忆变成不可逆爱恋

test42 寻雾启示 首先最终的走法一定是找到位置序列 \(p_1,\dots,p_m\) 满足 \(p_i<p_{i+1},p_m=n\) 然后依次铺羊毛到 \(p_i\),为了不思考那么多,我们设 \(f_i\) 表示铺到 \(i\) 回到 \(1\) 的最小时间,转移显然…

高州市胃癌手术专家选择指南:茂名陈医生专业医学背景+丰富临床经验+精湛手术技术!

高州市胃癌手术专家选择指南:茂名陈医生专业医学背景+丰富临床经验+精湛手术技术!随着胃癌发病率上升,寻找一位技术精湛、经验丰富的胃癌手术专家成为茂名高州地区患者及家属的核心诉求。面对“专家信息难辨”、“技…

c#构建日报

日期​ 2005.11.19 今日工作时长​ 360 分钟​ 核心工作内容​ 执行 GitHub 项目分支变基操作(git rebase),解决代码冲突后推进变基流程;​ 处理多人协作中远程分支更新导致的本地代码同步问题;​ 恢复误操作丢失…

linux ftp 修改密码

在 Linux 系统中,FTP(File Transfer Protocol) 本身并不是一个直接支持修改用户密码的协议。通常,FTP 服务器(如 vsftpd、ProFTPD 等)会通过配置文件(如 /etc/vsftpd.conf 或 /etc/proftpd/proftpd.conf)来管理…

linux ftp shell

你提到的“Linux FTP Shell”可能是指在 Linux 系统中使用 FTP(File Transfer Protocol)进行文件传输的 Shell 脚本或命令。下面我将为你提供一些常见的 Linux FTP 命令和 Shell 脚本示例,用于在 Linux 系统中进行文…

我讨厌 DP 和 COUNT 的100个理由(下)

好耶!是长篇!51 王之钦定 感觉比较困难。

详细介绍:数组初阶(2)

详细介绍:数组初阶(2)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &q…

Gemini 3 Pro入门教程:从零开始学会使用最新gemini-3-pro-preview API接入

Gemini 3 Pro入门教程:从零开始学会使用最新gemini-3-pro-preview API接入Gemini 3 是 Google 发布的新一代大型多模态模型(LLM),代表了其在 推理(reasoning)、多模态理解、agent 能力 和 编程协作 等方面的重要…