mysql单表查询&&多表查询(职员表14+9)
发布日期:2021-08-25 04:21:21 浏览次数:2 分类:技术文章

本文共 3351 字,大约阅读时间需要 11 分钟。

 

dept(deptno,dname,loc)emp(empno,ename,job,mgr,hiredate,sal,COMM,deptno)salgrade(grade,losal,hisal)stu(sid,sname,age,gander,province,tuition)

 

 

 

 

 

 

单表查询题目====================================================
dept(deptno,dname,loc)emp(empno,ename,job,mgr,hiredate,sal,COMM,deptno)salgrade(grade,losal,hisal)stu(sid,sname,age,gander,province,tuition)
1. 查询出部门编号为30的所有员工SELECTstu.snameFROMstuWHEREstu.sid = 302. 所有销售员的姓名、编号和部门编号。SELECTemp.empno,emp.ename,emp.deptnoFROMempWHEREemp.job = '销售员'3. 找出奖金高于工资的员工。SELECTemp.enameFROMempWHEREemp.COMM > emp.sal4. 找出奖金高于工资60%的员工。SELECTemp.enameFROMempWHEREemp.COMM > emp.sal*0.65. 找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料。SELECTemp.empno,emp.ename,emp.job,emp.hiredate,emp.sal,emp.deptnoFROMempWHERE(emp.job = '经理' ANDemp.deptno = 20) OR(emp.job = '销售员' ANDemp.deptno = 10)6. 找出部门编号为10中所有经理,部门编号为20中所有销售员,还有即不是经理又不是销售员但其工资大或等于20000的所有员工详细资料。SELECTemp.empno,emp.ename,emp.job,emp.hiredate,emp.sal,emp.deptnoFROMempWHERE(emp.job = '经理' ANDemp.deptno = 20) OR(emp.job = '销售员' ANDemp.deptno = 10)OR(emp.job != '经理' AND emp.job != '销售员' AND emp.sal>=20000)7. 无奖金或奖金低于1000的员工。SELECTemp.empno,emp.ename,emp.jobFROM empWHEREemp.COMM < 1000 ORemp.COMM IS NULL8. 查询名字由三个字组成的员工。SELECT emp.enameFROM empWHERE emp.ename LIKE '___'9.查询2000年入职的员工。SELECT emp.enameFROM empWHERE emp.hiredate LIKE '2000-__-__'#'2000%'10. 查询所有员工详细信息,用编号升序排序SELECTemp.empno,emp.ename,emp.job,emp.mgr,emp.hiredate,emp.sal,emp.COMM,emp.deptnoFROMempORDER BYemp.empno ASC11. 查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序SELECTemp.empno,emp.ename,emp.job,emp.mgr,emp.hiredate,emp.sal,emp.COMM,emp.deptnoFROMempORDER BYemp.sal DESC,emp.hiredate ASC12. 查询每个部门的平均工资SELECTemp.deptno,AVG(sal)FROMempGROUP BYemp.deptno13. 查询每个部门的雇员数量。 SELECTemp.deptno,COUNT(1)FROMempGROUP BYemp.deptno14. 查询每种工作的最高工资、最低工资、人数SELECTemp.job,MAX(sal),MIN(sal),COUNT(1) AS 人数FROMempGROUP BYemp.job 多表查询题目====================================================
dept(deptno,dname,loc)emp(empno,ename,job,mgr,hiredate,sal,COMM,deptno)salgrade(grade,losal,hisal)stu(sid,sname,age,gander,province,tuition)
1. 查出至少有一个员工的部门。显示部门编号、部门名称、部门位置、部门人数。SELECT dept.deptno,dept.dname,dept.loc,COUNT(emp.deptno) AS 部门人数FROM dept,empWHERE dept.deptno=emp.deptnoGROUP BY dept.deptno2. 列出所有员工的姓名及其直接上级的姓名。SELECT e.ename, IFNULL(m.ename, 'BOSS') AS leadFROM emp e LEFT JOIN emp mON e.mgr=m.empno;3. 列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称。SELECTe.empno,e.ename,d.dnameFROMemp AS eINNER JOIN emp AS m ON e.mgr = m.empnoLEFT JOIN dept AS d ON e.deptno = d.deptnoWHEREe.hiredate < m.hiredate4. 列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。SELECT e.*, d.dnameFROM emp e RIGHT JOIN dept dON e.deptno=d.deptno;5. 列出最低薪金大于15000的各种工作及从事此工作的员工人数。SELECT e.job,COUNT(*) AS 员工人数FROMemp eGROUP BY job HAVING MIN(sal)>150006. 列出在销售部工作的员工的姓名,假定不知道销售部的部门编号。SELECT e.enameFROM emp eWHERE(SELECT e.deptno FROM dept WHERE dname='销售部'        )7. 列出薪金高于公司平均薪金的所有员工信息,所在部门名称,上级领导,工资等级。SELECT e.*,d.dname,s.gradeFROM emp e   NATURAL LEFT JOIN dept d  LEFT JOIN emp m ON m.empno=e.mgr  LEFT JOIN salgrade s ON e.sal BETWEEN s.losal AND s.hisalWHERE e.sal > (SELECT AVG(sal) FROM emp)8.列出与庞统从事相同工作的所有员工及部门名称。SELECT e.*, d.dnameFROM emp e, dept dWHERE e.deptno=d.deptno AND e.job=(SELECT job FROM emp WHERE ename='庞统');9.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称。SELECT e.ename, e.sal, d.dnameFROM emp e, dept dWHERE e.deptno=d.deptno AND sal > ALL(SELECT sal FROM emp WHERE deptno=30)

 

转载地址:https://blog.csdn.net/weixin_33843947/article/details/85827520 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【转】Maven实战(六)--- dependencies与dependencyManagement的区别
下一篇:创建类模式(一):工厂方法(Factory Method)

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月21日 03时28分33秒