MySQL综合练习题

news2024/11/28 8:50:32

一、创建表的素材

CREATE TABLE dept (
    deptno INT(2) NOT NULL COMMENT '部门编号',
    dname VARCHAR (15) COMMENT '部门名称',
    loc VARCHAR (20) COMMENT '地理位置' 
);

-- 添加主键
ALTER TABLE dept ADD PRIMARY KEY (deptno);

-- 添加数据
INSERT INTO dept (deptno,dname,loc)VALUES (10,'财务部','高新四路');
INSERT INTO dept (deptno,dname,loc)VALUES (20,'人事部','科技二路');
INSERT INTO dept (deptno,dname,loc)VALUES (30,'销售部','长安区');
INSERT INTO dept (deptno,dname,loc)VALUES (40,'运输部','雁塔区');

CREATE TABLE emp(
    empno INT(4) NOT NULL COMMENT '员工编号',
    ename VARCHAR(10) COMMENT '员工名字',
    job VARCHAR(10) COMMENT '职位',
    mgr INT(4) COMMENT '上司',
    hiredate DATE COMMENT '入职时间',
    sal INT(7) COMMENT '基本工资',
    comm INT(7) COMMENT '补贴',
    deptno INT(2) COMMENT '所属部门编号'
);

-- 添加主键
ALTER TABLE emp ADD PRIMARY KEY (empno);

-- 添加外键约束
ALTER TABLE emp ADD CONSTRAINT f_ed_key
FOREIGN KEY (deptno) 
REFERENCES dept(deptno);

INSERT INTO `emp` VALUES('7369','张倩','办事员','7902','2002-12-17','820',NULL,'20');
INSERT INTO `emp` VALUES('7499','刘博','售货员','7698','1992-02-20','1900','300','30');
INSERT INTO `emp` VALUES('7521','李兴','售货员','7698','1995-07-22','1250','500','30');
INSERT INTO `emp` VALUES('7566','李雷','人事部长','7839','1991-04-02','975',NULL,'20');
INSERT INTO `emp` VALUES('7654','刘浩','售货员','7698','1991-09-28','1250','1400','30');
INSERT INTO `emp` VALUES('7698','刘涛','销售部长','7839','1997-05-01','2850',NULL,'30');
INSERT INTO `emp` VALUES('7782','华仔','人事部长','7839','1995-06-09','2450',NULL,'10');
INSERT INTO `emp` VALUES('7788','张飞','人事专员','7566','1998-04-19','3000',NULL,'20');
INSERT INTO `emp` VALUES('7839','马晓云','董事长',NULL,'1991-11-17','5000',NULL,'10');
INSERT INTO `emp` VALUES('7844','马琪','售货员','7698','1996-09-08','1500','0','30');
INSERT INTO `emp` VALUES('7876','李涵','办事员','7788','1997-05-23','1100',NULL,'20');
INSERT INTO `emp` VALUES('7900','李小涵','销售员','7698','1993-2-13','950',NULL,'30');
INSERT INTO `emp` VALUES('7902','张三','人事组长','7566','1992-10-08','3000',NULL,'20');
INSERT INTO `emp` VALUES('7934','张三丰','人事长','7782','1997-06-23','1300',NULL,'10');

CREATE TABLE salgrade(
grade INT (10) COMMENT '工资等级',
losal INT (10) COMMENT '最低限额',
hisal INT (10) COMMENT '最高限额'
)

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

 二、题目要求 

单表查询
1.选择部门30中的所有员工

2.列出所有办事员的姓名,编号和部门编号

3.找出佣金高于薪金的员工

4.找出没有佣金的员工

5.找出佣金高于薪金的60%的员工

6.找出部门10中所有人事部长和部门20中所有办事员的详细资料

7.找出收取佣金的员工

8.找出不收取佣金或收取的佣金低于100的员工

9.找出姓张的员工的信息

10.显示员工的姓名和受雇日期,新的员工排在最前面

11.按工作的降序排序,若工作相同则按薪金排序

12.查出不姓刘的员工的信息

13.取出姓李的员工

多表查询

1.查询出每一位雇员的编号、姓名、职位、部门名称、位置

2.要求查询出每一位雇员的姓名、职位、领导的姓名

3.查询出每个雇员的编号、姓名、基本工资、职位、领导的姓名、部门名称及位置

4.列出在部门"销售部"工作的员工的姓名,假定不知道销售部的部门编号

5.列出与"李兴"从事相同工作的所有员工。

6.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金

7.列出受雇日期早于其直接上级的所有员工。

分组函数查询
1.按照部门编号分组,求出每个部的人数,平均工资

2.按照职位分组,求出每个职位的最高和最低工资

3.计算出每个各职位的平均工资

4.查询出每个部门的名称、部门的人数、平均工资

left outer join on

5.要求统计出每个部门的详细信息,并且要求这些部门的平均工资高于2000

6.要求查询出工资比华仔还要高的全部雇员信息

7.要求查询出高于公司平均工资的全部雇员信息

8.查询出每个部门的编号、名称、位置、部门人数、平均工资

9.列出至少有一个员工的所有部门 

等级查询
1.查询每个工资等级各有多少员工

2.查询部门中(所有人)的平均工资等级

三、完成步骤 

3.1 登录MySQL并切换数据库

3.2 创建表并插入数据

①创建dept表并插入数据

②创建emp表并插入数据

③创建salgrade表并插入数据

四、单表查询 

4.1 选择部门30中的所有员工

①命令

mysql> select ename from emp where deptno = 30;

②结果 

4.2 列出所有办事员的姓名,编号和部门编号

①命令

mysql> select ename,empno,deptno from emp where job = '办事员';

②结果

4.3 找出佣金高于薪金的员工

①命令

mysql> select ename from emp where comm > sal;

②结果

4.4 找出没有佣金的员工

①命令

mysql> select ename from emp where comm is NULL;

②结果

4.5 找出佣金高于薪金的60%的员工

①命令

mysql> select ename from emp where comm > 0.6*(sal);

②结果

4.6 找出部门10中所有人事部长和部门20中所有办事员的详细资料

①命令

mysql> select e.* from emp e where deptno = 10 and job = '人事部长' or deptno = 20 and job = '办事员';

②结果

4.7 找出收取佣金的员工

①命令

mysql> select ename from emp where comm is not NULL;

②结果

4.8 找出不收取佣金或收取的佣金低于100的员工

①命令

mysql> select ename from emp where comm is NULL or comm < 100;

②结果

4.9 找出姓张的员工的信息

①命令

mysql> select * from emp where ename like '张%';

②结果

4.10 显示员工的姓名和受雇日期,新的员工排在最前面 

①命令

mysql> select ename,hiredate from emp where hiredate order by hiredate desc;

②结果

4.11 按工作的降序排序,若工作相同则按薪金排序

①命令

mysql> select *
    -> from emp
    -> order by job desc, sal asc;

②结果

4.12 查出不姓刘的员工的信息

①命令

mysql> select * from emp where ename not like '刘%';

②结果 

4.13 取出姓李的员工 

①命令

mysql> select ename from emp where ename like '李%';

②结果

五、多表查询

5.1 查询出每一位雇员的编号、姓名、职位、部门名称、位置

①命令

mysql> select e.empno,e.ename,e.job,d.dname,d.loc from emp e,dept d where e.deptno=d.deptno;

②结果

5.2 要求查询出每一位雇员的姓名、职位、领导的姓名 

①命令

mysql> select e.ename as '员工姓名',e.job as '职位',l.ename as '领导姓名'
    -> from emp e
    -> left join emp l on e.mgr = l.empno;

②结果

5.3 查询出每个雇员的编号、姓名、基本工资、职位、领导的姓名、部门名称及位置 

①命令

 mysql> select e.empno as 雇员编号, e.ename as 雇员姓名, e.sal as 基本工资, e.job as 职位, l.ename as 领导姓名, d.dname as 部门名称, d.loc as 位置
    -> from emp e
    -> left join dept d on e.deptno = d.deptno
    -> left join emp l on e.mgr = l.empno;

②结果

5.4 列出在部门"销售部"工作的员工的姓名,假定不知道销售部的部门编号 

①命令

mysql> select e.ename,d.dname from emp e inner join dept d where d.dname = '销售部';

②结果

5.5 列出与"李兴"从事相同工作的所有员工

①命令

#方法一
mysql> select * from emp where job = '售货员';
#方法二
mysql> select * from emp where job = (select job from emp where ename = '李兴');

②结果

5.6 列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金

①命令

mysql> select e.ename,e.sal from emp e where e.sal > (select max(sal) from emp where deptno = 30 );

②结果

5.7 列出受雇日期早于其直接上级的所有员工

①命令

mysql> select e1.empno, e1.ename, e1.hiredate as 'Employee Hire Date', e2.ename as 'Manager Name', e2.hiredate as 'Manager Hire Date'
    -> from emp e1
    -> left join emp e2 on e1.mgr = e2.empno
    -> where e1.hiredate < e2.hiredate;

②结果

六、分组函数查询

6.1 按照部门编号分组,求出每个部的人数,平均工资

①命令

mysql> select deptno, count(deptno) as 人数, avg(sal) as 平均工资
    -> from emp
    -> group by deptno;

②结果

6.2 按照职位分组,求出每个职位的最高和最低工资

①命令

mysql> select job as 职位,max(sal) as 最高工资,min(sal) as 最低工资
    -> from emp
    -> group by job;

