MySql教程

MySQL练习语句

本文主要是介绍MySQL练习语句,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

#1. 查出至少有一个员工的部门。显示部门编号、部门名称、部门位置、部门人数。
SELECT d.dname , d.loc , z.*
FROM  dept d, (SELECT COUNT(*) cnt , deptno FROM emp GROUP BY deptno) z
WHERE z.deptno=d.deptno;

#2. 列出薪金比小红高的所有员工。
SELECT * FROM emp e  WHERE e.`sal`>(SELECT sal FROM emp WHERE ename = '小红')

#列出所有员工的姓名及其直接上级的姓名。
SELECT e.ename , IFNULL(b.ename,'BOSS') AS lend
FROM emp e LEFT JOIN emp b
ON e.mqr = b.empno;

#列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称。
SELECT e.empno , e.ename , d.dname 
FROM emp e LEFT JOIN emp m
ON e.mqr = m.empno
LEFT JOIN dept d ON d.deptno = e.deptno
WHERE e.hiredate < m.hiredate; 

#列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。
SELECT d.dname , e.*  
FROM emp e RIGHT JOIN dept d
ON e.`deptno` = d.`deptno`;

# 列出所有文员的姓名及其部门名称,部门的人数。
SELECT e.ename , d.dname ,  z.cnt
FROM emp e , (SELECT deptno , COUNT(*) cnt FROM emp GROUP BY deptno) z, dept d 
WHERE e.deptno = d.`deptno`  AND  z.deptno = d.`deptno` AND e.`job`='文员';


#列出最低薪金大于15000的各种工作及从事此工作的员工人数。
SELECT job ,COUNT(*) 
FROM emp e
GROUP BY job
HAVING MIN(sal)>15000;

#列出在销售部工作的员工的姓名,假定不知道销售部的部门编号。
SELECT e.ename FROM emp e
WHERE e.`deptno` = (SELECT d.deptno FROM dept d WHERE d.`dname`='销售部')

#列出薪金高于公司平均薪金的所有员工信息,所在部门名称,上级领导,工资等级。
SELECT e.* , d.dname , m.ename , s.qrade
FROM emp e
NATURAL LEFT JOIN  dept d
LEFT JOIN emp m ON m.empno=e.mqr
LEFT JOIN qrade  s ON e.sal  BETWEEN  s.losal  AND  s.hisal
WHERE e.sal > (SELECT AVG(sal) FROM emp);

#列出与庞统从事相同工作的所有员工及部门名称。
SELECT  e.ename ,d.dname  
FROM emp e , dept d
WHERE e.`deptno` = d.`deptno` AND e.`job` = (SELECT e.job FROM emp e WHERE e.`ename`='庞统');

#列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称。
SELECT e.ename , e.sal , d.dname
FROM emp e , dept d
WHERE e.`deptno` = d.`deptno` AND sal> ALL(SELECT sal FROM emp WHERE deptno = 30);


#列出在每个部门工作的员工数量、平均工资。

SELECT d.dname , e.cnt , e.avgsal 
FROM (SELECT deptno ,COUNT(*) cnt , AVG(sal) avgsal FROM emp GROUP BY deptno) e,dept d
WHERE e.deptno = d.`deptno`;
 

这篇关于MySQL练习语句的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!