1. 程式人生 > >Oracle資料庫學習第一天對應練習題

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;