2 单表
1. 查找部门30中员工的详细信息。
SELECT * FROM EMP WHERE DEPTNO = 30;
2. 找出从事clerk工作的员工的编号、姓名、部门号。
SELECT EMPNO,ENAME,DEPTNO FROM EMP WHERE JOB = ‘CLERK’;
3. 检索出奖金多于基本工资的员工信息。
SELECT * FROM EMP WHERE COMM > SAL;
4. 检索出奖金多于基本工资60%的员工信息。
SELECT * FROM EMP WHERE COMM > SAL * 0.6;
5. 找出10部门的经理、20部门的职员 的员工信息。
SELECT * FROM EMP WHERE DEPTNO=10 AND JOB=‘MANAGER’ OR DEPTNO=20 AND JOB=‘CLERK’;
6. 找出10部门的经理、20部门的职员 或者既不是经理也不是职员但是工资高于2000元的员工信息。
SELECT * FROM EMP WHERE (DEPTNO=10 AND JOB=‘MANAGER’ OR DEPTNO=20 AND JOB=‘CLERK’) OR (JOB!=‘MANAGER’ AND JOB!=‘CLERK’ AND SAL>2000);
7. 找出获得奖金的员工的工作。
SELECT * FROM EMP WHERE COMM;
8. 找出奖金少于100或者没有获得奖金的员工的信息。
SELECT * FROM EMP WHERE COMM<100 OR COMM IS NULL;
9. 找出姓名以A、B、S开始的员工信息。
SELECT * FROM EMP WHERE ENAME LIKE ‘A%’ OR ENAME LIKE ‘B%’ OR ENAME LIKE ‘S%’;
10. 找到名字长度为6个字符的员工信息。
SELECT * FROM EMP WHERE LENGTH(ENAME)=6;
11. 名字中不包含R字符的员工信息。
SELECT * FROM EMP WHERE ENAME NOT LIKE ‘%R%’;
12. 返回员工的详细信息并按姓名排序。
SELECT * FROM EMP ORDER BY ENAME ASC;
13. 返回员工的信息并按工作降序工资升序排列。
SELECT * FROM EMP ORDER BY JOB DESC, SAL ASC;
14. 计算员工的日薪(按30天)。
SELECT ENAME,ROUND(SAL/30, 2) AS ‘日薪’ FROM EMP;
15. 找出姓名中包含A的员工信息。
SELECT * FROM EMP WHERE ENAME LIKE ‘%A%’;
3 多表
1. 返回拥有员工的部门名、部门号。
SELECT DNAME,DEPTNO FROM DEPT WHERE DEPTNO IN (SELECT DEPTNO FROM EMP WHERE DEPTNO);
2. 工资水平多于smith的员工信息。
SELECT * FROM EMP WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME=‘SMITH’);
3. 返回员工和所属经理的姓名。
SELECT E.ENAME, M.ENAME FROM EMP E LEFT OUTER JOIN EMP M ON E.MGR=M.EMPNO;
or    (没有经理是否显示)SELECT E.ENAME, M.ENAME FROM EMP E, EMP M WHERE E.MGR=M.EMPNO;
4. 返回雇员的雇佣日期早于其经理雇佣日期的员工及其经理姓名
SELECT E.ENAME, M.ENAME FROM EMP E LEFT OUTER JOIN EMP M ON E.MGR=M.EMPNO WHERE E.HIREDATE<M.HIREDATE;
5. 返回员工姓名及其所在的部门名称。
SELECT ENAME,DNAME FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO;
6. 返回从事clerk工作的员工姓名和所在部门名称。
SELECT ENAME,DNAME FROM EMP,DEPT WHERE JOB=‘CLERK’ AND EMP.DEPTNO=DEPT.DEPTNO;
7. 返回部门号及其本部门的最低工资。
SELECT DEPTNO,MIN(SAL) FROM EMP GROUP BY DEPTNO;
8. 返回销售部(sales)所有员工的姓名。
SELECT ENAME FROM EMP WHERE DEPTNO=(SELECT DEPTNO FROM DEPT WHERE DNAME=‘SALES’);
9. 返回工资水平多于平均工资的员工。
SELECT * FROM EMP WHERE SAL>(SELECT AVG(SAL) FROM EMP WHERE SAL);
10. 返回与SCOTT从事相同工作的员工。
SELECT * FROM EMP WHERE JOB=(SELECT JOB FROM EMP WHERE ENAME=‘SCOTT’);
 如果不包含自己
 SELECT * FROM EMP WHERE JOB=(SELECT JOB FROM EMP WHERE ENAME=‘SCOTT’) AND ENAME!=‘SCOTT’;11. 返回与30部门员工工资水平相同的员工姓名与工资。
SELECT ENAME,SAL FROM EMP WHERE SAL IN (SELECT SAL FROM EMP WHERE DEPTNO=30);
12. 返回工资高于30部门所有员工工资水平的员工信息。
SELECT * FROM EMP WHERE SAL > ALL(SELECT SAL FROM EMP WHERE DEPTNO=30);
13. 返回部门号、部门名、部门所在位置及其每个部门的员工总数。
SELECT DEPT.DEPTNO,DNAME,LOC,COUNT(EMP.DEPTNO) AS NUMBER FROM DEPT,EMP WHERE DEPT.DEPTNO=EMP.DEPTNO GROUP BY EMP.DEPTNO;
14. 返回员工的姓名、所在部门名及其工资。
SELECT ENAME,DNAME,SAL FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO;
15. 返回员工的详细信息。(包括部门名)
SELECT EMP.*,DEPT.DNAME FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO;
16. 返回员工工作及其从事此工作的最低工资。
SELECT JOB, MIN(SAL) AS SAL FROM EMP GROUP BY JOB;
17. 返回不同部门经理的最低工资。
SELECT DEPT.DEPTNO,ENAME,JOB,MIN(SAL) FROM DEPT,EMP WHERE JOB=‘MANAGER’ GROUP BY EMP.DEPTNO;
18. 计算出员工的年薪,并且以年薪排序。
SELECT ENAME,SAL*12 AS ySalary FROM EMP ORDER BY ySalary ASC;
19. 返回工资处于第四级别的员工的姓名。
SELECT ENAME,SAL FROM EMP WHERE SAL BETWEEN
 (SELECT LOSAL FROM SALGRADE WHERE GRADE=4)
 AND (SELECT HISAL FROM SALGRADE WHERE GRADE=4);20. 返回工资为二等级的职员名字、部门所在地、和二等级的最低工资和最高工资
SELECT ENAME,LOC,SAL,LOSAL,HISAL FROM DEPT,EMP,SALGRADE
 WHERE EMP.DEPTNO=DEPT.DEPTNO AND GRADE=2 AND SAL BETWEEN LOSAL AND HISAL;21. 返回工资为二等级的职员名字、部门所在地、二等级员工工资的最低工资和最高工资
SELECT MIN(SAL),MAX(SAL) FROM DEPT,EMP,SALGRADE
 WHERE EMP.DEPTNO=DEPT.DEPTNO AND GRADE=2 AND SAL BETWEEN LOSAL AND HISAL;22. 工资等级多于smith的员工信息。
SELECT * FROM EMP WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME=‘smith’);