②结果

6.3 计算出每个各职位的平均工资 

①命令

mysql> select job, count(*) as 人数, avg(sal) as 平均工资
    -> from emp
    -> group by job;

②结果

6.4 查询出每个部门的名称、部门的人数、平均工资 

①命令

mysql> select d.dname, count(e.empno) as 人数, avg(e.sal) as 平均工资
    -> from dept d
    -> left join emp e on d.deptno = e.deptno
    -> group by d.dname;

②结果

6.5 要求统计出每个部门的详细信息,并且要求这些部门的平均工资高于2000

①命令

mysql> select d.dname, d.loc, avg(e.sal) as 平均工资
    -> from dept d
    -> left join emp e on d.deptno = e.deptno
    -> group by d.dname, d.loc
    -> having 平均工资 > 2000;

②结果

6.6 要求查询出工资比华仔还要高的全部雇员信息 

①命令

mysql> select *
    -> from emp
    -> where sal > (
    ->     select sal
    ->     from emp e
    ->     where e.ename = '华仔'
    -> );

②结果

6.7 要求查询出高于公司平均工资的全部雇员信息

①命令

mysql> select * from emp where sal > (select avg(sal) from emp);

②结果

6.8 查询出每个部门的编号、名称、位置、部门人数、平均工资 

①命令

mysql> select d.deptno, d.dname, d.loc, COUNT(*) AS department_count, avg(e.sal) AS average_salary
    -> from dept d
    -> join emp e ON d.deptno = e.deptno
    -> group by d.deptno, d.dname, d.loc;

②结果

6.9 列出至少有一个员工的所有部门

①命令

mysql> select d.deptno, d.dname
    -> from dept d
    -> left join emp e on d.deptno = e.deptno
    -> group by d.deptno, d.dname
    -> having count(e.empno) > 0;

②结果

七、等级查询 

7.1 查询每个工资等级各有多少员工

①命令

mysql> select grade, count(*) as num_employees
    -> from emp
    -> left join salgrade on emp.sal between salgrade.losal and salgrade.hisal
    -> group by grade;

②结果

7.2 查询部门中(所有人)的平均工资等级

①命令

mysql> select deptno, avg(grade) as avg_grade
    -> from emp
    -> left join salgrade on emp.sal between salgrade.losal and salgrade.hisal
    -> group by deptno;

②结果

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

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

相关文章

nuclei安装;linux上 以及使用教程

kali安装go环境_go1.17 kali安装-CSDN博客Ubuntu完美解决Github网站打不开问题 - 一抹烟霞 - 博客园 (cnblogs.com) All releases - The Go Programming Language 然但是上面两个我似乎都没用到网上的教程 也不适用 一个网不好 一个apt没找到包 然后我先试试了版本 结果 我的…

组件通信方式

组件通信 父子组件通信 单向数据流 属性传递props&#xff08;还有插槽&#xff0c;$attrs非属性&#xff09;/$emit&#xff0c;发布订阅模式 方法也可以作为属性 父子组件渲染生命周期&#xff1a; 获取组件实例。$children、ref&$refs/$parent 祖先和后代 组件和后代通信…

python之粘包/粘包的解决方案

python之粘包/粘包的解决方案 什么是粘包 粘包就是在数据传输过程中有多个数据包被粘连在一起被发送或接受 服务端&#xff1a; import socket import struct# 创建Socket Socket socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 绑定服务器和端口号 servers_addr (…

java打包及上传到私服务

一、准备Maven私服Nexus 添加saas.maven 仓库地址&#xff1a;http://192.168.31.109:8081/repository/saas.maven 二、新建SpringBoot项目com.saas.pdf 添加类&#xff1a;PdfUtil.java package com.saas.pdf;public class PdfUtil {public static void Save(String fileP…

ubuntu20遇到缺少qt4相关库的问题

最近需要做套接字通讯的工作&#xff0c;最好是有一个网络调试软件能够接受或者发送套接字&#xff0c;测试代码能够正常通讯。windows下有很多&#xff0c;但是linux下比较少&#xff0c;使用广泛的是下面这一款。 1、安装 首先从网盘&#xff08;链接: https://pan.baidu.c…

安装conda搭建python环境(保姆级教程)

目录 一、Anaconda简介二、Anaconda安装 2.1 Anaconda下载2.2 Anaconda安装2.3 配置环境变量 三、通过conda配置python环境 3.1 创建并激活虚拟环境3.2 管理虚拟环境 一、Anaconda简介 Anaconda 是专门为了方便使用 Python 进行数据科学研究而建立的一组软件包&#xff0c;…

【设计模式-08】Flyweight享元模式

