MySQL多表查询练习
1.找出销售部门中年纪最大的员工的姓名
mysql> select name,age from dept a ,emp_new b where a.dept1=b.dept2 and dept_name='销售'order by age desc limit 1;
+------+------+
| name | age |
+------+------+
| 荣七 | 64 |
+------+------+
1 row in set (0.00 sec)
2.求财务部门最低工资的员工姓名
mysql> select name from emp_new e join dept d on e.dept2=d.dept1 where d.dept_name='财务' order by incoming limit 1;
+------+
| name |
+------+
| 王五 |
+------+
1 row in set (0.00 sec)
3. 列出每个部门收入总和高于 9000 的部门名称
mysql> select dept.dept_name from emp_new join dept on emp_new.dept2=dept.dept1 group by dept.dept_name having sum(emp_new.incoming) > 9000;
+-----------+
| dept_name |
+-----------+
| 财务 |
| 销售 |
+-----------+
2 rows in set (0.00 sec)
4. 求工资在 7500 到 8500 元之间,年龄最大的人的姓名及部门
mysql> select name,dept_name from emp_new join dept on emp_new.dept2=dept.dept1 where incoming between 7500 and 8500 order by age limit 1;
+------+-----------+
| name | dept_name |
+------+-----------+
| 赵六 | 销售 |
+------+-----------+
1 row in set (0.00 sec)
5.找出销售部门收入最低的员工入职时间
mysql> select worktime_start '入职时间' from emp_new join dept on emp_new.dept2=dept.dept1 where dept.dept_name ='销售' order by incoming limit 1;
+------------+
| 入职时间 |
+------------+
| 1970-10-11 |
+------------+
1 row in set (0.00 sec)
6.财务部门收入超过2000元的员工姓名
mysql> select name from emp_new join dept on emp_new.dept2=dept.dept1 where dept.dept_name ='财务' and incoming > 2000;
+------+
| name |
+------+
| 张三 |
| 李四 |
+------+
7.列出每个部门的平均收入及部门名称
mysql> select dept_name,avg(emp_new.incoming) '平均收入' from emp_new join dept on emp_new.dept2=dept.dept1 group by dept.dept_name;
+-----------+-----------+
| dept_name | 平均收入 |
+-----------+-----------+
| 财务 | 3166.6667 |
| 销售 | 8000.0000 |
| 运维 | 7300.0000 |
+-----------+-----------+
3 rows in set (0.00 sec)mysql> select dept_name,round(avg(emp_new.incoming),2) '平均收入' from emp_new join dept on emp_new.dept2=dept.dept1 group by dept.dept_name;
+-----------+----------+
| dept_name | 平均收入 |
+-----------+----------+
| 财务 | 3166.67 |
| 销售 | 8000.00 |
| 运维 | 7300.00 |
+-----------+----------+
3 rows in set (0.00 sec)
8.运维部入职员工的员工号
mysql> select sid '员工号' from emp_new join dept on emp_new.dept2=dept.dept1 where dept.dept_name ='运维';
+--------+
| 员工号 |
+--------+
| 1879 |
+--------+
1 row in set (0.00 sec)
9.财务部门的收入总和;
mysql> select sum(incoming) '总收入' from emp_new join dept on emp_new.dept2=dept.dept1 where dept.dept_name ='财务';
+--------+
| 总收入 |
+--------+
| 9500 |
+--------+
1 row in set (0.00 sec)
10.先按部门号大小排序,再依据入职时间由早到晚排序员工信息表
mysql> select * from emp_new join dept on emp_new.dept2=dept.dept1 order by emp_new.dept2,emp_new.worktime_start;
+------+------+------+----------------+----------+-------+-------+-----------+
| sid | name | age | worktime_start | incoming | dept2 | dept1 | dept_name |
+------+------+------+----------------+----------+-------+-------+-----------+
| 1789 | 张三 | 35 | 1980-01-01 | 4000 | 101 | 101 | 财务 |
| 1674 | 李四 | 32 | 1983-04-01 | 3500 | 101 | 101 | 财务 |
| 1776 | 王五 | 24 | 1990-07-01 | 2000 | 101 | 101 | 财务 |
| 1564 | 荣七 | 64 | 1963-10-11 | 8500 | 102 | 102 | 销售 |
| 1568 | 赵六 | 57 | 1970-10-11 | 7500 | 102 | 102 | 销售 |
| 1879 | 牛八 | 55 | 1971-10-20 | 7300 | 103 | 103 | 运维 |
+------+------+------+----------------+----------+-------+-------+-----------+
6 rows in set (0.00 sec)
11.找出哪个部门还没有员工入职;
mysql> select dept.dept_name from dept left join emp_new on emp_new.dept2=dept.dept1 where emp_new.dept2 is null;
+-----------+
| dept_name |
+-----------+
| 行政 |
+-----------+
1 row in set (0.00 sec)
12.列出部门员工收入大于7000的部门编号,部门名称;
mysql> select dept.dept1,dept.dept_name from emp_new join dept on emp_new.dept2=dept.dept1 where emp_new.incoming > 7000 group by dept.dept1,dept.dept_name;
+-------+-----------+
| dept1 | dept_name |
+-------+-----------+
| 102 | 销售 |
| 103 | 运维 |
+-------+-----------+
2 rows in set (0.00 sec)
13.列出每一个部门的员工总收入及部门名称;
mysql> select dept.dept_name '部门名称',sum(emp_new.incoming) '员工总收入' from emp_new join dept on emp_new.dept2=dept.dept1 group by dept.dept_name;
+----------+------------+
| 部门名称 | 员工总收入 |
+----------+------------+
| 财务 | 9500 |
| 销售 | 16000 |
| 运维 | 7300 |
+----------+------------+
3 rows in set (0.00 sec)
14.列出每一个部门中年纪最大的员工姓名,部门名称;
mysql> select emp_new.name,dept.dept_name from emp_new join dept on emp_new.dept2=dept.dept1 where(emp_new.dept2,emp_new.age) in (select dept2,max(age) from emp_new group by dept2);
+------+-----------+
| name | dept_name |
+------+-----------+
| 张三 | 财务 |
| 荣七 | 销售 |
| 牛八 | 运维 |
+------+-----------+
3 rows in set (0.00 sec)mysql> select name as "姓名", dept_name as "部门名称" from dept,(select max(age) age,dept2 from emp_new group by dept2) em, emp_new where dept.dept1=em.dept2 and em.age=emp_new.age;
+------+----------+
| 姓名 | 部门名称 |
+------+----------+
| 张三 | 财务 |
| 荣七 | 销售 |
| 牛八 | 运维 |
+------+----------+
3 rows in set (0.00 sec)
15.求李四的收入及部门名称
mysql> select e.incoming,d.dept_name from emp_new e join dept d on e.dept2=d.dept1 where e.name='李四';
+----------+-----------+
| incoming | dept_name |
+----------+-----------+
| 3500 | 财务 |
+----------+-----------+
1 row in set (0.00 sec)
16.列出部门员工数大于1个的部门名称
mysql> select d.dept_name from emp_new e join dept d on e.dept2=d.dept1 group by d.dept_name having count(e.sid) > 1;
+-----------+
| dept_name |
+-----------+
| 财务 |
| 销售 |
+-----------+
2 rows in set (0.00 sec)
小结
连接方式
依业务需求选连接类型。内连接取匹配行;外连接(左、右、全外)保留一侧或两侧表所有行;交叉连接得笛卡尔积,非特定需求慎用。
理解不同连接对结果集影响,如左连接以左表为主,即便右表无匹配也有左表记录。
连接条件
精准设置连接条件,基于关联字段建立条件,保证结果准确。
防止遗漏连接条件致笛卡尔积,使结果集庞大且无意义。
性能优化
仅选必要字段,不用`SELECT *`,降低数据传输与处理开销。
为连接字段建索引,加速表连接时数据匹配。
大数据量时,避免复杂嵌套子查询,可优化为连接查询提升性能。
字段与别名
多表有同名字段,用表名.字段名明确所属,防混淆。
合理用表与字段别名,让查询易读,别名简洁有意义。
数据完整性
多表更新删除操作,用事务确保原子性,保证数据一致性。
操作遵循外键约束,避免破坏数据关联关系。
子查询与联合查询
子查询注意执行顺序与结果集大小,避免结果集过大拖慢查询。
联合查询合并结果集,各部分列数与数据类型须一致。
相关文章:
MySQL多表查询练习
1.找出销售部门中年纪最大的员工的姓名 mysql> select name,age from dept a ,emp_new b where a.dept1b.dept2 and dept_name销售order by age desc limit 1; ------------ | name | age | ------------ | 荣七 | 64 | ------------ 1 row in set (0.00 sec) 2.求财务…...
低代码运维与管理服务
文章目录 前言一、服务内容二、服务范围三、服务流程四、服务交付件五、责任矩阵六、验收标准 前言 随着云计算技术的发展,数字化转型是企业的必然选择,企业需要实现广泛的连接并走向开放,传统集成工具无法满足当前企业面临的数字化转型诉求…...
【机器学习:三十二、强化学习:理论与应用】
1. 强化学习概述 **强化学习(Reinforcement Learning, RL)**是一种机器学习方法,旨在通过试验与反馈的交互,使智能体(Agent)在动态环境中学习决策策略,以最大化累积奖励(Cumulative…...
解决wordpress媒体文件无法被搜索的问题
最近,我在wordpress上遇到了一个令人困扰的问题:我再也无法在 WordPress 的媒体库中搜索媒体文件了。之前,搜索媒体非常方便,但现在无论是图片还是其他文件,似乎都无法通过名称搜索到。对于我这样需要频繁使用图片的博主来说,这简直是个大麻烦。 问题源头 一开始,我怀…...
【2024年华为OD机试】(B卷,100分)- 增强的strstr (Java JS PythonC/C++)
一、问题描述 题目描述 C 语言有一个库函数 char *strstr(const char *haystack, const char *needle),用于在字符串 haystack 中查找第一次出现字符串 needle 的位置,如果未找到则返回 null。 现要求实现一个 strstr 的增强函数,可以使用…...
【前端】CSS学习笔记
目录 CSS的简介CSS的概念语法 CSS的引入方式内联样式(行内样式)内部样式外部样式(推荐) 选择器全局选择器元素选择器类选择器ID选择器合并选择器后代选择器子选择器相邻兄弟选择器通用兄弟选择器伪类选择器:link:visited:hover:ac…...
项目架构调整,新增sunrays-combinations模块
文章目录 1.介绍2.环境搭建1.sunrays-framework下新建sunrays-combinations模块2.删除src3.pom.xml4.查看是否交给sunrays-framework管理5.删除sunrays-common中module引用的common-core-starter6.sunrays-combinations统一管理子模块7.common-all-starter的父模块修改为sunray…...
linux网络编程11——线程池
1. 线程池 1.1 池化技术原理 池化技术 当一个资源或对象的创建或者销毁的开销较大时,可以使用池化技术来保持一定数量的创建好的对象以供随时取用,于是就有了池式结构。常见的池式结构包括线程池、内存池和连接池。 池化技术应用的前提条件主要包括三…...
MySQL - 主从同步
1.主从同步原理: MySQL 主从同步是一种数据库复制技术,它通过将主服务器上的数据更改复制到一个或多个从服务器,实现数据的自动同步。 主从同步的核心原理是将主服务器上的二进制日志复制到从服务器,并在从服务器上执…...
基于微信小程序的安心陪诊管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
深入剖析iOS网络优化策略,提升App性能
一、引言 在当今移动互联网时代,iOS 应用的网络性能直接关系到用户体验。无论是加载速度缓慢、频繁的网络错误,还是高额的流量消耗,都可能导致用户流失。因此,iOS 网络优化成为开发者提升应用质量、增强用户满意度的关键环节。本文…...
游戏开发中常用的设计模式
目录 前言一、工厂模式二、单例模式三、观察者模式观察者模式的优势 四、状态模式状态模式的优势 五、策略模式策略模式的优势 六、组合模式七、命令模式八、装饰器模式 前言 本文介绍了游戏开发中常用的设计模式,如工厂模式用于创建对象,单例模式确保全…...
【PyCharm】远程连接Linux服务器
【PyCharm】相关链接 【PyCharm】连接Jupyter Notebook【PyCharm】快捷键使用【PyCharm】远程连接Linux服务器【PyCharm】设置为中文界面 【PyCharm】远程连接Linux服务器 PyCharm 提供了远程开发的功能,使得开发者可以在本地编辑代码或使用服务器资源。 下面将详…...
InVideo AI技术浅析(五):生成对抗网络
一、特效生成 1. 工作原理 特效生成是计算机视觉中的高级应用,旨在通过算法生成高质量的视觉特效,如风格迁移、图像到图像的翻译等。InVideo AI 使用生成对抗网络(GAN)来实现这一功能。GAN 通过生成器和判别器两个网络的对抗训练,生成逼真的视觉特效。 2. 关键技术模型…...
Spring自定义BeanPostProcessor实现bean的代理
上文中:https://blog.csdn.net/qq_26437925/article/details/145241149 大致了解了spring aop的代理的实现,其实就是有个BeanPostProcessor代理了bean对象。 本文直接编写最简单的代码直观感受下 bean A: Service public class A {public A() {System.…...
【HF设计模式】06-命令模式
声明:仅为个人学习总结,还请批判性查看,如有不同观点,欢迎交流。 摘要 《Head First设计模式》第6章笔记:结合示例应用和代码,介绍命令模式,包括遇到的问题、采用的解决方案、遵循的 OO 原则、…...
Linux使用SSH连接GitHub指南
基础配置流程 步骤1:生成SSH密钥 打开终端:首先,打开你的Linux终端。 生成SSH密钥对:输入以下命令来生成一个新的SSH密钥对: ssh-keygen -t rsa -b 4096 -C "your_email@example.com"-t rsa:使用RSA加密算法生成密钥。-b 4096:密钥长度为4096位,增加安全性。…...
v2富文本框封装 @wangeditor/editor-for-vue
1 组件封装 <template><div class"editor-container"><div class"editor-wrapper"><Toolbarstyle"border-bottom: 1px solid #ccc":editor"editor":defaultConfig"toolbarConfig":mode"mode&quo…...
【分类】【损失函数】处理类别不平衡:CEFL 和 CEFL2 损失函数的实现与应用
引言 在深度学习中的分类问题中,类别不平衡问题是常见的挑战之一。尤其在面部表情分类任务中,不同表情类别的样本数量可能差异较大,比如“开心”表情的样本远远多于“生气”表情。面对这种情况,普通的交叉熵损失函数容易导致模型…...
AUTOSAR从入门到精通-自动驾驶测试技术
目录 前言 算法原理 测试场景定义与作用 测试场景要素 测试场景分类 场景信息提取与挖掘方法 自动驾驶感知测试分类 自动驾驶图像系统测试 自动驾驶激光雷达系统测试 自动驾驶融合感知系统测试 自动驾驶仿真测试 1. 功能安全 2. 预期功能安全 3. 软件测试 4.敏捷…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
