資源描述:
《經(jīng)典sql-高級-實(shí)驗(yàn)三.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、實(shí)驗(yàn)三、1.建立一個(gè)表(表名自定),表結(jié)構(gòu)與EMP相同,沒有任何記錄。createtablemy_empasselect*fromemp;2.用Insert語句輸入5條記錄,并提交。3.?dāng)U大該表的記錄數(shù)到約40條,并使雇員號不重復(fù);每個(gè)雇員都有所屬部門,雇員在同一部門的經(jīng)理是同一人。insert….update…commit4.建立一個(gè)與DEPT表結(jié)構(gòu)和記錄完全相同的新表,并與前項(xiàng)新表建立參照完整性約束。altertablemy_deptadd(constraints1primarykey(deptno));altertablemy_empadd(constraints2for
2、eignkey(deptno)referencesdept(deptno));5.對在‘NEWYORK’工作的雇員加工資,每人加200。6.*如果雇員姓名與部門名稱中有一個(gè)或一個(gè)以上相同的字母,則該雇員的COMM增加500。updatemy_empasetcomm=NVL(comm,0)+500wherea.ename<>(selecttranslate(a.ename,b.dname,CHR(27))frommy_deptbwhereb.deptno=a.deptno);--a.deptno與b.deptno必須有主外鍵連接,否則可能出錯(cuò),為什么?commit;7.刪除部門號
3、為30的記錄,并刪除該部門的所有成員。deletefromempwheredeptno=30;deletefromdeptwheredeptno=30;commit8.新增列性別SEX,字符型。altertableempadd(sexchar(2));9.修改新雇員表中的MGR列,為字符型。該列數(shù)據(jù)必須為空altertableempmodify(mgrvarchar2(20));10.試著去刪除新表中的一個(gè)列。altertablemy_empdrop(comm);實(shí)驗(yàn)四、1.查詢部門號為30的所有人員的管理層次圖。selectlevel,enamefromempconnectb
4、ymgr=priorempnostartwithdeptno=30andjob='MANAGER';2.查詢員工SMITH的各個(gè)層次領(lǐng)導(dǎo)。selectlevel,enamefromempconnectbypriormgr=empnostartwithENAME='SMITH';3.查詢顯示EMP表各雇員的工作類型,并翻譯為中文顯示用decode函數(shù)4.*查詢顯示雇員進(jìn)入公司當(dāng)年是什么屬相年(不考慮農(nóng)歷的年份算法)用decode函數(shù)5.建立一個(gè)視圖myV_emp,視圖包括myEMP表的empno、ename、sal,并按sal從大到小排列。createviewmyV_EMPass
5、electempno,ename,salfromemp;6.定義一個(gè)mySeq,對selectmySeq.nextval,my_emp.*frommy_emp的執(zhí)行結(jié)果進(jìn)行說明。7.定義序列mySeq、myEMP、myV_emp的同義詞,能否用同義詞對上述對象進(jìn)行訪問。8.在myEMP表中建立ename的唯一性索引。9.如何在sql*plus中,運(yùn)行sql的腳本(即后綴為.sql的文件)實(shí)驗(yàn)五、1.觀察下列PL/SQL的執(zhí)行結(jié)果declaresemp%rowtype;beginselect*intosfromempwhereename='KING';DBMS_OUTPUT.PU
6、T_LINE(s.empno
7、
8、s.ename
9、
10、s.job
11、
12、s.sal);END;2.編寫一個(gè)PL/SQL,顯示ASC碼值從32至120的字符。beginforiin32..120loopdbms_output.put_line(chr(i));endloop;end;3.計(jì)算myEMP表中COMM最高與最低的差值,COMM值為空時(shí)按0計(jì)算。declarevar1number;var2number;val_commnumber;beginselectmax(nvl(comm,0))intovar1frommyemp;selectmin(nvl(comm,0))intovar
13、2frommyemp;val_comm:=var1-var2;dbms_output.put_line(val_comm);end;4.根據(jù)表myEMP中deptno字段的值,為姓名為‘JONES’的雇員修改工資;若部門號為10,則工資加100;部門號為20,加200;其他部門加400。declarec1number;c2number;beginselectdeptnointoc1fromempwhereename=’JONES’;ifc1=10thenc2:=100;elsifc1=20t