简要说明 简要的理解&#xff1a;享元模式就是新建一个池(Pool)&#xff0c;该池子(Pool)中有新建好的一堆对象&#xff0c;当需要使用时&#xff0c;从池子(Pool)中直接获取&#xff0c;不用重新新建一个对象。通俗的讲就是&#xff1a;共享元数据。 比如Java中的String就是使…

Python圣诞主题绘图:用turtle库打造冬日奇妙画面【第31篇—python:圣诞节】

文章目录 Python圣诞主题绘图导言代码结构概览详细解析drawlight函数tree函数xzs函数drawsnow函数五角星的绘制 完整代码代码解析总结 Python圣诞主题绘图 导言 圣诞季节是个充满欢乐和创意的时刻。在这个技术博客中&#xff0c;我们将深入探讨如何使用Python的turtle库创建一…

【华为 ICT HCIA eNSP 习题汇总】——题目集4

1、&#xff08;多选&#xff09;网络中出现故障后&#xff0c;管理员通过排查发现某台路由器的配置被修改了&#xff0c;那么管理员应该采取哪些措施来避免这种状况再次发生&#xff1f; A、管理员应该通过配置 ACL 来扩展只有管理员能够登录设备 B、管理员应该在路由的管理端…

Redis原理篇(QuickList)

一.前言&#xff1a;ZipList出现的问题 QuickList的出现是为了解决ZipList所存在的一些问题 1.寻找大内存块&#xff0c;申请内存效率低 ZipList所申请的是连续的内存空间&#xff0c;如果ZipList里面存放的数据过多&#xff0c;就需要一块很大的连续内存&#xff0c;系统需…

【c++笔记】用c++解决一系列质数问题!

质数是c语言和c中比较常见的数学问题&#xff0c;本篇文章将带你走进有关质数的一系列基础问题&#xff0c;其中包含常见的思路总结&#xff0c;本篇文章过后&#xff0c;将会持续更新c算法系列&#xff0c;感兴趣的话麻烦点个关注吧&#xff01; 希望能给您带来帮助&#xff…

新能源智慧充电桩方案:AI视频分析技术如何助力充电桩智能监管?

随着AI人工智能、大数据、云计算等技术快速发展与落地&#xff0c;视频智能分析技术在智慧充电桩场景中的应用也越来越广泛。这种技术能够为充电桩站点提供全方位的监控和管理&#xff0c;提高运营效率&#xff0c;保障充电桩设备的安全和稳定运行。 通过TSINGSEE青犀&触角…

实验五 PLSQL编程

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

Arduino开发实例-MTH02温湿度传感器驱动

MTH02温湿度传感器驱动 文章目录 MTH02温湿度传感器驱动1、MTH02温湿度传感器介绍2、硬件准备及接线3、代码实现1、MTH02温湿度传感器介绍 市场上的温湿度传感器在价格、精度和测量范围等方面种类繁多。 MTH02O 是这些传感器中最小的一种。 该传感器使用数字引脚传输温度和湿度…

领略指针之妙

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

mac-hadoop3.3.6 源码构建以及踩坑记录

1. 为什么需要构建源码 因为hadoop的可执行文件 是在专门的机器上编译的 其中native库 不一定能适用于每个机器 导致在启动hadoop过程中 出现烦人的警告 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes w…

探索图像检索:从理论到实战的应用

目录 一、引言二、图像检索技术概述图像检索的基本概念图像检索与文本检索的区别特征提取技术相似度计算索引技术 三、图像检索技术代码示例图像特征提取示例相似度计算索引技术 四、图像搜索流程架构数据采集与预处理特征提取相似度计算与排名结果呈现与优化 五、实际应用图像…

探索世界,从一款好用的浏览器开始!

好用的浏览器分享 在这个数字化的时代&#xff0c;浏览器已经成为了我们生活中不可或缺的工具。从浏览新闻、社交媒体到工作学习&#xff0c;我们几乎无时无刻不在与浏览器打交道。那么&#xff0c;如何选择一款好用的浏览器呢&#xff1f;今天&#xff0c;我就来为大家分享几…

git中合并分支时出现了代码冲突怎么办

目录 第一章、Git代码冲突介绍1.1&#xff09;什么是Git代码冲突①git merge命令介绍②代码冲突原因 1.2&#xff09;提示代码冲突的两种情况①本地不同分支的文件有差异时&#xff1a;②本地仓库和git远程仓库的文件有差异时&#xff1a; 1.3&#xff09;解决合并时的代码冲突…

linux sudo指令提权

sudo指令 sudo 是在linux中用于以超级用户&#xff08;root&#xff09;权限执行命令的命令。它允许普通用户在执行特定命令时提升其权限&#xff0c;以完成需要超级用户权限的任务。sudo 的名称是 "superuser do" 的缩写。 格式 接受权限的用户登陆的主机 &#xff…