oracle 有關(guān)emp表的簡單查詢練習題_第1頁
oracle 有關(guān)emp表的簡單查詢練習題_第2頁
oracle 有關(guān)emp表的簡單查詢練習題_第3頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、SQL 練習訓練一1、查詢 dept 表的結(jié)構(gòu)在命令窗口輸入: desc dept;2deptselect * from dept3、檢索 emp 表中的員工姓名、月收入及部門編號select ename 員工姓名,sal 月收入,empno 部門編號 from emp 注意查詢字段用分號隔開。4、檢索 emp 表中員工姓名、及雇傭時間日期數(shù)據(jù)的默認顯示格式為“DD-MM-YY,如果希望使用其他顯示格式(YYYY-MM-DD),那么必須使用 TO_CHAR 函數(shù)進行轉(zhuǎn)換。select ename 員工姓名, hiredate 雇用時間1,to_char(hiredate,YYYY-MM-DD)

2、2 from Oracle日歷。第二個時間是字符型的。易錯點:不要將 YYYY-MM-DD 使用雙引號5、使用 distinct 去掉重復(fù)行。檢索 emp 表中的部門編號及工種,并去掉重復(fù)行。selectdistinctdeptno部門編號,job工種fromemporderdeptno注意 distinct 放的位置from翻譯成漢語就明白了應(yīng)該是:選擇不重復(fù)的部門編號和工種從emp表。而不是:選擇部門編和工種不重復(fù)地從emp表。這還是人話么O(_)O哈哈6、使用表達式來顯示列檢索 emp 表中的員工姓名及全年的月收入select ename(sal+nvl(comm,0)*12from c

3、ommnvl7、使用列別名用姓名顯示員工姓名,用年收入顯示全年月收入。 select ename 員工姓名,sal*12 全年收入 from 8、連接字符串oracle“|”字符串要加入數(shù)字值那么在“|”后可以直接指定數(shù)字,如果在字符串加入字符和日期值,則必須要用單引號。檢索 emp 表,用 is a 這個字符串來連接員工姓名和工種兩個字段select ename| is a |job 他們各自的職位from emp 注意:用的是單引號9、使用 WHERE 子句檢索月收入大于 2000 的員工姓名及月收入。select ename 姓名 ,sal 月薪from emp where sal200

4、010002000select ename,sal,hiredatefrom emp sal between 1000 and 200010、like 的用法:檢索以 S 開頭的員工姓名及月收入。select ename 員工姓名,sal 月收入 from emp where ename likeS%檢索員工姓名中的第三個字符是 A 的員工姓名及月收入。select ename 員工姓名,sal 月收入 from emp where ename likeAlike11、在 WHERE 條件中使用 IN 操作符檢索 emp 表中月收入是 800 的或是 1250 的員工姓名及部門編號select

5、 ename 姓名,deptno 部門編號,sal 工資 from emp where sal in(800,1250)注意:IN 的意思是或者。是 800 或者 1250 而不是表示范圍12WHERE(AND、OR、20CLERKselect * from emp where deptno=20 and job=CLERK 2500MANAGERwhere13、查詢表中是空值的數(shù)據(jù)檢索 emp 表中有提成的員工姓名、月收入及提成。selectename,comm,salfromempwherecommnot null14、使用 ORDER BY 子句,進行排序。emp30按月收入升序、然后按

6、提成降序顯示。select ename 姓名,comm 提成,sal 工資 from emp where deptno=30 order by sal asc,comm descSQL 練習訓練二1200select ename 姓名,sal 工資 from emp where sal12007934select ename 姓名,deptno 部門編號 from emp where empno=7934500012000select ename,salfrom emp where sal not between and 12000注意:不是 is not4.1981-02-011981-05

7、-01(job)用時間,按從早到晚排序.select ename 姓名,job 職位,hiredate 雇傭時間fromempwherehiredatebetweento_date(1981-02-01,YYYY-MM-DD) and to_date(1981-05-01,YYYY-MM-DD)order by hiredate asc 總結(jié):1,要轉(zhuǎn)換為字符類型轉(zhuǎn)換為日期類型否則無法比較2,1981-05-01這個例子很重要2010select ename 姓名,deptno 部門號 from emp where deptno in (20,10)selectename,deptnofrom

8、empwheredeptnoin(20,10) 加不加單引號都可以。那么有什么區(qū)別呢1987select ename 姓名,hiredate 雇傭時間 from emp where to_char(hiredate,YYYY)=1987取出雇用時間的年份且轉(zhuǎn)換為字符形式;然后與1987比較select ename 姓名,hiredate 雇傭時間 from emp whereto_char(hiredate,MM)=04select ename 姓名,hiredate 雇傭時間 from emp to_char(hiredate,MM)=4前者是可以的,后者不可以jobselect ename

9、 姓名,job 工作 from emp where mgr is null選擇公司中有獎金 (COMM0)按工資逆排序,獎金比例逆排序.select ename 姓名,sal 工資,comm 獎金比例from emp where comm is not null and comm !=0 order by sal desc,comm descaselect ename 姓名from emp where ename=A select ename 姓名from emp where ename like 總結(jié):1,前者是錯的,這樣定死了:一共只有三個字母,且最后一個是 A2,后者正確。表示 A 后的

10、不限定這個例子也很重要,可以用于模糊查詢oracle 有關(guān) emp 表的簡單查詢練習題scott/tigerempdeptemp(empno/ename/job/mgr/hiredate雇日期/sal/comm/deptnodept(deptno/dname/loc 薪金 傭金-1、選擇部門 30 中的雇員SELECT * FROM emp WHERE deptno = 30;-2、列出所有辦事員的姓名、編號和部門SELECT ename,empno,deptno from emp WHERE UPPER(job)=CLERK-3、找出傭金高于薪金的雇員SELECT * FROM emp WH

11、ERE NVL(comm,0)sal-4、找出傭金高于薪金 60%的雇員SELECT * FROM emp WHERE NVL(comm,0)sal*0.6-5、找出部門 10 中所有經(jīng)理和部門 20 中的所有辦事員的詳細資料Select*fromempwhere(deptno=10ANDjob=MANAGER)OR(deptno=20 AND job=CLERK);-61020辦事員但其薪金=2000Select * from emp where deptno=10 AND OR deptno=20 AND job=CLERKOR job!= MANAGER AND sal=2000;-7、

12、找出收取傭金的雇員的不同工作Select distinct job from emp where comm IS NOT NULL ;-8、找出不收取傭金或收取的傭金低于 100 的雇員Select * from emp where comm IS NULL OR NVL(comm,0)25;-11、顯示只有首字母大寫的所有雇員的姓名SELECT * FROM emp where ename=INITCAP(ename);SELECT * FROM emp WHERE SUBSTR(ename,1,1)=UPPER(SUBSTR(ename,1,1)AND SUBSTR(ename,2,len

13、gth-1)=LOWER(SUBSTR(ename,2,length-1);-126SELECT * FROM emp WHERE LENGTH(ename)=6;-13、顯示不帶有R的雇員姓名 not likeSELECT * FROM emp WHERE ename NOT LIKE %R%;-14、顯示所有雇員的姓名的前三個字符 substr SELECT SUBSTR(ename,1,3) short_name FROM emp;-15、顯示所有雇員的姓名,用 a 替換所有A replaceSELECT REPLACE(ename,A,a) FROM emp;-1610add_mont

14、hs SELECT ename, ADD_MONTHS(hiredate,12*10) ten_years FROM -17、顯示雇員的詳細資料,按姓名排序SELECT * FROM emp ORDER BY ename;-18、顯示雇員姓名,根據(jù)其服務(wù)年限,將最老的雇員排在最前面 ASC SELECT ename,hiredate FROM emp ORDER BY hiredate;-19、顯示所有雇員的姓名、工作和薪金,按工作的降序順序排序,而工作相同時按薪金升序SELECT ename,job,sal FROM emp ORDER BY job DESC, sal;-20排序,將最早年

15、份的項目排在最前面 ASCSELECT ename,TO_CHAR(hiredate,YYYY)|年 year, TO_CHAR(hiredate,MM) |月 month FROM emp ORDER BY TO_CHAR(hiredate,MM), TO_CHAR(hiredate,YYYY);-2130SELECT ename,sal,ROUND(sal/30) FROM emp;-22、找出在(任何年份的)2 月受聘的所有雇員SELECT * FROM emp WHERE TO_CHAR(hiredate,MM)=02;-23、對于每個雇員,顯示其加入公司的天數(shù)SELECT TRUNC(sysdate-hiredate) DAYS FROM emp;-24、顯示姓名字段的任何位置,包含 A 的所有雇員的姓名 instrSELECTDECODE(INSTR(ename,A),0,INSTR(ename,A)FROM emp;-25、以年、月和日顯示所有雇員的服務(wù)年限SELECT TRUNC(MONTHS_BETWEEN(s

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論