MySQL多表操作练习题

2023-10-27

数据准备


CREATE table dept(
deptno INT PRIMARY KEY,
dname VARCHAR(14),
loc VARCHAR(13)
);

INSERT INTO dept VALUES(10,'accounting','new york');
INSERT INTO dept VALUES(20, 'research', 'dallas');
INSERT INTO dept VALUES(30, 'sales', 'chicago');
INSERT INTO dept VALUES(40, 'operations', 'boston');

-- 创建员工表
CREATE TABLE emp(
empno	INT PRIMARY KEY,
ename VARCHAR(10),
job VARCHAR(9),
mgr INT,
hiredate date,
sal DOUBLE,
comm DOUBLE,
deptno INT
);

-- 添加 部门和员工之间的主外键关系
ALTER TABLE emp ADD CONSTRAINT FOREIGN KEY emp(deptno) REFERENCES dept (deptno);

INSERT INTO emp VALUES(7369,'smith','clerk',7902,'1980-12-17',800,null,20);
INSERT INTO emp VALUES(7499, 'allen', 'salesman', 7698, '1981-02-20', 1600, 300, 30);
INSERT INTO emp VALUES(7521, 'ward', 'salesman', 7698, '1921-02-22', 1250, 500, 30);
INSERT INTO emp VALUES(7566, 'jones', 'manager', 7839, '1981-04-02', 2975, NULL, 20);
INSERT INTO emp VALUES(7654, 'martin', 'salesman', 7698, '1981-09-28', 1250, 1400, 30);
INSERT INTO emp VALUES(7698, 'blacke', 'manager', 7839, '1981-05-01', 2850, NULL, 30);
INSERT INTO emp VALUES (7782, 'clark', 'manager', 7839, '1981-06-09', 2450, NULL, 10);
INSERT INTO emp VALUES(7788, 'scott', 'analyst', 7566, '1987-07-03', 3000, NULL, 20);
INSERT INTO emp VALUES(7839, 'king', 'president', NULL, '1981-11-17', 5000, NULL, 10);
INSERT INTO emp VALUES(7844, 'turner', 'salesman', 7698, '1981-09-08', 1500, 0, 30);
INSERT INTO emp VALUES(7876, 'adams', 'clerk', 7788, '1987-07-13', 1100, NULL, 20);
INSERT INTO emp VALUES(7900, 'james', 'clerk', 7698, '1981-12-03', 95, NULL, 30);
INSERT INTO emp VALUES(7902, 'ford', 'analyst', 7566, '1981-12-03', 3000, NULL, 20);
INSERT INTO emp VALUES(7934, 'miller', 'clerk', 7782, '1981-01-23', 1300, NULL, 10);

CREATE TABLE salgrade(
grade INT,
losal DOUBLE,
hisal DOUBLE
);

INSERT INTO salgrade VALUES(1,700,1200);
INSERT INTO salgrade VALUES(2, 1201, 1400);
INSERT INTO salgrade VALUES(3, 1401, 2000);
INSERT INTO salgrade VALUES(4, 2001, 3000);
INSERT INTO salgrade VALUES(5, 3001, 9999);


练习题

  • 返回拥有员工的部门名、部门号
  • 工资水平多于smith的员工信息
  • 返回员工和所属经理的姓名
  • 返回雇员的雇用日期遭遇其经理雇佣的员工及其经理姓名
  • 返回员工姓名及其所在的部门名称
  • 返回从事clerk工作的员工姓名和所在部门名称
  • 返回部门号及其部门的最低工资
  • 返回销售(sales)所有员工的姓名
  • 返回工资水平多于平均工资的员工
  • 返回与scott从事相同工作的员工
  • 返回与30部门员工工资水平相同的员工姓名与工资
  • 返回员工工作及其从事此工作的最低工资
  • 计算出员工的年薪,并且以年薪排序
  • 返回工资处于第四级别的员工的姓名
  • 返回工资为二等级的职员名字、部门所在地

练习题答案

-- 返回拥有员工的部门名、部门号
SELECT DISTINCT d.dname,d.deptno FROM dept d JOIN emp  e ON d.deptno = e.deptno;

