Oracle的sql語句練習(xí)題與標(biāo)準(zhǔn)答案_第1頁
Oracle的sql語句練習(xí)題與標(biāo)準(zhǔn)答案_第2頁
Oracle的sql語句練習(xí)題與標(biāo)準(zhǔn)答案_第3頁
Oracle的sql語句練習(xí)題與標(biāo)準(zhǔn)答案_第4頁
Oracle的sql語句練習(xí)題與標(biāo)準(zhǔn)答案_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Oracle的sql語句練習(xí)題含答案(二)Oracle_SQL練習(xí)題11.選擇部門30中的所有職員.2.列出所有辦事員(CLERK)的姓名,編號和部門編號.3.找出傭金高于薪金的職員.4.找出傭金高于薪金的60%的職員.5.找出部門10中所有經(jīng)理(MANAGER)和部門20中所有辦事員(CLERK)的詳細(xì)資料.6.找出部門10中所有經(jīng)理(MANAGER),部門20中所有辦事員(CLERK),既不是經(jīng)理又不是辦事員但其薪金大于或等于2000的所有職員的詳細(xì)資料.7.找出收取傭金的職員的不同工作.8.找出不收取傭金或收取的傭金低于100的職員.9.找出各月倒數(shù)第3天受雇的所有職員.10.找出早于1

2、2年前受雇的職員.11.以首字母大寫的方式顯示所有職員的姓名.12.顯示正好為5個字符的職員的姓名.13.顯示不帶有R的職員的姓名.14.顯示所有職員姓名的前三個字符.15.顯示所有職員的姓名,用a替換所有A16.顯示滿10年服務(wù)年限的職員的姓名和受雇日期.17.顯示職員的詳細(xì)資料,按姓名排序.18.顯示職員的姓名和受雇日期,依照其服務(wù)年限,將最老的職員排在最前面.19.顯示所有職員的姓名、工作和薪金,按工作的降序排序,若工作相同則按薪金排序.20.顯示所有職員的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同則將最早年份的職員排在最前面.21.顯示在一個月為30天的情況所有職員的

3、日薪金,忽略余數(shù).22.找出在(任何年份的)2月受聘的所有職員。23.關(guān)于每個職員,顯示其加入公司的天數(shù).24.顯示姓名字段的任何位置包含A的所有職員的姓名.25.以年月日的方式顯示所有職員的服務(wù)年限. 答案:1.select ename,job,mgr,hiredate,sal,comm ,deptno from emp where deptno=30;2.select ename,empno,deptno from emp where job=CLERK;3.select * from emp where commsal;4.select *from empwhere commsal*0.

4、6;5.select empno ,ename, job,hiredate,sal,comm,deptnofrom empwhere( job=MANAGER and deptno=10)or( job=CLERK and deptno=20);6.select empno,ename,job, hiredate,sal, deptnofrom empwhere ( job=MANAGER and deptno=10)or( job=CLERK and deptno=20)or(job MANAGER and jobCLERK) and sal=2000);7.select distinct

5、ename,job,commfrom empwhere NVL(comm,0)0;注意假如像上面如此寫,就 job ename comm 3個同時不同的都列出來正確的是:select distinct jobfrom empwhere NVL(comm,0)0;8.select ename,comm. from emp where NVL(comm,0)=0 or NVL(comm,0)100;假如按上面的寫法就重復(fù)了,直接能夠?qū)懗蓅elect ename,commfrom empwhere NVL(comm,0)1211.select initcap(ename) name ,job, hi

6、redatefrom emp;12. select ename,job,hiredate from emp where length(ename)=5;13 select ename, job from emp where ename not like %R%;14.select substr(ename, 1,3) name,job,hiredate from emp;15select replace(ename, A,a) name,job,hiredate from emp;16select ename, job, hiredate from empwhere months_betwee

7、n(sysdate,hiredate)/12=10;17. select * from emp order by ename;18.select ename, hiredate from emp order by hiredate desc;19.select ename,job, sal from emp order by job desc, sal asc;20.select ename, to_char(hiredate,yyyy) year, to_char(hiredate,mm) monthsfrom emporder by months, year asc;21.select e

8、name, sal/30 dailysalfrom emp;22. select ename, hiredatefrom empwhere to_char(hiredate,mm)=02;23. select ename,sysdate-hiredate 天數(shù) from emp;24.select ename from emp where instr(ename,A,1)0;25. select ename, to_char(hiredate,yyyy/mm/dd) from emp;-26.列出至少有一個職員的所有部門. selectdnamefromemp,deptwhereemp.dep

9、tno=dept.deptnogroupbydname; selectdistinctdnamefromemp,deptwhereemp.deptno=dept.deptno; -講明:(1)select中出現(xiàn)的字段一定要出現(xiàn)在groupby中; -(2)假如select中出現(xiàn)的字段不出現(xiàn)在groupby中,則一定要出現(xiàn)在select的聚合函數(shù)中,關(guān)于想出現(xiàn)的字段,可用max()或min()。 -(3)默認(rèn)的情況是按groupby中的字段來排序,假如要用orderby來自己排序,則orderby后的字段一定是groupby后的字段,不能是聚合函數(shù)的字段 -27.列出薪金比“SMITH”多的所有

