六、MySQL---综合练习题(单表、多表、分组函数以及等级查询)

这篇具有很好参考价值的文章主要介绍了六、MySQL---综合练习题(单表、多表、分组函数以及等级查询)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.素材简介

数据库:dept_emp
1.dept表:deptno’部门编号’、dname’部门名称’、loc’地理位置’;
2.emp表:empno ‘员工编号’、ename ‘员工名字’、job ‘职位’、mgr ‘上司’、hiredate ‘入职时间’、sal ‘基本工资’,comm ‘补贴’,deptno ‘所属部门编号’;
3.salgrade:grade ‘工资等级’、losal ‘最低限额’、hisal ‘最高限额’;
问题:

单表查询
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.查询部门中(所有人)的平均工资等级

2.创建dept表

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,'运输部','雁塔区');

3.创建emp表

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');

4.创建salgrade表

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);

测试:
六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql
六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql
至此,所有数据库与表就创建完成了,就可以就行查询了!

解答:

一、单表查询

1.选择部门30中的所有员工

mysql>  select * from emp where deptno=30;

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql
2.列出所有办事员的姓名,编号和部门编号

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

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

mysql> select * from emp where comm > sal;

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

4.找出没有佣金的员工

mysql> select * from emp where comm is null or comm=0;

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

mysql> select * from emp where comm is null or comm=0;

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

mysql> select * from emp where comm is null or comm=0;

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql
7.找出收取佣金的员工

mysql> select * from emp where comm >0;

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

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

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

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

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

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

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

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

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

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

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

13.取出姓李的员工

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

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

二、多表查询

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

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

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql
2.要求查询出每一位雇员的姓名、职位、领导的姓名

mysql> select e.ename,e.job,m.ename
    -> from emp e,emp m
    -> where e.mgr=m.empno;

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

mysql> select e.empno,e.ename,e.sal,e.job,e.mgr,d.dname,d.loc
    -> from emp e,emp m,dept d
    -> where e.mgr=m.empno and e.deptno=d.deptno;

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

mysql> select e.empno,e.ename,e.sal,e.job,e.mgr,d.dname,d.loc
    -> from emp e,emp m,dept d
    -> where e.mgr=m.empno and e.deptno=d.deptno;

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

mysql> select e.* from emp e where e.job=(select el.job from emp el where el.ename='李兴');

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

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

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

mysql> select e.* from emp e where ((select el.hiredate from emp el where e.mgr=el.empno)-e.hiredate)>0;

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

三、分组函数查询

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

mysql> select deptno,count(empno),avg(sal) from emp group by deptno;

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

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

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

mysql> select job,avg(sal) from emp group by job;

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

mysql> select d.dname,count(e.empno),avg(e.sal) from emp e,dept d where e.deptno=d.deptno group by dname;

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql
left outer join on
5.要求统计出每个部门的详细信息,并且要求这
些部门的平均工资高于2000;

mysql> select d.dname,avg(e.sal) a
    -> from dept d left outer join emp e
    -> on d.deptno =e.deptno
    -> group by d.dname
    -> having a > 2000;

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

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

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

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

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

mysql> select d.dname,count(e.deptno) c ,avg(e.sal)
    -> from dept d left outer join emp e
    -> on d.deptno =e.deptno
    -> group by d.dname order by c;

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

mysql> select d.deptno,d.dname from dept d where(
    -> select count(e.empno) from emp e
    -> where e.deptno=d.deptno)>1;

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

四、等级查询

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

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

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql

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

mysql> select e.deptno,avg(s.grade) avggrade
    -> from emp e join salgrade s
    -> on e.sal between s.losal and hisal
    -> group by e.deptno
    -> order by e.deptno;

六、MySQL---综合练习题(单表、多表、分组函数以及等级查询),Mysql数据库,mysql,数据库,sql文章来源地址https://www.toymoban.com/news/detail-810761.html

