mysql單表查詢&&多表查詢(職員表14+9)


 

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的所有員工
SELECT
stu.sname
FROM
stu
WHERE
stu.sid = 30

2. 所有銷售員的姓名、編號和部門編號。
SELECT
emp.empno,
emp.ename,
emp.deptno
FROM
emp
WHERE
emp.job = '銷售員'

3. 找出獎金高於工資的員工。
SELECT
emp.ename
FROM
emp
WHERE
emp.COMM > emp.sal

4. 找出獎金高於工資60%的員工。
SELECT
emp.ename
FROM
emp
WHERE
emp.COMM > emp.sal*0.6
5. 找出部門編號為10中所有經理,和部門編號為20中所有銷售員的詳細資料。
SELECT
emp.empno,
emp.ename,
emp.job,
emp.hiredate,
emp.sal,
emp.deptno
FROM
emp
WHERE
(emp.job = '經理' AND
emp.deptno = 20) OR
(emp.job = '銷售員' AND
emp.deptno = 10)

6. 找出部門編號為10中所有經理,部門編號為20中
所有銷售員,還有即不是經理又不是銷售員但其
工資大或等於20000的所有員工詳細資料。
SELECT
emp.empno,
emp.ename,
emp.job,
emp.hiredate,
emp.sal,
emp.deptno
FROM
emp
WHERE
(emp.job = '經理' AND
emp.deptno = 20) OR
(emp.job = '銷售員' AND
emp.deptno = 10)OR(emp.job != '經理' AND emp.job != '銷售員' AND 
emp.sal>=20000)

7. 無獎金或獎金低於1000的員工。
SELECT
emp.empno,
emp.ename,
emp.job
FROM emp
WHERE
emp.COMM < 1000 OR
emp.COMM IS NULL
8. 查詢名字由三個字組成的員工。
SELECT emp.ename
FROM emp
WHERE emp.ename LIKE '___'
9.查詢2000年入職的員工。
SELECT emp.ename
FROM emp
WHERE emp.hiredate LIKE '2000-__-__'
#'2000%'
10. 查詢所有員工詳細信息,用編號升序排序
SELECT
emp.empno,
emp.ename,
emp.job,
emp.mgr,
emp.hiredate,
emp.sal,
emp.COMM,
emp.deptno
FROM
emp
ORDER BY
emp.empno ASC
11. 查詢所有員工詳細信息,用工資降序排序,如果工資相同
使用入職日期升序排序
SELECT
emp.empno,
emp.ename,
emp.job,
emp.mgr,
emp.hiredate,
emp.sal,
emp.COMM,
emp.deptno
FROM
emp
ORDER BY
emp.sal DESC,
emp.hiredate ASC

12. 查詢每個部門的平均工資
SELECT
emp.deptno,AVG(sal)
FROM
emp
GROUP BY
emp.deptno

13. 查詢每個部門的雇員數量。
 SELECT
emp.deptno,COUNT(1)
FROM
emp
GROUP BY
emp.deptno
14. 查詢每種工作的最高工資、最低工資、人數
SELECT
emp.job,MAX(sal),MIN(sal),COUNT(1) AS 人數
FROM
emp
GROUP BY
emp.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,emp WHERE dept.deptno=emp.deptno GROUP BY dept.deptno 2. 列出所有員工的姓名及其直接上級的姓名。 SELECT e.ename, IFNULL(m.ename, 'BOSS') AS lead FROM emp e LEFT JOIN emp m ON e.mgr=m.empno; 3. 列出受雇日期早於直接上級的所有員工的編號、姓名、部門名稱。 SELECT e.empno, e.ename, d.dname FROM emp AS e INNER JOIN emp AS m ON e.mgr = m.empno LEFT JOIN dept AS d ON e.deptno = d.deptno WHERE e.hiredate < m.hiredate 4. 列出部門名稱和這些部門的員工信息,同時列出那些沒有員工的部門。 SELECT e.*, d.dname FROM emp e RIGHT JOIN dept d ON e.deptno=d.deptno; 5. 列出最低薪金大於15000的各種工作及從事此工作的員工人數。 SELECT e.job,COUNT(*) AS 員工人數 FROM emp e GROUP BY job HAVING MIN(sal)>15000 6. 列出在銷售部工作的員工的姓名,假定不知道銷售部的部門編號。 SELECT e.ename FROM emp e WHERE (SELECT e.deptno FROM dept WHERE dname='銷售部' ) 7. 列出薪金高於公司平均薪金的所有員工信息,所在部門名稱,上級領導,工資等級。 SELECT e.*,d.dname,s.grade FROM 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.hisal WHERE e.sal > (SELECT AVG(sal) FROM emp) 8.列出與龐統從事相同工作的所有員工及部門名稱。 SELECT e.*, d.dname FROM emp e, dept d WHERE e.deptno=d.deptno AND e.job=(SELECT job FROM emp WHERE ename='龐統'); 9.列出薪金高於在部門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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM