ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql 练习20道题

2021-11-28 18:30:18  阅读:163  来源: 互联网

标签:salary 道题 20 emp mysql deptno null WHERE SELECT


准备:建表,插入数据

drop table if exists emp;

create table if not exists emp(

empno int primary key auto_increment,

ename varchar(10) not null,

job varchar(20),

salary double(8,2),

mgr int(10),

bonus double(6,2),

hiredate date,

deptno int(10)

);

insert into emp values(null,'mary','sales',7000,6,1000,'2014-1-1',10);

insert into emp values(null,'lily','sales',6000,1,800,'2014-5-1',10);

insert into emp values(null,'tom','sales',5000,1,4000,'2014-3-1',10);

insert into emp values(null,'james','account',8000,6,null,'2014-2-1',20);

insert into emp values(null,'scott','teaching',8000,6,3000,'2014-1-20',30);

insert into emp values(null,'tom','BOSS',38000,null,null,'2013-1-20',30);

insert into emp values(null,'kitty','teaching',7000,5,700,'2014-5-20',30);

insert into emp values(null,'kitty','teaching',6000,5,500,'2014-6-20',30);

insert into emp values(null,'green','analyst',15000,6,1000,'2014-2-20',40);

insert into emp values(null,'brown','analyst',12000,9,7000,'2014-4-20',40);

insert into emp values(null,'danis','department',3000,6,800,'2014-3-4',50);

insert into emp values(null,'brown','department',1800,11,600,'2014-4-20',50);

insert into emp values(null,'smith','department',1200,11,500,'2014-5-20',50);

#1:查询EMP表的全部职工的EMPNO、ENAME和JOB。

SELECT empno,ename,job FROM emp

#2:查询EMP表的全部职工的EMPNO、ENAME和JOB,按salary升序次序排列。

#按照某个字段进行排序,不需要将其显示,一定要确认查询的表中存在这个字段

SELECT empno,ename,job FROM emp ORDER BY salary 

#3:查询EMP表的全部列,列的次序为:JOB,SALARY,ENAME,EMPNO,MGR,HIREDATE,BONUS,DEPTNO,查询结果按年薪降序。

SELECT job,salary,ename,mgr,hiredate,bonus,deptno FROM emp ORDER BY salary DESC

#4:列出EMP表中的不同的JOB名称

SELECT job FROM emp GROUP BY job

#5:查询在部门10中工作,其工资高于6000的职工信息

SELECT * FROM emp WHERE deptno=10 AND salary>6000

#6:列出其JOB为BOSS或ANALYST的职工名及职工号

SELECT ename,empno FROM emp WHERE job="BOSS" OR job="analyst"

#7:列出工资在5500至20000之间的职工名字、职工号。使用两种方式实现

(1)SELECT ename,empno FROM emp WHERE salary BETWEEN 5500 AND 20000

(2)SELECT ename,empno FROM emp WHERE salary>=5500 AND salary<=20000

#8:查出工资为6k的人员所在的部门名称和地址。

SELECT deptno,adrress FROM emp WHERE salary=6000

#9:查出以W开头或以S结尾的职工名的职工信息。

SELECT job,salary,ename,mgr,hiredate,bonus,deptno,adrress FROM emp WHERE ename LIKE "w%" OR ename LIKE "%s"

#10:查出以k开头或以y结尾的职工信息和部门信息。

SELECT job,salary,ename,mgr,hiredate,bonus,deptno,adrress FROM emp WHERE ename LIKE "k%" OR ename LIKE "%y"

#11:列出没有奖金的职工信息。

SELECT * FROM emp WHERE bonus IS NULL

查询奖金为 NULL 的时候要用 IS NULL

#12:查询工资最高的人的信息以及部门信息

SELECT * FROM emp ORDER BY salary DESC LIMIT 1

#13:查询每个部门的平均工资,部门名称,部门编号,并按照平均工资倒序排列

SELECT deptno,job,AVG(salary) FROM emp GROUP BY deptno ORDER BY AVG(salary) DESC

#14:查询每个部门的平均工资,按照部门编号,部门名称,平均薪资顺序显示,低于5000的不要求显示,并按照平均工资倒序排列

SELECT deptno,job,AVG(salary)FROM emp a  GROUP BY deptno HAVING AVG(salary)>=5000 ORDER BY AVG(salary)

  

#15:查询‘lily’的领导信息

SELECT * FROM emp WHERE empno IN (SELECT mgr FROM emp WHERE ename="lily")

16:查詢在梵蒂冈办公的人员信息

SELECT * FROM emp WHERE adrress="梵蒂冈"

#17:列出所有部门的详细信息和部门人数

SELECT COUNT(deptno),deptno FROM emp GROUP BY deptno

SELECT COUNT(1),deptno FROM emp GROUP BY deptno

#18:查询出所有薪水在'james'之上的所有人员信息,并按照工资降序排列

SELECT * FROM emp

WHERE salary>(SELECT salary FROM emp WHERE ename="james") ORDER BY salary DESC

#19:查询出所有有奖金的人员信息,并按照奖金的多少进行降序排列

SELECT * FROM emp

WHERE bonus IS NOT NULL ORDER BY bonus DESC

#20:查出emp表中所有部门的最高薪水和最低薪水,部门编号为10的部门不显示。

(1)SELECT deptno,MAX(salary),MIN(salary) FROM emp WHERE deptno <> 10 GROUP BY deptno 

(2)SELECT deptno,MAX(salary),MIN(salary) FROM emp GROUP BY deptno HAVING deptno <> 10

#21:查询所有mary下属的信息和工作地点,并且按照他们的工资降序排列

SELECT * FROM emp WHERE mgr IN (SELECT empno FROM emp WHERE ename="mary") ORDER BY salary DESC

标签:salary,道题,20,emp,mysql,deptno,null,WHERE,SELECT
来源: https://blog.csdn.net/m0_63076572/article/details/121595246

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有