到了这里,关于六、MySQL---综合练习题(单表、多表、分组函数以及等级查询)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MYSQL】聚合函数和单表/多表查询练习、子查询、内外连接

    目录 1.聚合函数 1.1.group by子句 1.2.having语句 2.单表查询  2.2单表查询 3.多表查询  3.2.子查询 5.内链接 6.外连接 函数 说明 count 返回查询到的数据的数量 sum 返回查询到的数据的总和 avg 返回查询到的数据的平均值 max 返回查询到的数据的最大值 min 返回查询到的数据的最小值

    2024年02月04日
    浏览(48)
  • 数据库多表查询练习题

    二、多表查询 1. 创建 student 和 score 表 CREATE TABLE student ( id INT ( 10 ) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR ( 20 ) NOT NULL , sex VARCHAR ( 4 ) , birth YEAR , department VARCHAR ( 20 ) , address VARCHAR ( 50 ) ); 创建 score 表。 SQL 代码如下: CREATE TABLE score ( id INT ( 10 ) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT , stu_

    2024年01月17日
    浏览(65)
  • 【SQL每日一练】分组过滤练习题

    题目:现在运营想查看每个学校用户的平均发贴和回帖情况,寻找低活跃度学校进行重点运营,请取出平均发贴数低于5的学校或平均回帖数小于20的学校。 代码如下: WHERE 无法与合计函数一起使用; SQL语句执行顺序 (8) SELECT (9) DISTINCT (1) FROM (3) JOIN (2) ON (4) WHERE (5) GR

    2024年04月23日
    浏览(42)
  • 【Java练习题汇总】《第一行代码JAVA》综合测试三,汇总Java练习题

    线程的启动方法是( )。 A. run() B. start() C. begin() D. accept() Thread 类提供表示线程优先级的静态常量,代表普通优先级的静态常量是( )。 A. MAX_PRIORITY B. MIN_PRIORITY C. NORMAL_PRIORITY D. NORM_PRIORITY 设置线程优先级的方法是( )。 A. setPriority() B. getPriority() C. getName() D. setName() 下面 ( )方法是

    2024年02月14日
    浏览(50)
  • 10 SQL进阶 -- 综合练习题 -- 10道经典SQL题目,配套数据与解答

    点击下方链接直接下载 创建数据表脚本:http://tianchi-media.oss-cn-beijing.aliyuncs.com/dragonball/SQL/create_table.sql 执行建表语句 执行成功 查看创建的表 点击下方链接直接下载 插入数据脚本:https://tianchi-media.oss-cn-beijing.aliyuncs.com/dragonball/SQL/data.zip 大家下载好脚本后,先在MySQL环境中运

    2024年04月27日
    浏览(39)
  • MySQL---单表查询综合练习

    创建emp表 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 \\\'所属部门编号\\\' ); emp表添加主键 mysql alte

    2024年01月21日
    浏览(42)
  • sql函数练习题

    1. 计算用户8月每天的练题数量 题目:现在运营想要计算出 2021年8月每天用户练习题目的数量 ,请取出相应数据。 示例:question_practice_detail id device_id question_id result date 1 2138 111 wrong 2021-05-03 2 3214 112 wrong 2021-05-09 3 3214 113 wrong 2021-06-15 4 6543 111 right 2021-08-13 5 2315 115 right 2021-08-1

    2024年02月07日
    浏览(44)
  • MySQL---多表查询综合练习

    CREATE TABLE dept ( deptno INT(2) NOT NULL COMMENT \\\'部门编号\\\', dname VARCHAR (15) COMMENT \\\'部门名称\\\', loc VARCHAR (20) COMMENT \\\'地理位置\\\' ); mysql alter table dept add primary key(deptno);           Query OK, 0 rows affected (0.02 sec)                       Records: 0  Duplicates: 0  Warnings: 0 INSERT INTO dept

    2024年01月21日
    浏览(44)
  • MySQL练习题(6)

    1、使用mysqldump命令备份数据库中的所有表   2、备份booksDB数据库中的books表 3、使用mysqldump备份booksDB和test数据库 4、使用mysqldump备份服务器中的所有数据库 5、使用mysql命令还原第二题导出的book表 6、进入数据库使用source命令还原第二题导出的book表 1、建立一个utf8编码的数据

    2024年02月16日
    浏览(38)
  • MySQL45道练习题

    作业需要数据表SQL语句已给  1. 查询\\\" 01 \\\"课程比\\\" 02 \\\"课程成绩高的学生的信息及课程分数  1.1 查询同时存在\\\" 01 \\\"课程和\\\" 02 \\\"课程的情况 1.2 查询存在\\\" 01 \\\"课程但可能不存在\\\" 02 \\\"课程的情况(不存在时显示为 null ) 1.3 查询不存在\\\" 01 \\\"课程但存在\\\" 02 \\\"课程的情况 2.查询平均成绩大于

    2024年01月25日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包