-- 工资水平多于smith的员工信息
SELECT * FROM emp WHERE sal > (SELECT sal FROM emp WHERE ename='smith');

-- 返回员工和所属经理的姓名
SELECT a.ename '员工',b.ename '经理'from emp a JOIN emp b ON a.mgr = b.empno;

-- 返回雇员的雇用日期遭遇其经理雇佣的员工及其经理姓名
SELECT a.ename '员工姓名',b.ename '经理姓名' FROM emp a JOIN emp  b ON a.mgr = b.empno and a.hiredate < b.hiredate;

-- 返回员工姓名及其所在的部门名称
SELECT e.ename,d.dname FROM emp e JOIN dept d ON e.deptno= d.deptno;

-- 返回从事clerk工作的员工姓名和所在部门名称
SELECT e.ename,d.dname,e.job FROM emp e JOIN dept d ON e.deptno= d.deptno AND job = 'clerk';

-- 返回部门号及其部门的最低工资
 SELECT deptno,min(sal) FROM emp GROUP BY deptno;

-- 返回销售(sales)所有员工的姓名
SELECT b.ename FROM dept a JOIN emp b ON a.deptno=b.deptno and a.dname='sales'

-- 返回工资水平多于平均工资的员工
SELECT * FROM emp WHERE sal >(SELECT AVG(sal) FROM emp);

-- 返回与scott从事相同工作的员工
SELECT * FROM emp WHERE job = (SELECT job FROM emp WHERE ename = 'scott') and ename <>'scott';

-- 返回与30部门员工工资水平相同的员工姓名与工资
SELECT * FROM emp WHERE sal > ALL(SELECT sal FROM emp WHERE deptno = 30);

-- 返回员工工作及其从事此工作的最低工资
SELECT job , min(sal) FROM emp GROUP BY job;

-- 计算出员工的年薪,并且以年薪排序
SELECT ename,sal*12+IFNULL(comm,0) FROM emp ORDER BY(sal*12+IFNULL(comm,0))DESC;

-- 返回工资处于第四级别的员工的姓名
SELECT * FROM emp WHERE sal 
BETWEEN (SELECT losal FROM salgrade WHERE grade = 4) 
and (SELECT hisal FROM salgrade WHERE grade = 4);

-- 返回工资为二等级的职员名字、部门所在地
SELECT * FROM dept a 
JOIN emp b ON a.deptno = b.deptno 
JOIN salgrade c ON grade = 2 and b.sal >= c.losal and b.sal <= c.hisal;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL多表操作练习题 的相关文章

