Oracle資料庫學習第一天對應練習題
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;