Oracle数据库学习第一天对应练习题
1、查询工资大于12000的员工姓名和工资
SELECT ENAME ,SAL FROM EMP WHERE SAL>12000;
2、查询员工号为176的员工的姓名和部门号
SELECT LAST_NAME,DEPARTNUMBER FROM EMP WHERE EMNUMBER=176;
3、选择工资不在5000到12000的员工的姓名和工资
SELECT ENAME,SALARY FROM EMP WHERE SALARY<5000 OR SALARY>12000;
4、选择雇用时间在1998-02-01到1998-05-01之间的员工姓名,job_id和雇用时间
SELECT ENAME,IOB_ID,HIREDATE FROM EMP WHERE HIREDATE BETWEEN ‘1-2月 -1998’ AND ‘1-5月 -1998’;
5、选择在20或50号部门工作的员工姓名和部门号
SELECT ENAME,DEPAR_ID FROM EMP WHERE DEPAR_ID in(20,50);
6、选择在1994年雇用的员工的姓名和雇用时间
SELECT ENAME ,HIRE_DATE FROM EMP WHERE HIRE_DATA LIKE ‘%-1994’;
%代表任意个字符,_代表一个字符。字符和日期应在单引号中。
7、选择公司中没有管理者的员工姓名及job_id
SELECT ENAME,JOB_ID FROM EMP WHERE MANAGER IS NULL;
8、选择公司中有奖金的员工姓名,工资和奖金级别
SELECT ENAME,SALARY,COMM_EVEL FROM EMP WHERE COMM_LEVEL IS NOT NULL;
9、选择员工姓名的第三个字母是a的员工姓名
SELECT ENAME FROM EMP WHERE ENAME LIKE ‘__a%’;
10、选择姓名中有字母a和e的员工姓名
SELECT ENAME FROM EMP WHERE ENAME LIKE ‘%a%’ AND ’%e%’;
11、显示系统时间
SELECT TO_CHAR(SYSDATE,’YYYY-MM-DD HH24:MI:SS’) FROM DUAL;
12、查询员工号,姓名,工资,以及工资提高百分之20%后的结果(new salary)
SELECT ENUMBER,ENAME,SALARY,SALARY*1.2 “new salary” FROM EMP ;
13、将员工的姓名按首字母排序,并写出姓名的长度(length)
SELECT ENAME,LENGTH(ENAME) FROM EMP ORDER BY ENAME;
14、查询各员工的姓名,并显示出各员工在公司工作的月份数(worked_month)。
SELECT ENAME,MONTHS_BETWEEN(SYSDATE,HIRE_DATE) worker_month FROM EMP;
15、查询员工的姓名,以及在公司工作的月份数(worked_month),并按月份数降序排列
SELECT ENAME,MONTHS_BETWEEN(SYSDATE,HIRE_DATE) worked_month FROM EMP ORDER BY worked_month desc;
16、做一个查询,产生下面的结果
<last_name> earns <salary> monthly but wants <salary*3>
Dream Salary
King earns $24000 monthly but wants $72000
SELECT ENAME || ’earns’ || SALARY ||’monthly but wants’ || SALARY*3 FROM EMP;
‘||’是连接符
17、使用decode函数,按照下面的条件:
job grade
AD_PRES A
ST_MAN B
IT_PROG C
SA_REP D
ST_CLERK E
Others F
产生下面的结果
Last_name Job_id Grade
king AD_PRES A
SELECT LAST_NAME, JOB_ID,DECODE(JOB_ID, ’AD_PRES’ , ’A’ , ’ST_MAN’, ‘B’ ,’IT_PROG’ , ‘C’ , ‘SA_REP’ , ‘D’ , ‘ST_CLERK’ , ‘E’, ‘F’) GRADE FROM EMP ;
18、将第17题的查询用case函数再写一遍。
SELECT LAST_NAME , JOB_ID , CASR JOB_ID WHEN ‘AD_PRES’ THEN ‘A’
WHEN ‘ST_MAN’ THEN ‘B’
WHEN ‘IT_PROG’ THEN ‘C’
WHEN ‘SA_REP ’ THEN ‘D’
WHEN ‘ST_CLERK’ THEN ‘E’
ELSE ‘F’
END
FROM EMP;
19、查询公司员工工资的最大值,最小值,平均值,总和
SELECT MAX(SALARY),MIN(SALARY),AVE(SALARY),SUM(SALARY) FROM EMP;
20、查询各job_id的员工工资的最大值,最小值,平均值,总和
SELECT JOB_ID , MAX(SALARY) , MIN(SALARY) , AVE(SALARY) , SUM(SALARY) FROM EMP GROUP BY JOB_ID;
21、选择具有各个job_id的员工人数
SELECT JOB_ID,COUNT(ENAME) FROM EMP GROUP BY JOB_ID;
22、查询员工最高工资和最低工资的差距(DIFFERENCE)
SELECT MAX(SALARY)-MIN(SALARY) DIFFERENCE FROM EMP;