随机推荐

  • 如何实现区块链技术安全?

    随着人们对区块链技术的研究与应用 区块链系统除了其所属信息系统会面临病毒 木马等恶意程序威胁及大规模DDoS攻击外 还将由于其特性而面临独有的安全挑战 区块链可能是安全的 但所有与之交互的软件都是如此 在许多情况下 没有 那么区块链究竟如何
  • 选择排序分析动图演示

    选择排序 思路总结 1 首先在未排序序列中找到最小 大 元素 存放到排序序列的起始位置 2 再从剩余未排序元素中继续寻找最小 大 元素 然后放到已排序序列的末尾 3 重复第二步 直到所有元素均排序完毕 动图演示 代码示例 public st
  • SpringMvc项目配置根据环境自动读取不同的配置文件

    将原有的配置文件拷贝一份 分别放在不同的文件夹内 2 application context xml中读取配置文件的地方 引入变量
  • 小程序实现弹出输入框

    1 微信自带组件 样式 wxml
  • (Chrome42)Lodop页面总提示“未安装”或“请升级”的可能原因和解决办法

    Chrome42之后版本 支持NP插件默认处于关闭状态 要手工打开 方法如下 在谷歌浏览器地址栏输入 chrome flags enable npapi 然后找到 启用NPAPI 地方看到处于启用状态 另外64位Chome不支持js方式访问
  • C语言典型例题八——阶乘

    用递归方法求n 解题思路 求n 可以用递推方法 即从1开始 乘2 再乘3 一直乘到n 这种方法容易理解 也容易实现 递推法的特点是从一个已知的事实 如1 1 出发 按一定规律推出下一个事实 如2 1 2 再从这个新的已知的事实出发 再向下推
  • Acwing 895. 最长上升子序列

    f i 表示所有以第i个数结尾的上升子序列中的最大个数 f i max f j 1 j 0 1 2 i 1 include
  • Openwrt开发笔记(1)—— 开发环境

    OpenWrt简介 OpenWrt 是一个嵌入式设备的 Linux 发行版 以 GPL 许可协议发行 其主要特点有如下几个 代码里不含第三方开源包 只包含开源包地址链接 在编译的时候下载 编译时自动下载源代码 打补丁来满足指定平台要求 并编
  • Oracle生成不重复字符串 sys_guid()

    在oracle8i以后提供了一个生成不重复的数据的一个函数sys guid 一共32位 生成的依据主要是时间和机器码 具有世界唯一性 类似于java中的UUID 都是世界唯一的 其优点就是生成的字符串是唯一的 但其和UUID有同样的弊端 生
  • 论文笔记:FILLING THE G AP S: MULTIVARIATE TIME SERIES IMPUTATION BY GRAPH NEURAL NETWORKS

    0 abstract introduction 之前的补全方法并不能很好地捕获 利用 不同sensor之间的非线性时间 空间依赖关系 高效的时间序列补全方法 不仅应该考虑过去 或者未来 的数值 还应该同时考虑空间上邻近的点的测量值 这里的空
  • 抖音超火的网页表白代码大全(浪漫的html表白源代码)

    精彩专栏推荐 作者主页 进入主页 获取更多源码 web前端期末大作业 HTML5网页期末作业 1000套 程序员有趣的告白方式 HTML七夕情人节表白网页制作 125套 七夕来袭 是时候展现专属于程序员的浪漫了 你打算怎么给心爱的人表达爱意
  • 姿态分析开源工具箱MMPose使用示例:人体姿势估计

    MMPose的介绍及安装参考 https blog csdn net fengbingchun article details 126676309 这里给出人体姿势估计的测试代码 论文 Deep high resolution repres
  • UI自动化测试-selenium元素定位

    在使用Selenium和WebDriver进行UI自动化测试时 我们首先需要对元素定位 那么如何来定位元素呢 HTML 在进行元素定位之前 我们要对html代码有所了解 div class s form div class s form w
  • 【CUDA学习】__syncthreads的理解

    syncthreads 是cuda的内建函数 用于块内线程通信 syncthreads is you garden variety thread barrier Any thread reaching the barrier waits u
  • BUUCTF学习笔记-Secret File

    BUUCTF学习笔记 Secret File 时间 2020 09 28 考点 文件包含 打开页面没发现特别的内容 右键查看源代码才发现下面隐藏了一个a标签只是字体颜色改成了和背景色一样 标签跳转到另外一个页面Archive room ph
  • C语言实现图的邻接矩阵存储结构及深度优先遍历和广度优先遍历

    DFS的核心思想在于对访问的邻接节点进行递归调用 BFS的核心思想在于建立了一个邻接节点的队列 在Dev C 中调试运行通过 用下图进行了测试 include
  • Python里面的[::-1]和[::2]是什么意思

    Python里面的 1 和 2 是什么意思 来源 https docs python org 2 3 whatsnew section slices html L range 10 L 2 0 2 4 6 8 L 1 9 8 7 6 5 4
  • 使用Vue+xlsx+xlsx-style实现导出自定义样式的Excel文件

    本文就是上一篇 使用Python openpyxl实现导出自定义样式的Excel文件 文章中提到的 之前项目的导出Excel文件操作都是在前端完成的 这段话中基于前端实现的导出Excel文件方法 文档地址 https docs sheetj
  • python中circle函数的用法,python画圆运用了什么函数

    python画圆运用了matplotlb库的figure 和Circle 函数 其中 figure 函数用于确定画布大小 而Circle 函数用于配置圆的相关信息 进而画圆 本教程操作环境 windows7系统 Python3版 Dell
  • MySQL多表操作练习题

    数据准备 CREATE table dept deptno INT PRIMARY KEY dname VARCHAR 14 loc VARCHAR 13 INSERT INTO dept VALUES 10 accounting new