資源描述:
《Oracle數(shù)據(jù)庫基礎(chǔ)及應(yīng)用實驗八.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、實驗8Oracle數(shù)據(jù)庫綜合練習(xí)一.實驗?zāi)康模?)熟悉SQL*PLUS常用命令的功能和使用方法(2)掌握SQL語言中查詢語句的功能和使用方法(3)學(xué)會對ORACLE數(shù)據(jù)表進(jìn)行用戶權(quán)限等相關(guān)數(shù)據(jù)控制命令。。二.實驗內(nèi)容1.創(chuàng)建和修改表(1)登錄scott賬戶,建立一個表(表名自定),表結(jié)構(gòu)與EMP相同。createtablemy_empasselect*fromemp;(2)用INSERT語句輸入1條記錄,并提交。insertintomy_empvalues(200,'Winty','CLERK',300
2、,to_date('6-20-2014','mm-dd-yyyy'),1500,500,40);commit;(3)建立一個與DEPT表結(jié)構(gòu)和記錄完全相同的新表,并與前項新表建立參照完整性約束。createtablemy_deptasselect*fromdept;altertablemy_deptaddconstraints1primarykey(deptno);altertablemy_empaddconstraints2foreignkey(deptno)referencesdept(deptno
3、);(4)對在'BOSTON'工作的雇員加工資,每人加200。updatemy_empsetsal=sal+200wheremy_emp.deptnoin(selectdeptnofrommy_deptwheremy_dept.loc='BOSTON');2.查詢技術(shù)(1)查詢部門號為40的所有人員。select*frommy_empa,my_deptbwherea.deptno=b.deptnoandb.deptno=40;(2)建立一個視圖v_my_emp,視圖包括my_emp表的empno、ena
4、me、sal,并按sal從大到小排列。createviewV_my_empasselectempno,ename,salfromemporderbysaldesc;(3)在my_emp表中建立ename的唯一性索引。altertablemy_empaddconstraintsfdsunique(ename);測試截圖如下:3.計算emp表中COMM最高與最低的差值,COMM值為空時按0計算。Declarevar1number;var2number;val_commnumber;beginselectma
5、x(nvl(comm,0))intovar1fromemp;selectmin(nvl(comm,0))intovar2fromemp;val_comm:=var1-var2;dbms_output.put_line(val_comm);end;4.插入my_emp表中的數(shù)據(jù)記錄,考慮可能出現(xiàn)的例外,并提示。(主要的例外提示:唯一性索引值重復(fù)DUP_VAL_ON_INDEX)Begininsertintomy_empvalues(7369,'winty','CLERK',7902,to_date('17
6、-12-80','dd-mm-yy'),800,NULL,20);exceptionwhenDUP_VAL_ON_INDEXthendbms_output.put_line('記錄重復(fù)');whenothersthennull;end;5.在my_emp表中利用簡單循環(huán)統(tǒng)計并輸出各個部門的平均工資(用游標(biāo)來完成)DECLARECURSORc_dept_statISSELECTdeptno,avg(sal)avgsalFROMmy_empGROUPBYdeptno;v_deptc_dept_stat%RO
7、WTYPE;BEGINOPENc_dept_stat;LOOPFETCHc_dept_statINTOv_dept;EXITWHENc_dept_stat%NOTFOUND;DBMS_OUTPUT.PUT_LINE(v_dept.deptno
8、
9、''
10、
11、v_dept.avgsal);ENDLOOP;CLOSEc_dept_stat;END;6.建立一個存儲過程,根據(jù)輸入的部門編號輸出該部門的名稱和位置,如果部門不存在,提示'不存在該部門!'信息。創(chuàng)建存儲過程:CREATEORREPLACEPROCEDU
12、REget_dept(p_deptnomy_dept.deptno%TYPE,dnameOUTmy_dept.dname%TYPE,locOUTmy_dept.loc%TYPE)ISBEGINSELECTdname,locINTOdname,locFROMmy_deptWHEREdeptno=p_deptno;EXCEPTIONWHENNO_DATA_FOUNDTHENdbms_output.put_line('不存在該部門!');END;