MySQL基础——多表查询练习题

2023-11-01

文章目录:

1.查询员工的姓名、年龄、部门信息(隐式内连接)

 2.查询年龄小于30岁的员工的姓名、年龄、职位、部门信息(显示内连接)

3.查询拥有员工的部门id、部门名称

4.查询所有年龄大于40岁的员工,及其归属的部门名称;如果没有分配部门,也需要展示出来

5.查询所有员工的工资等级

6.查询‘研发部’所有员工的信息及工资等级(两种写法)

7.查询‘研发部’员工的平均薪资

8.查询工资比‘灭绝’高的员工信息

9.查询比平均薪资高的员工信息

 10.查询低于本部门平均工资的员工信息

 11.查询所有的部门信息,并统计部门的员工人数

所要涉及到的表结构:

CREATE TABLE emp(
id INT PRIMARY KEY,
NAME VARCHAR(10),
age INT,
job VARCHAR(10),
salary INT,
entrydate DATE,
managerid_id INT,
dept_id INT
);
INSERT INTO emp(id,NAME,age,job,salary,entrydate,managerid_id,dept_id)
VALUES(1,'金庸',66,'总裁',20000,'2000-01-01',NULL,5),
(2,'张无忌',20,'项目经理',12000,'2005-01-11',1,1),
(3,'杨晓',33,'开发',8400,'2000-01-01',2,1),
(4,'韦一笑',48,'开发',11000,'2002-01-01',2,1),
(5,'常遇春',43,'开发',10500,'2004-01-01',3,1),
(6,'小昭',19,'程序员鼓励师',6600,'2004-01-01',2,1),
(7,'灭绝',60,'财务总监',8500,'2002-01-01',1,3),
(8,'周芷若',19,'会计',48000,'2006-01-01',7,3),
(9,'丁敏君',23,'出纳',5350,'2009-01-01',7,3),
(10,'赵敏',20,'市场部总监',12500,'2004-01-01',1,2),
(11,'鹿杖客',56,'职员',3750,'2006-01-01',10,2),
(12,'鹤笔翁',19,'职员',3750,'2007-01-01',10,2),
(13,'房东白',19,'职员',5000,'2009-01-01',10,2),
(14,'张三丰',88,'销售总监',14000,'2004-01-01',1,4),
(15,'玉莲舟',38,'销售',4600,'2004-01-01',14,4),
(16,'宋巧缘',40 ,'销售',4600,'2004-01-01',14,4),
(17,'陈友谅',42,NULL,20000,'2001-01-01',1,NULL);
SELECT*FROM emp;
CREATE TABLE salgrade(
grade INT,
losal INT,
hisal INT
);
INSERT INTO salgrade(grade,losal,hisal)
VALUES(1,0,3000),
(2,3001,5000),
(3,5001,8000),
(4,8001,10000),
(5,10001,15000),
(6,15001,20000),
(7,20001,25000),
(8,25001,30000);
SELECT*FROM salgrade;
CREATE TABLE dept(
id INT,
NAME VARCHAR(10)
);
INSERT INTO dept(id,NAME) VALUES(1,'研发部'),(2,'市场部'),(3,'财务部'),(4,'销售部'),(5,'总经办'),(6,'人事部');
SELECT*FROM dept;

题目如下:

1.查询员工的姓名、年龄、部门信息(隐式内连接)

-- 1.查询员工的姓名、年龄、部门信息(隐式内连接)
-- 表:emp,dept
-- 连接条件:emp.dept_id=dept.id
SELECT e.`NAME`,e.`age`,d.name FROM emp e,dept d WHERE e.`dept_id`=d.`id`;

 2.查询年龄小于30岁的员工的姓名、年龄、职位、部门信息(显示内连接)

-- 2.查询年龄小于30岁的员工的姓名、年龄、职位、部门信息(显示内连接)
-- 表:emp,dept
-- 连接条件:emp.dept_id=dept.id
SELECT e.`NAME`,e.`age`,e.`job`,d.`name` FROM emp e INNER JOIN dept d ON e.`dept_id`=d.`id` WHERE e.`age`<30;

3.查询拥有员工的部门id、部门名称

-- 3.查询拥有员工的部门id、部门名称
-- 表:emp,dept
-- 连接条件:emp.dept_id=dept.id
SELECT DISTINCT d.`id`,d.`name` FROM emp e,dept d WHERE e.`dept_id`=d.`id`;

4.查询所有年龄大于40岁的员工,及其归属的部门名称;如果没有分配部门,也需要展示出来

-- 4.查询所有年龄大于40岁的员工,及其归属的部门名称;如果没有分配部门,也需要展示出来
-- 表:emp,dept
-- 连接条件:emp.dept_id=dept.id
-- 外连接
SELECT e.*,d.`name` FROM emp e LEFT JOIN dept d ON e.`dept_id`=d.`id` WHERE e.`age`>40;

5.查询所有员工的工资等级

-- 5.查询所有员工的工资等级
-- 表:emp,salgrade
-- 连接条件:e.`salary`>=s.`losal` AND e.`salary`<=s.`hisal`
SELECT e.*,s.`grade`'工资等级'FROM emp e,salgrade s WHERE e.`salary`>=s.`losal` AND e.`salary`<=s.`hisal`;

6.查询‘研发部’所有员工的信息及工资等级(两种写法)

-- 6.查询‘研发部’所有员工的信息及工资等级(两种写法)
-- 表:emp,dept,salgrade
-- 连接条件:emp.dept_id=dept.id  和  e.`salary`>=s.`losal` AND e.`salary`<=s.`hisal`
SELECT id FROM dept WHERE NAME='研发部';
SELECT*FROM emp WHERE dept_id=(SELECT id FROM dept WHERE NAME='研发部');
SELECT e.*,s.`grade` FROM (SELECT*FROM emp WHERE dept_id=(SELECT id FROM dept WHERE NAME='研发部')) e,salgrade s WHERE e.`salary`>=s.`losal` AND e.`salary`<=s.`hisal`;

SELECT e.*,s.`grade` 
FROM emp e,dept d,salgrade s 
WHERE (e.`dept_id`=d.`id`) AND (e.`salary`>=s.`losal` AND e.`salary`<=s.`hisal`) AND d.`name`='研发部'; 

7.查询‘研发部’员工的平均薪资

-- 7.查询‘研发部’员工的平均薪资
-- 表:emp,dept
-- 连接条件:emp.dept_id=dept.id
SELECT id FROM dept WHERE NAME='研发部';
SELECT AVG(salary) FROM emp WHERE dept_id=(SELECT id FROM dept WHERE NAME='研发部');

8.查询工资比‘灭绝’高的员工信息

-- 8.查询工资比‘灭绝’高的员工信息
SELECT salary FROM emp WHERE NAME='灭绝';
SELECT*FROM emp WHERE salary>(SELECT salary FROM emp WHERE NAME='灭绝');

9.查询比平均薪资高的员工信息

-- 9.查询比平均薪资高的员工信息
SELECT AVG(salary) FROM emp;
SELECT*FROM emp WHERE salary>(SELECT AVG(salary) FROM emp);

 10.查询低于本部门平均工资的员工信息

SELECT AVG(salary)FROM emp WHERE dept_id=1;
SELECT*FROM emp e2 WHERE e2.`salary`<(SELECT AVG(e1.`salary`)FROM emp e1 WHERE e1.`dept_id`=e2.`dept_id`);

 11.查询所有的部门信息,并统计部门的员工人数

