25道入门级SQL查询语句练习题

时间:2021-02-24 00:34:13

25道SQL查询语句练习题

1.查询部门30中的所有员工。
SELECT * FROM emp WHERE deptno = 30;

2.查询所有办事员(clerk)的姓名,编号和部门编号。
SELECT * FROM emp WHERE job = UPPER(‘clerk’);

3.查询出佣金高于薪水的员工。
SELECT * FROM emp WHERE comm > sal;

4.找出佣金高于薪水60%的员工。
SELECT * FROM emp WHERE comm > sal*0.6;

5.找出部门10中所有经理(manager)和部门20中所有办事员(clerk)的详细资料。
SELECT * FROM emp WHERE (deptno = 10 AND job = UPPER(‘manager’)) OR  (deptno = 20 AND job = UPPER(‘clerk’));

6.找出部门10中所有经理(manager),部门20中所有办事员(clerk),既不是经理又不是办事员但其薪金大于或者等于2000的所有员工的详细信息。
SELECT * FROM emp
WHERE
   (deptno = 10 AND job = UPPER(‘manager’)) OR  (deptno = 20 AND job = UPPER(‘clerk’))
   OR (job NOT IN (‘MANAGER’,'CLERK’) AND sal >= 2000);

7.找出收取佣金的员工的不同工作
SELECT DISTINCT job FROM emp WHERE comm IS NOT NULL;

8.找出不收取佣金,或收取的佣金低于100的员工
SELECT * FROM emp WHERE comm IS NULL OR comm<100;

9.找出各月倒数第3天受雇佣的员工
SELECT * FROM emp WHERE LAST_DAY(hiredate)-2 = hiredate;

10.找出早于12年前受雇佣的员工
SELECT * FROM emp WHERE MONTHS_BETWEEN(SYSDATE,hiredate)/12>12;

11.以首字母大写的方式显示所有员工的姓名
SELECT INITCAP(ename) FROM emp ;

12.显示正好为5个字符的员工的姓名
SELECT ename FROM emp WHERE LENGTH(ename)=5;

13.显示姓名中不带有”R”的员工姓名
SELECT ename FROM emp WHERE  ename NOT LIKE ‘%R%’;

14.显示所有员工姓名的前三个字符
SELECT SUBSTR(ename,1,3) FROM emp ;

15.显示所有员工姓名,用a”替换”A”
SELECT REPLACE(ename,’A',’a') FROM emp;

16.显示满10年服务年限的员工姓名和受雇佣日期
SELECT ename,hiredate FROM emp WHERE MONTHS_BETWEEN(SYSDATE,hiredate)/12>10;

17.显示员工的详细资料,按名字排序
SELECT * FROM emp ORDER BY ename;

18.显示员工的姓名和受雇佣日期,根据其服务年限,将最老的员工排在最前面。
SELECT ename,hiredate FROM emp ORDER BY hiredate;

19.显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序。
SELECT ename,job,sal FROM emp ORDER BY job DESC,sal ;

20.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月份排序,若月份相同则将年份最早员工的排在前面。
SELECT ename,TO_CHAR(hiredate,’yyyy’) year,TO_CHAR(hiredate,’mm’) month
FROM emp ORDER BY month ,year ;

21.显示所在月为30天的情况所有员工的日薪金,忽略余数
SELECT ename, ROUND(sal/30) FROM emp;

22.找出在任何年份的2月受聘的所有员工
SELECT * FROM emp where TO_CHAR(hiredate,’mm’)=’02′;

23.对于每个员工,显示其加入公司的天数
SELECT ROUND(SYSDATE – hiredate) FROM emp ;

24.显示姓名字段任何位置含”A”的员工姓名
SELECT ename FROM emp WHERE ename LIKE ‘%A%’;

25.以年月的方式显示所有员工的服务年限
SELECT ename ,TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)/12) year,
TRUNC(MOD(MONTHS_BETWEEN(SYSDATE,hiredate),12)) month
FROM emp ;

转载请保留 老王java社区原创