10、職員. selectename,salfromempwheresal(selectsalfromempwhereupper(ename)=SMITH); -28.列出所有職員的姓名及其直接上級的姓名. selecta.ename,b.enamemgrnamefromempa,empbwherea.mgr=b.empno; -29.列出受雇日期早于其直接上級的所有職員 selecte.ename,m.enamefromempe,empmwheree.mgr=m.empnoand(e.hiredate1500; -33.列出在部門“SALES”(銷售部)工作的職員的姓名,假定不明白銷售部的部門編號

11、 selectenamefromemp,deptwhereemp.deptno=dept.deptnoanddname=SALES; -34.列出薪金高于公司平均薪金的所有職員 selectename,salfromempwheresal(selectavg(sal)fromemp); -35.列出與“SCOTT”從事相同工作的所有職員 -SCOTT從事一種工作 selectenamefromempwherejob=(selectjobfromempwhereupper(ename)=SCOTT); -SCOTT從事多種工作 selectename,jobfromempwherejobin(s

12、electjobfromempwhereupper(ename)=SCOTT); -36.列出薪金等于部門30中職員的薪金的所有職員的姓名和薪金 selectename,salfromempwheresalin(selectsalfromempwheredeptno=30); -37.列出薪金高于在部門30工作的所有職員的薪金的職員姓名和薪金 selectename,salfromempwheresal(selectmax(sal)fromempwheredeptno=30); -38.列出在每個部門工作的職員數(shù)量、平均工資和平均服務(wù)期限 selectdeptno部門號,count(ename

13、)職員數(shù)量,avg(sal+nvl(comm,0)平均工資,trunc(avg(sysdate-hiredate)平均服務(wù)期限(天)fromempgroupbydeptno; -39.列出所有職員的姓名、部門名稱和工資 selectename,dname,sal+nvl(comm,0)fromemp,deptwhereemp.deptno=dept.deptno; -40.列出從事同一種工作但屬于不同部門的職員的一種組合 selectdistincte.deptno,e.jobfromempe,empmwheree.deptno!=m.deptnoande.job=m.joborderbye.

14、job; -41.列出所有部門的詳細(xì)信息和部門人數(shù) selectdept.*,(selectcount(ename)fromempwhereemp.deptno(+)=dept.deptno)人數(shù)fromdept; -42.列出各種工作的最低工資 selectjob,min(sal+nvl(comm,0)最低工資fromempgroupbyjob; -43.列出各個部門的MANAGER(經(jīng)理)的最低薪金 selectmin(sal+nvl(comm,0)fromempwhereupper(job)=MANAGERgroupbydeptno; -顯示部門名稱 selectdname,min(sa

15、l+nvl(comm,0)fromemp,deptwhereemp.deptno=dept.deptnoandupper(job)=MANAGERgroupbydname; -44.列出所有職員的年工資,按年薪從低到高排序 selectename,to_char(sal+nvl(comm,0)*12,9999,9999.00)年工資fromemporderby2; -45.顯示各部門職員薪金最高的前2名 select*from(selectename,deptno,sal,row_number()over(partitionbydeptnoorderbysaldesc)rfromemp)whe

16、rer=2-46.顯示薪金最高的3位職員 select*from(selectename,sal,dense_rank()over(orderbysaldesc)rfromemp)wherer(selectavg(sal)fromemppwheree.deptno=p.deptno); -52.給所有10部門的經(jīng)理(MANAGER)和20部門的職員(CLERK),增加薪金10%。 updateempsetsal=sal*(1+0.1)where(deptno=10andupper(job)=MANAGER)or(deptno=20andupper(job)=CLERK); -53.刪除DEPT

17、中沒有職員的部門。 deletefromdeptwheredeptnonotin(selectdistinctdeptnofromemp); -54.刪除雇傭年限低于20年的職員。 deletefromempwheretrunc(sysdate-hiredate)2850;4. 查詢工資不在1500到2850之間的所有雇員姓名和工資。 select ename, sal from emp where sal not between 1500 and 2850;5. 查詢10號部門和30號部門工資超過1500的雇員姓名和工資。 select ename, sal from emp where s

18、al (select avg(sal) from emp);19. 查詢工資、獎金與SCOTT完全相同的所有職員的姓名、工資和獎金。 select ename,sal, comm from emp where (sal,nvl(comm,-1) in (select sal,nvl(comm,-1) from emp where ename=SCOTT) ;20. 查詢81年入職的職員 select * from emp where to_char(hiredate, yy)= 81;21. 按年月日查詢職員信息 select to_char(hiredate, yyyy-mm-dd )fro

19、m emp;22. 向DEPT表中插入一條數(shù)據(jù),要求:部門號為50,部門名稱為ADMINISTRATOR,部門位置為BOSTON。 Insert into dept values(50, ADMINISTRATOR,BOSTON);23. 向EMP表中插入一條數(shù)據(jù),要求:職員號為2000,姓名為JOHN,工資為1000,入職時刻為2003年4月7日,部門號為30號。 Insert into emp (empno,ename,sal,hiredate,deptno) values(2000, JOHN,1000, 07-4月-03,30);24. 給10號部門的每個雇員增加10%的工資。然后提交

20、事務(wù)。 Update emp set sal=sal*1.1 where deptno=10; commit25. 刪除50號部門。然后回滾事務(wù)。 Delete from dept where deptno=50; Rollback;新建一張學(xué)員信息表(student),要求:1. 字段如下:學(xué)號(sid),姓名(name),性不(sex),年齡(age),地址(address)2. 分不為字段添加約束:學(xué)號為主鍵,姓名為非空,性不為檢查約束,年齡為檢查約束,地址為默認(rèn)約束3. 為表建立自增值(sid), 建議初始值從為 1001, 增量為 1. 4. 插入記錄新建一張課程表(course),要求:1. 字段如下:課程編號(cid),課程名稱(subject)2. 分不為字段添加約束:課程編號為主鍵,課程名稱為非空3. 為

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論