-- 11.查询所有的部门信息,并统计部门的员工人数
SELECT e.`dept_id`,COUNT(*)FROM emp e,dept d WHERE e.`dept_id`=d.`id` GROUP BY e.`dept_id`;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL基础——多表查询练习题 的相关文章

  • SQL准备语句如何通过多个可能的菜单选择进行选择?

    所以我有 4 个菜单选择 产品 位置 课程类型和类别 所有这些都可以为空 使用 JSF 编程 但这应该与这个问题无关 因为它是一个 SQL 问题 菜单选择将向托管 bean 发送用户选择的变量 并使用准备好的语句使用用户选择的菜单中的信息
  • SQL Server 2008 中超前滞后函数的替代

    我想将当前行与下一行中的值进行比较 SQL 有LEAD and LAG函数来获取下一个和上一个值 但我无法使用它们 因为我使用的是 SQL Server 2008 那么我该如何得到这个呢 我有带输出的表 Id ActId StatusId
  • 与派生表的内连接

    我对连接派生表的基本语法有疑问 这是使用的基本语法吗 select from table1 a inner join select from table2 as T1 on 1 ID T1 ID 那行得通吗 您是在问加入两个子查询吗 尝试
  • 将 .sql 文件导入 SQLite

    我正在尝试将大型 sql 文件导入 SQLite db 文件 但出现以下错误 sqlite gt read smsCorpus en 2012 04 30 sql Error near line 23 near COMMENT syntax
  • 选择具有按两列分组的最大值的行

    我见过很多关于此类问题的解决方案 尤其是这个SQL 仅选择列上具有最大值的行 https stackoverflow com questions 7745609 sql select only rows with max value on
  • Yii 添加条件

    我尝试根据我的条件从表中获取行 我的代码 conditions array id gt array 148028 118508 criteria new CDbCriteria foreach conditions as key gt va
  • 将具有重复值的数据插入 Postgresql

    我需要在 postgresql 中插入数据集 INSERT INTO table subject topics exams name of subject section topic subtopic VALUES Algebra Math
  • 在 INSERT INTO....RETURNING 上添加 LEFT JOIN

    我的查询插入一个值并返回插入的新行 INSERT INTO event comments date posted e id created by parent id body num likes thread id VALUES 15757
  • 未知的 MySQL 服务器主机 (PHP)

    当尝试连接到我的数据库服务器时 我遇到了以下问题未知主机 Warning mysqli mysqli mysqli mysqli HY000 2005 Unknown MySQL server host xxxxxxxxxxxxx port
  • 使用 MySQL 生成唯一且随机的代码数字

    初始目标 我想在表中生成随机且唯一的代码 6 位数字 我使用像这样的 SQL 查询来做到这一点 SELECT SUBSTRING CRC32 RAND 1 6 as myCode FROM codes HAVING myCode NOT I
  • 在 SQL Server 中执行嵌套 case 语句逻辑的最佳方法

    我正在编写一个 SQL 查询 其中返回的一些列需要根据很多条件进行计算 我目前正在使用嵌套的 case 语句 但它变得混乱 有更好的 更有组织性和 或可读性 方法吗 我使用的是 Microsoft SQL Server 2005 一个简化的
  • 计算Oracle中逗号分隔字符串中的元素数量

    假设我有一张桌子Col2是 varchar Col1 Col2 1 001 002 2 003 004 005 我需要计算 Col2 中的元素数量 并返回它 如果我这样做的话 select do something here with co
  • 使用SQL显示组内最小计数和最大计数

    Goal 我正在寻找一种方法来计算等于组的最小值或最大值的项目数 我的物品每隔几天就会收到一次 并且每两周输入一次 我需要查看每个 EntryDate 的最小和最大接收日期 以及最小和最大的项目计数 在 MS Access 中使用 SQL
  • HQL 中的日期比较(不带时间戳)

    我必须比较 hibernate hql 查询中的两个日期 我在 java bean 中使用 java util Date 并在 mysql 数据库中使用时间戳作为数据类型 select t from Task t where t modif
  • Oracle中“NUMBER”和“NUMBER(*,0)”相同吗?

    在甲骨文中文档 http docs oracle com cd B28359 01 server 111 b28318 datatype htm i22289据说 数字 精度 小数位数 如果未指定精度 则该列将存储给定的值 如果 未指定比例
  • 在插入 SQLite 之前检查表 B 中的日期是否在表 A 中的日期之间

    我有一个名为 项目 的表 其中包含开始日期和结束日期 我还有一个名为 Plan 的表 它有自己的开始日期和结束日期列 但我通过某种方式验证计划开始 结束日期是否在匹配的项目开始 结束日期之间 我不知道在创建表或向计划表中插入行时添加检查是否
  • 如何在MySql中将bool转换为int

    我是 MySql 的新手 所以我不知道很多东西 比如数据类型的转换 如何在 MySql 中将 bool 转换为 int 还有如何在 MySql 中将十进制转换为 Int 将布尔值类型转换为整数 SELECT CAST 1 1 AS SIGN
  • GoLang - 坚持使用 ISO-8859-1 字符集

    我正在开发一个项目 我们需要将信息保存在具有 ISO 8859 1 表的旧数据库中 因此 在向数据库写入内容之前 我需要将其从 UTF 8 转换为 ISO 8859 1 每次从数据库检索它时 我都需要将其转换回 UTF 8 我试图使用图书馆
  • 检索使用 Uniqueidentifier 插入的最后一行,它不是 IDENTITY

    我对一个查询感到困惑 我需要找出表中添加的最后一行 其中有一列数据类型为 Uniqueidentifier 列是 aspnet Applications ApplicationId 注意 该列是Uniqueidentifier 它不是IDE
  • 尝试访问从资产复制到数据\数据\的数据库中的DatabaseHelper时出现空指针异常

    我有一个数据库助手类 代码如下 这个助手的类任务是将数据库从应用程序附带的资产文件夹复制到我的应用程序的 data data 中 以便我可以使用它 一旦我将数据库放入 data data 我能够 我想添加它并执行 CRUD 操作 并且该数据

