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社区原创