随机推荐

  • Vue基础

    前期回顾 字符串 vue可能会用到的内容 indexOf lastIndexOf 查询字符串下标 找不到返回 1 split 分割为数组 slice start end 切割字符串 subString start end 截取字符串 按下标
  • 360移动安全岗位实习生笔试和面试之旅

    之前抱着试一试的心态投了360的安全岗位 个人觉得移动安全在未来会有很大的需求量 并且人才比较少 安全圈子本来就很小 安全技术本来价值就很高 所以很多大公司以及真正的黑客很少分享一些安全方面的技术 这些感受是我作为一个脚本小子半年来的感触
  • 为什么http请求会缓存?显示from disk cache?

    请求一个接口 发现status code 200 但是居然是否 from disk cache 接口也会缓存吗 请问是什么原因 问题描述 请求接口 发现拿的还是旧数据 排查了一天 后面和前端发现请求接口只花了1ms 然后发现接口状态为 20
  • Dynamics CRM 2016 常用基础操作

    来源 https blog csdn net jxian2009 article details 22179447 http www cnblogs com allenhua archive 2012 12 25 2832473 html
  • Unity 通过代码为一个物体添加多个材质球materials

    Unity 通过代码为一个物体添加多个材质球materials Unity的MeshRenderer提供了Materials数组 支持同时挂多种材质 这样做的目的是 为含有Mesh对象的多个SubMesh使用不同的材质 渲染不同的效果 需要
  • 【acadres.dll文件丢失怎么办】acadres.dll文件丢失的解决办法

    acadres dll文件丢失怎么办 acadres dll是一个windows系统中必备的dll文件 该类型文件的全称为Dynamic Link Library 意思就是动态链接库 不过各位小伙伴不必在意 我们只需要知道它是一个电脑中非常
  • python三维曲面图投影_matplotlib:在2dp上投影三维曲面

    有与 Axes3 相当的吗DSubplot plot 表面 在2D里 我试图在matplotlib中绘制网格在XY平面上的投影 因此不是在 3d 模式下 在import numpy as np import matplotlib pyplo
  • 计算机考研专业课考c语言的大学,【择校必看】十三所计算机专业课只考数据结构的985院校!...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 敲黑板 本文涉及到的学校计算机专业考研只考数据结构 其中部分院校同时也会考算法 C语言等相关内容 但是 相对其他几门 无疑在专业课的复习上大大降低了难度 如果各位同学目前的专业课复习并不理想 也
  • 微信小程序-解决scroll-view抖动

    微信小程序scroll view抖动 原因 产品需要点击换一换 列表置顶并刷新 所以需要动态绑定scroll view里面的scrollTop属性 scrollTop属性用法需要保存 scroll时的值 如果在 scroll时直接复制给sc
  • 01内存对齐之结构体偏移量

    01内存对齐之结构体偏移量 前提概念 结构体偏移量 所谓偏移量 就是我们每个结构体成员的首地址而已 1 求结构体成员偏移量的两中办法 1 简单求结构体成员偏移量 注意 求偏移量时 必须将地址转成int整数才能求偏移量 不能直接地址相减 否则
  • Easyexcel导出带下拉框选项excel模板(解决下拉框超50个的问题)

    1 为了避免excel下拉框选项过多会导致内容不显示 或者生成的时候报错 String literals in formulas can t be bigger than 255 characters ASCII easyexcel 将下拉
  • MobaXterm下载提示输入Master密码,如何使用ResetMasterPassword工具恢复MobaXterm和设置MobaXterm主密码

    MobaXterm忘记主密码 如何恢复和设置主密码 点此下载ResetMasterPassword MobaXterm 20 0汉化版下载 MobaXterm是一款非常好用的远程管理软件 支持SSH FTP 串口 VNC X server等
  • 基础算法题——异或和之和(位运算、组合数)

    异或和之和 题目链接 解题思路 解题方案 暴力枚举 时间复杂度 O n3 超时 位操作 组合数 解铃还须系铃人 对于这种与 或 异或的位操作 一般也是通过位操作来解答 总结规律 题目要求在 n 个正整数中枚举 3 个数进行位操作 若要确定
  • Spring Boot v2.4.4源码解析(十)依赖注入原理下 —— 依赖解析

    从 Spring Boot v2 4 4源码解析 八 依赖注入原理上 由一道面试题引起的思考 Autowired和 Resource的区别 可以看出 解析待注入字段或参数主要由 org springframework beans facto
  • windows与linux字符集转换

    linux下不能显示windows下的汉字 Windows和LINUX中缺省使用的字符集不同 Windows下工具可以识别LINUX中使用的UTF8字符集 而LINUX下一般工具不会自动转换Windows下的GBK字符集 如果确实需要显示
  • Mysql数据备份及数据恢复

    数据备份概述 根据数据备份的方式 分为逻辑备份和物理备份 物理备份 物理备份就是备份数据文件了 比较形象点就是cp下数据文件 但真正备份的时候自然不是的cp这么简单 逻辑备份 将数据导出至文本文件中 mysqldump是采用SQL级别的备份
  • IDEA配置Scala,使用IDEA创建第一个Scala项目

    1 首先安装IDEA IDEA的官网 https www jetbrains com idea download section mac 选择你对应的系统 版本选择社区版即可 如果有需要的可以选择Ultimate版 2 安装后 打开IDEA
  • java常用类及其方法使用StringBuffer

    基本介绍 1 StringBuffer类是对String类的增强 其代表了可变字符序列 可以对字符串的内容进行增删 2 很多方法和String是相同的 但是StringBuffer是可变长度的 3 StringBuffer是一个容器 4 类
  • stata做计量入门常用代码一览!

    现在越来越多人有写论文的需求啦 经管领域的论文中 实证研究已成为必备操作 有了下面的代码 直接上手跑数据 一 分组回归 实证中 常常要分行业分年度 分省份分年度等分组回归 保存出回归出来的某些参数 statsby就是一个有用的命令 命令语句
  • MySQL基础——多表查询练习题

    文章目录 1 查询员工的姓名 年龄 部门信息 隐式内连接 2 查询年龄小于30岁的员工的姓名 年龄 职位 部门信息 显示内连接 3 查询拥有员工的部门id 部门名称 4 查询所有年龄大于40岁的员工 及其归属的部门名称 如果没有分配部门 也