![oracle實驗指導(dǎo)書之全本_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/13/8b401b41-fadc-4108-95a5-01621007918a/8b401b41-fadc-4108-95a5-01621007918a1.gif)
![oracle實驗指導(dǎo)書之全本_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/13/8b401b41-fadc-4108-95a5-01621007918a/8b401b41-fadc-4108-95a5-01621007918a2.gif)
![oracle實驗指導(dǎo)書之全本_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/13/8b401b41-fadc-4108-95a5-01621007918a/8b401b41-fadc-4108-95a5-01621007918a3.gif)
![oracle實驗指導(dǎo)書之全本_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/13/8b401b41-fadc-4108-95a5-01621007918a/8b401b41-fadc-4108-95a5-01621007918a4.gif)
![oracle實驗指導(dǎo)書之全本_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/13/8b401b41-fadc-4108-95a5-01621007918a/8b401b41-fadc-4108-95a5-01621007918a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Oracle數(shù)據(jù)庫實驗指導(dǎo)段華斌 編著計算機與通信工程系實驗一實驗名稱:數(shù)據(jù)庫的管理實驗學(xué)時:2實驗?zāi)康模?)了解Oracle數(shù)據(jù)庫的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)。2)熟悉Oracle的命令操作環(huán)境SQL*PLUS。3)了解啟動和關(guān)閉數(shù)據(jù)庫的不同方式及其優(yōu)缺點。4)熟悉掌握各種啟動、關(guān)閉方式。實驗內(nèi)容及步驟:1、 SQL*Plus的啟動與關(guān)閉(一)SQL*Plus的啟動當?shù)卿浀讲僮飨到y(tǒng)后,有三種方法啟動SQL*Plus。方法一: (1)執(zhí)行“開始”“程序”“Oracle OraDb11g_home1”“應(yīng)用程序開發(fā)”“SQL Plus”命令,打開SQL Plus窗口,顯示登錄界面。 (2)在登錄界面中將
2、提示輸入用戶名,根據(jù)提示輸入相應(yīng)的用戶名和口令(例如system和admin)后按Enter鍵,SQL*Plus將連接到默認數(shù)據(jù)庫。 (3)連接到數(shù)據(jù)庫之后,顯示SQL提示符,可以輸入相應(yīng)的SQL命令。方法二: (1)執(zhí)行“開始”“程序”“附件”“命令提示符”,打開命令提示符窗口。 (2)輸入命令:Sqlplus / nolog Connect sys/口令 as sysdba方法三: (1)執(zhí)行“開始”“程序”“附件”“命令提示符”,打開命令提示符窗口。 (2)輸入命令:sqlplus 用戶名/口令 as sysdba。(二)斷開與數(shù)據(jù)庫的連接 SQLDISCONNECT(三)退出SQL*P
3、lusSQLEXIT或:SQLQuit(四)啟動sqlplus,可能的故障ORA-12560 造成ORA-12560: TNS: 協(xié)議適配器錯誤的問題的原因有三個: (1)監(jiān)聽服務(wù)沒有起起來。windows平臺個一如下操作:開始-程序-管理工具-服務(wù),打開服務(wù)面板,啟動TNSlistener服務(wù)。 (2)database instance沒有起起來。windows平臺如下操作:開始-程序-管理工具-服務(wù),打開服務(wù)面板,啟動oracleserviceXXXX,XXXX就是你的database SID. (3)進入sqlplus前,在command line下輸入 set oracle_sid=X
4、XXX,XXXX就是你的database SID。2、 使用shutdown命令關(guān)閉數(shù)據(jù)庫練習(xí)使用shutdown命令關(guān)閉數(shù)據(jù)庫實例,分別按以下方式啟動數(shù)據(jù)庫實例。 (1)正常關(guān)閉。等待當前所有已連接的用戶斷開與數(shù)據(jù)庫的連接,然后關(guān)閉數(shù)據(jù)庫。正常關(guān)閉的語句如下: SHUTDOWN NORMAL (2)立即關(guān)閉?;赝嘶顒邮聞?wù)處理并斷開所有已連接的用戶,然后關(guān)閉數(shù)據(jù)庫。 立即關(guān)閉語句如下: SHUTDOWN IMMEDIATE (3)事務(wù)關(guān)閉:完成事務(wù)處理后斷開所有已連接的用戶,然后關(guān)閉數(shù)據(jù)庫。事務(wù)處理關(guān)閉語句如下: SHUTDOWN TRANSACTIONAL (4)中止關(guān)閉:中止數(shù)據(jù)庫實例,
5、立即關(guān)閉數(shù)據(jù)庫。中止關(guān)閉的語句如下: SHUTDOWN ABORT3、 使用startup命令啟動數(shù)據(jù)庫練習(xí)使用STARTUP命令啟動數(shù)據(jù)庫實例,分別按以下方式啟動數(shù)據(jù)庫實例。 (1)啟動數(shù)據(jù)庫實例時不裝載數(shù)據(jù)庫。執(zhí)行此操作的命令如下: STARTUP NOMOUNT (2)啟動數(shù)據(jù)庫實例,裝載數(shù)據(jù)庫,但不打開數(shù)據(jù)庫。通常在數(shù)據(jù)庫維護時執(zhí)行此操作,對應(yīng)的命令如下:STARTUP MOUNT (3)啟動后限制對數(shù)據(jù)庫實例的訪問。執(zhí)行此操作的命令如下:STARTUP RESTRICT (4)強制實例啟動。在遇到特殊異常的情況時,可以強制啟動實例。強制啟動實例的語句如下: STARTUP FORCE
6、4.改變數(shù)據(jù)庫的狀態(tài)(1)裝載數(shù)據(jù)庫實例。 在執(zhí)行某些管理操作時,數(shù)據(jù)庫必須啟動、裝載一個實例,但此時數(shù)據(jù)庫處于關(guān)閉狀態(tài)。 ALTER DATABASE MOUNT(2)打開已關(guān)閉的數(shù)據(jù)庫。 ALTER DATABASE OPEN(3)以只讀方式打開數(shù)據(jù)庫。 ALTER DATABASE OPEN READ ONLY思考題:1、在數(shù)據(jù)庫的nomount、mount、open三種模式下,分別打開數(shù)據(jù)庫的什么文件?2、當關(guān)閉數(shù)據(jù)庫時使用shutdown命令,好久沒有關(guān)閉,隨即將“命令提示符”窗口關(guān)閉,之后重新“啟動命令提示符”并登錄SQL*PLUS,使用shutdown immediate關(guān)閉數(shù)據(jù)
7、庫出現(xiàn)如下問題如何解決? ORA-24324: 未初始化服務(wù)句柄 ORA-24323: 不允許此值 ORA-01090: 正在關(guān)閉 - 不允許連接3、如何把數(shù)據(jù)庫從nomount狀態(tài)改為mount狀態(tài)?實驗二實驗名稱:日志文件的管理實驗學(xué)時:2實驗?zāi)康模?)了解日志文件的作用。2)了解管理重做日志文件的準則。3)掌握重做日志文件組及成員的添加、清除、刪除等操作方法。實驗內(nèi)容及步驟:重做日志文件對于Oracle數(shù)據(jù)庫來說是至關(guān)重要的,Oracle數(shù)據(jù)庫的變化,都會生成相應(yīng)的重做日志,這些日志被記錄在重做日志文件中。1、 重做日志文件的查看(1)查看數(shù)據(jù)庫各組聯(lián)機重做日志文件的日志序列號:SQLA
8、RCHIVE LOG LIST;SQLSELECT GROUP#,SEQUENCE# FROM V$LOG;(2)查看日志文件組的狀態(tài):SQLSELECT GROUP#,STATUS FROM V$LOG;(3)查看重做日志組及其成員的基本信息:SQLSELECT GROUP#,STATUS,MEMBER FROM V$LOGFILE;2、 添加重做日志文件組 SQLALTER DATABASE ADD LOGFILE 2 GROUP 4 (E:REDO04_1.LOG) 3 SIZE 10M;3、 添加重做日志文件組的成員方法一:SQLALTER DATABASE ADD LOGFILE M
9、EMBER2 E:REDO04_2.LOG 3 TO GROUP 4;方法二:如果不知道組編號,可以通過下述操作向組中其他成員的名稱來添加新的成員:SQLALTER DATABASE ADD LOGFILE MEMBER2 E:REDO04_3.LOG 3 TO4 (E:REDO04_1.log, E:REDO 04_2.log);查詢v$log可以看到添加完成后的結(jié)果:SQLSELECT GROUP#,MEMBERS,STATUS,FIRST_TIME FROM V$LOG;4、 刪除重做日志文件組成員:SQLALTER DATABASE DROP LOGFILE MEMBER E:REDO
10、04_3.LOG ;5、 刪除重做日志文件組:SQLALTER DATABASE DROP LOGFILE GROUP 4;可能的錯誤信息:Ora-01623:日志10 是實例orcl的當前日志。解決方法:SQL alter system switch logfile; SQL select * from v$log;交替日志文件組,如果多次切換后想要刪除的重做日志組狀態(tài)依舊是active的時候可以重啟動一下數(shù)據(jù)庫。6、 清除重做日志文件組:SQLALTER DATABASE CLEAR LOGFILE GROUP 3;7、 改變數(shù)據(jù)庫的歸檔模式:(1) 修改初始化參數(shù) ,指定歸檔位置和歸檔日
11、志文件的命名方法。SQL ALTER SYSTEM 2 SET LOG_ARCHIVE_DEST=D:ORACLEORADATAARCHIVE; SQL ALTER SYSTEM 2 SET LOG_ARCHIVE_DUPLEX_DEST=E:ORACLEARCHIVE; SQL ALTER SYSTEM 2 SET LOG_ARCHIVE_FORMAT=%R_%T_%S.ARC SCOPE=SPFILE;(2) 關(guān)閉數(shù)據(jù)庫實例SHUTDOWN IMMEDIATE;(3) Startup mount;(4) Alter database archivelog;(5) Alter databas
12、e open;8、 強制進行日志切換,以檢查日志文件能否正確歸檔。SQLALTER SYSTEM SWITCH LOGFILE;在資源管理器中查看指定歸檔位置下的歸檔日志文件。9、 查看數(shù)據(jù)庫的當前模式:SQLSELECT NAME,LOG_MODE FROM V$DATABASE;10、 查看數(shù)據(jù)庫的歸檔進程信息:SQLSELECT * FROM V$ARCHIVE_PROCESSES;11、 查詢數(shù)據(jù)庫的歸檔日志文件名稱、重做日志序列號以及每次歸檔的完成時間等。SQLSELECT NAME,SEQUENCE#,COMPLETION_TIME FROM V$ARCHIVED_LOG;思考題:
13、1、 移動、重命名重做日志文件成員的步驟如下,請完成各步驟的命令代碼。 (1)關(guān)閉數(shù)據(jù)庫。(2)將重做日志文件E:REDO04_3.LOG移動或復(fù)制到D盤,并重命名為REDO04_03.LOG。(3)以MOUNT狀態(tài)打開數(shù)據(jù)庫。(4)重命名數(shù)據(jù)庫的重做日志文件。(5)打開數(shù)據(jù)庫。(6)查看重做日志文件信息。2、在實驗內(nèi)容中添加重做日志文件組group4時,是否可以將group4 改為group1?改為group6呢?請分別說明原因。3、當重做日志文件組被清除后,該組還可以繼續(xù)使用嗎?為什么?實驗三實驗名稱:角色和用戶管理實驗學(xué)時:2實驗?zāi)康模?)了解數(shù)據(jù)庫用戶。2)熟悉創(chuàng)建、更改、刪除、查看用
14、戶的方法。3)了解數(shù)據(jù)庫的不同權(quán)限。4)掌握權(quán)限的授予和回收的方法。5)了解權(quán)限、角色的不同點以及它們之間的關(guān)系。6)熟練掌握對角色的管理。實驗內(nèi)容及步驟:在Oracle中,只有具有一定權(quán)限的用戶才能對數(shù)據(jù)庫進行操作。在安裝Oracle時,數(shù)據(jù)庫本身會自動創(chuàng)建一些用戶或帳戶,如SYS、SYSTEM、SYSMAN、DBSNMP等,這些預(yù)定義的用戶具有特殊的權(quán)限能管理數(shù)據(jù)庫。用SYS用戶來實現(xiàn)創(chuàng)建、更改、刪除用戶等操作。1、 創(chuàng)建用戶CREATE USER語句在數(shù)據(jù)庫中創(chuàng)建新用戶,語法如下:CREATE USER IDENTIFIED BY |EXTERNALLY|GLOBALLY PASSWOR
15、D EXPIRE ACCOUNT LOCK | UNLOCK TEMPORARY TABLESPACE ;DEFAULT TABLESPACE QUOTA quota K | M | UNLIMITED ON 表空間 PROFILE 概要文件 例1:創(chuàng)建管理用戶USERMAN。CREATE USER USERMAN IDENTIFIED BY USERMAN;2、 更改用戶ALTER USER語句也可以修改用戶信息。(1) 修改密碼密碼。例2:將用戶USERMAN的密碼修改為NewPassword:ALTER USER USERMAN IDENTIFIED BY NewPassword;(2)
16、PASSWORD EXPIRE關(guān)鍵詞設(shè)置密碼過期。例3:設(shè)置用戶USERMAN的密碼立即過期,它在下一次登錄時必須修改密碼:ALTER USER USERMAN PASSWORD EXPIRE;(3)ACCOUNT LOCK關(guān)鍵詞鎖定用戶。例4:鎖定用戶USERMAN,使其無法登錄到數(shù)據(jù)庫:ALTER USER USERMAN ACCOUNT LOCK;(4)ACCOUNT UNLOCK關(guān)鍵詞解鎖用戶。例5:解除對用戶USERMAN的鎖定:ALTER USER USERMAN ACCOUNT UNLOCK;3、 刪除用戶DROP USER語句也可以刪除指定的用戶。 DROP USER 用戶名
17、CASCADE;4、 查詢用戶例5:SELECT username, profile,account_status,created FROM dba_users WHERE username=ty;不同用戶可以對數(shù)據(jù)庫進行不同的操作,所有對數(shù)據(jù)庫可以進行操作的用戶都必須具有一定的操作權(quán)限,而不同用戶權(quán)限不全相同。為不同用戶賦予不同權(quán)限的目的是為了保證數(shù)據(jù)庫的安全,以下關(guān)于用戶賦予、回收權(quán)限的操作。5、 授予系統(tǒng)權(quán)限使用GRANT語句,其語法如下:GRANT system_privilege , . TO user_name , . | role_name , . | PUBLIC WITH A
18、DMIN OPTION ;例6:對于用戶USERMAN授予SYSDBA角色:GRANT SYSDBA TO USERMAN;6、 授予對象權(quán)限使用GRANT語句,其語法如下:GRANT object_privilege , . | ALL PRIVILEGES ON object_nameTO user_name , . | role_name , . | PUBLIC WITH GRANT OPTION ;Oracle數(shù)據(jù)庫的權(quán)限太多,對權(quán)限的管理工作太復(fù)雜,使用角色可以很好的解決這個問題。角色是權(quán)限的集合,以下關(guān)于角色的管理。7、 創(chuàng)建角色創(chuàng)建角色的語法如下:Create role 角色名
19、not identified | identified by 口令|externally|globally;例7: 創(chuàng)建一個角色sr_admin,還用數(shù)據(jù)庫口令認證方式。create role sr_admin identified by admin;8、 給角色授權(quán)給角色授權(quán)的語法如下:Grant All|對象權(quán)限1 ,對象權(quán)限2 列1,列2 On模式名.對象名|directory 目錄名to 角色 with grant option;例8:grant create session to sr_admin;9、 刪除角色Drop role 刪除角色 格式:Drop role 角色;思考題:完
20、成如下操作的命令代碼:1、 以sys用戶登陸sqlplus. sqlplus sys/123 as sysdba2、 創(chuàng)建角色role1。Create role role13、為角色role1授予create session、resource權(quán)限。grant create session to role1;grant resource to role1;3、 創(chuàng)建用戶,指定密碼、表空間。用戶名命名以本人姓名的拼音首字母縮寫+_+學(xué)號最后兩位。Create user ty_06identified by 123default tablespace userstemporary tablespac
21、e temp;5、修改用戶密碼。alter user ty06 identified by 123;6、為用戶授予系統(tǒng)權(quán)限UNLIMITED TABLESPACE。grant UNLIMITED TABLESPACE to ty06;7、為用戶指定角色role1。grant role1 to ty06;8、收回用戶的UNLIMITED TABLESPACE權(quán)限。revoke UNLIMITED TABLESPACE from ty06;9、鎖定用戶。10、解鎖用戶。12、刪除用戶。13、刪除角色role1。14、忘記SYS用戶的解決方法。Sqlplus / as sysdbaAlter use
22、r sys identified by 123;Commit;Connect sys/123 as sysdba實驗4實驗名稱:表的管理實驗學(xué)時:4實驗?zāi)康模?)了解Oracle表和視圖的概念。2)熟練掌握使用SQL語句創(chuàng)建表。3)學(xué)習(xí)使用SELECT語句查詢數(shù)據(jù)。實驗內(nèi)容及步驟:1、 創(chuàng)建表CREATE TABLE語句的基本使用方法如下所示:CREATE TABLE .( DEFAULT expr CONSTRAINT constraint_name constraint_def, DEFAULT expr CONSTRAINT constraint_name constraint_def,
23、CONSTRAINT constraint_name constraint_def TABLESPACE 表空間名 PCTFREE n PCTUSED n INITRANS n STORAGE (storage))例1、創(chuàng)建表Users,SQL語句如下:CREATE TABLE dhb.Users1 (UserIdNumber Primary Key, UserName Varchar2(40), UserType Number(1), UserPwd Varchar2(40);2、 修改表添加列語法形式如下:ALTER TABLE schema. table_name ADD new_col
24、umn data_type dafault expr CONSTRAINT constraint_name constraint_def, DEFAULT expr CONSTRAINT constraint_name constraint_def,;例2、在表Users中添加一個列tmpcol:SQL ALTER TABLE Users ADD (tmpcol NUMBER(5,2);3、 插入數(shù)據(jù)INSERT語句的基本使用方法如下所示:INSERT INTO (列名1, 列名2, , 列名n)VALUES (值1, 值2, , 值n);例3、向表Users中插入數(shù)據(jù) INSERT INTO
25、 Users (UserId, UserName, UserType, UserPwd) VALUES ( 1, Admin, 1, Admin);COMMIT; 4、 修改數(shù)據(jù)UPDATE語句的基本使用方法如下所示:UPDATE SET 列名1 = 值1, 列名2 = 值2, , 列名n = 值nWHERE 例4、將用戶Admin的密碼修改為:UPDATE Users SET UserPwd= WHERE UserName=Admin;COMMIT WORK;5、 刪除數(shù)據(jù)DELETE命令刪除表中的數(shù)據(jù):DELETE WHERE 例5、刪除表Users中列UserName等于空()的數(shù)據(jù):D
26、ELETE FROM Users WHERE UserName = ;COMMIT WORK;6、 查詢數(shù)據(jù)(1)SELECT語句的基本語法結(jié)構(gòu)如下:SELECT子句 INTO 子句 FROM 子句 WHERE 子句 GROUP BY 子句 HAVING 子句 ORDER BY 子句 SELECT語句中各子句的說明:SELECT子句描述SELECT子句指定由查詢返回的列INTO 子句創(chuàng)建新表并將結(jié)果行插入新表中FROM 子句指定從其中檢索行的表WHERE 子句指定查詢條件GROUP BY 子句指定查詢結(jié)果的分組條件HAVING 子句指定組或聚合的搜索條件ORDER BY 子句指定結(jié)果集的排序U
27、NION運算符將兩個或更多查詢的結(jié)果組合為單個結(jié)果集,該結(jié)果集包含聯(lián)合查詢中的所有查詢的全部行COMPUTE子句生成合計作為附加的匯總列出現(xiàn)在結(jié)果集的最后。當與BY一起使用時,COMPUTE子句在結(jié)果集內(nèi)生成控制中斷和分類匯總??稍谕徊樵儍?nèi)指定COMPUTE BY和COMPUTEFOR子句FOR子句用于指定BROWSE或XML選項OPTION子句應(yīng)在整個查詢中使用指定的查詢提示。每個查詢提示只能指定一次,但允許指定多個查詢提示。用該語句只可能指定一個OPTION子句。查詢提示影響語句中的所有運算符。如果主查詢中涉及UNION,則只有涉及UNION運算符的最后一個查詢可以有OPTION子句。例
28、6、在SELECT語句中查詢指定的列名 COL EMP_NAME FORMAT A20COL SEX FORMAT A10COL TITLE FORMAT A10 SELECT Emp_name, Sex, Title FROM dhb.Employees;(2)使用ROWNUM(3)使用LIKE關(guān)鍵字實現(xiàn)模糊查詢Oracle的通配符及其含義%包含零個或多個任意字符的字符串_任意單個字符?任意單個字符#表示09的數(shù)字指定范圍或集合中的任意單個字符查詢所有身份證號中包含ddd的員工記錄例7、SELECT EMP_NAME, TITLE, IDCard FROM DHB.Employees WHE
29、RE IDCard LIKE %ddd%;(3)在SELECT中使用DECODE函數(shù)DECODE函數(shù)語法如下:DECODE(,)如果等于,則DECODE函數(shù)返回;如果等于,則DECODE函數(shù)返回,以此類推。如果參數(shù)列表中沒有與相等的值,則DECODE函數(shù)返回例8、SELECT Emp_name, DECODE(Sex, 男, 先生, 女, 女士, 未知) AS SexFROM DHB.Employees;(4)在SELECT中使用CASE函數(shù)CASE函數(shù)還可以根據(jù)不同邏輯表達式是否成立來決定函數(shù)的返回值,語法如下:CASE WHEN THEN WHEN THEN ELSE END例9:在Emp
30、loyees中,將員工工資分3個級別,工資小于等于3000的級別為低,工資大于3000且小于5000的級別為中,工資大于等于5000的級別為高。SELECT Emp_name, Wage, CASE WHEN Wage3000 AND Wage=5000 THEN 高 END AS GRADEFROM DHB.Employees;(5)保存查詢結(jié)果在CREATE TABLE語句中使用SELECT子句可以將查詢結(jié)果集填充到新建的表中。新表的結(jié)構(gòu)由選擇列表中列的特性定義。語法如下:CREATE TABLE AS例10:將辦公室的所有員工的姓名和職務(wù)信息保存到表Office中:CREATE TABL
31、E DHB.Office ASSELECT e.Emp_Name, e.Title FROM DHB.Employees e, DHB.Departments d WHERE e.Dep_id = d.Dep_Id AND d.Dep_Name = 辦公室;思考題:1、創(chuàng)建用戶,指定密碼、表空間。用戶名命名以本人姓名的縮寫+_+學(xué)號后兩位命名。2、創(chuàng)建如下表,將表保存到自己的用戶方案中。學(xué)生表:student字段名稱 字段類型 約束 sno varchar2(10) 主鍵sname varchar2(20)sage number(2)ssex varchar2(5)CREATE TABLE s
32、tudent (snovarchar2(10) Primary Key, sname varchar2(20), sage number(2), ssex varchar2(5);教師表:teachertno varchar2(10) 主鍵tname varchar2(20) CREATE TABLE teacher (tnovarchar2(10) Primary Key, tname varchar2(20);課程表:coursecno varchar2(10) 與tno聯(lián)合做主鍵cname varchar2(20)tno varchar2(20)CREATE TABLE course (
33、cnovarchar2(10), cname varchar2(20),tno varchar2(20), Primary Key(cno,tno);成績表:scsno varchar2(10) 與cno聯(lián)合做主鍵cno varchar2(10)score number(4,2)create table sc(sno varchar2(10),cno varchar2(10),score number(4,2),primary key (sno,cno);3為各表輸入數(shù)據(jù)。insert into student values (s001,張三,23,男);insert into student
34、 values (s002,李四,23,男);insert into student values (s003,吳鵬,25,男);insert into student values (s004,琴沁,20,女);insert into student values (s005,王麗,20,女);insert into student values (s006,李波,21,男);insert into student values (s007,劉玉,21,男);insert into student values (s008,蕭蓉,21,女);insert into student value
35、s (s009,陳蕭曉,23,女);insert into student values (s010,陳美,22,女);commit;insert into teacher values (t001, 劉陽);insert into teacher values (t002, 諶燕);insert into teacher values (t003, 胡明星);commit;insert into course values (c001,J2SE,t002);insert into course values (c002,Java Web,t002);insert into course va
36、lues (c003,SSH,t001);insert into course values (c004,Oracle,t001);insert into course values (c005,SQL SERVER 2005,t003);insert into course values (c006,C#,t003);insert into course values (c007,JavaScript,t002);insert into course values (c008,DIV+CSS,t001);insert into course values (c009,PHP,t003);in
37、sert into course values (c010,EJB3.0,t002);commit;insert into sc values (s001,c001,78.9);insert into sc values (s002,c001,80.9);insert into sc values (s003,c001,81.9);insert into sc values (s004,c001,60.9);insert into sc values (s001,c002,82.9);insert into sc values (s002,c002,72.9);insert into sc v
38、alues (s003,c002,81.9);insert into sc values (s001,c003,59);commit;4、 查詢每門課程被選修的學(xué)生數(shù)。 SELECT cno,count(sno) FROM scGROUP BY cnoOrder by cno;5、 查詢出只選修了一門課程的全部學(xué)生的學(xué)號和姓名。SELECT sc.sno,student.sname FROM sc,studentWhere sc.sno= student.snoGROUP BY sc.sno,student.sname HAVING count(cno)=1 ;6、查詢男生、女生人數(shù)。7、查詢
39、姓“張”的學(xué)生名單。8、查詢同名同姓學(xué)生名單,并統(tǒng)計同名人數(shù)。9、1981 年出生的學(xué)生名單。10、查詢每門課程的平均成績,結(jié)果按平均成績升序排列,平均成績相同時,按課程號降序排列。11、查詢平均成績大于85 的所有學(xué)生的學(xué)號、姓名和平均成績。12、統(tǒng)計每門課程的學(xué)生選修人數(shù)(超過10 人的課程才統(tǒng)計)。要求輸出課程號和選修人數(shù),查詢結(jié)果按人數(shù)降序排列,若人數(shù)相同,按課程號升序排列。13、查詢各科成績最高和最低的分:以如下形式顯示:課程ID,最高分,最低分。14、按各科平均成績從低到高和及格率的百分數(shù)從高到低順序。15、統(tǒng)計列印各科成績,各分數(shù)段人數(shù):課程ID,課程名稱,100-85,85-7
40、0,70-60, 60。實驗五實驗名稱:PL/SQL編程實驗學(xué)時:4實驗?zāi)康?1) 熟練掌握PL/SQL程序設(shè)計的基本知識。2) 熟練掌握PL/SQL中控制結(jié)構(gòu)的使用。具體包括選擇結(jié)構(gòu)語句(IF語句和CASE語句),循環(huán)結(jié)構(gòu)(四種循環(huán)結(jié)構(gòu))。3) 熟練使用PL/SQL中系統(tǒng)函數(shù)。4) 掌握PL/SQL中異常處理語句的使用5) 掌握PL/SQL中SELECT語句和DML語句的綜合運用。實驗內(nèi)容及步驟1、條件語句IF的語法及使用IF THEN ELSIF THEN ELSE END IF;例1:聲明一個整型變量Num,使用IF語句判斷Num變量是正數(shù)、負數(shù)或0。SET ServerOutput O
41、N;DECLARE Num INTEGER := -11; BEGIN IF Num 0 THEN dbms_output.put_line(正數(shù)); ELSE dbms_output.put_line(0); END IF;END;2、分支語句CASE 語法:CASE WHEN THEN 值1 WHEN THEN 值2 WHEN THEN 值n ELSE 值n + 1END;例2、使用CASE語句根據(jù)給定的整數(shù)輸出對應(yīng)的星期值:SET ServerOutput ON;DECLARE varDAY INTEGER := 3; Result VARCHAR2(20);BEGIN Result :
42、= CASE varDAY WHEN 1 THEN 星期一 WHEN 2 THEN 星期二 WHEN 3 THEN 星期三 WHEN 4 THEN 星期四 WHEN 5 THEN 星期五 WHEN 6 THEN 星期六 WHEN 7 THEN 星期七 ELSE 數(shù)據(jù)越界 END; dbms_output.put_line(Result);END;3、練習(xí)循環(huán)結(jié)構(gòu)語句的使用方法。(1)循環(huán)語句LOOPEXITEND LOOP IF THEN EXIT END IF END LOOP;例1、計算1到3的累加和。SET ServerOutput ON;DECLARE v_Num INTEGER :=
43、 1; v_Sum INTEGER := 0;BEGIN LOOP v_Sum := v_Sum + v_Num; dbms_output.put_line(v_Num); IF v_Num = 3 THEN EXIT; END IF; dbms_output.put_line( + ); v_Num := v_Num + 1; END LOOP; dbms_output.put_line( = ); dbms_output.put_line(v_Sum);END;(2)循環(huán)語句LOOPEXIT WHENEND LOOP EXIT WHEN END LOOP;例2、計算1到3的累加和。SET
44、ServerOutput ON;DECLARE v_Num INTEGER := 1; v_Sum INTEGER := 0;BEGIN LOOP v_Sum := v_Sum + v_Num; dbms_output.put_line(v_Num); EXIT WHEN v_Num = 3; dbms_output.put_line( + ); v_Num := v_Num + 1; END LOOP; dbms_output.put_line( = ); dbms_output.put_line(v_Sum);END;(3)循環(huán)語句WHILELOOPEND LOOP WHILE LOOP
45、END LOOP;(4)循環(huán)語句FORINLOOPEND LOOP FOR IN .LOOP END LOOP;例3、計算1到3的累加和。SET ServerOutput ON;DECLARE v_Num INTEGER; v_Sum INTEGER := 0;BEGIN FOR v_Num IN 1.3 LOOP v_Sum := v_Sum + v_Num; dbms_output.put_line(v_Num); IF v_Num 3 THEN dbms_output.put_line( + ); END IF; END LOOP; dbms_output.put_line( = );
46、dbms_output.put_line(v_Sum);END;4、練習(xí)異常處理語句的使用方法。EXCEPTION WHEN THEN WHEN THEN WHEN OTHERS THEN 例1、SET SERVEROUTPUT ON;DECLARE x NUMBER;BEGIN x:= a123;-向NUMBER類型的變量X中賦值字符串,導(dǎo)致異常EXCEPTION WHEN VALUE_ERROR THEN DBMS_OUTPUT.PUT_LINE(數(shù)據(jù)類型錯誤);END;例2、SET SERVEROUTPUT ON;DECLARE v_result NUMBER(10):=0;BEGIN
47、v_result:= 100/0;DBMS_OUTPUT.PUT_LINE(結(jié)果是:|v_result);EXCEPTION WHEN ZERO_DIVIDE THEN DBMS_OUTPUT.PUT_LINE(除數(shù)是零!默認用1替代除數(shù),結(jié)果是:|100/1);END;思考題:1、 編寫PL/SQL程序,使用LOOPEXITEND語句計算1100之間所有偶數(shù)之和。2、 創(chuàng)建表departments和表employees, 并為兩張表輸入若干數(shù)據(jù)。表departments結(jié)構(gòu):字段名稱 字段類型 約束Dep_id number 主鍵Dep_name varchar2(20)表employees
48、結(jié)構(gòu):字段名稱 字段類型 約束emp_id number 主鍵emp_name varchar2(20)sex varchar2(20)title varchar2(20)wage numberidcard varchar2(12)dep_id number 外鍵3、 編寫PL/SQL程序,查詢5號員工工資,如果工資小于3000,則加200員工資,并提示信息“5號員工工資已更新?!?,如果工資大于3000,則提示信息“5號員工工資為XXX,已達到規(guī)定標準?!?、 編寫PL/SQL程序,查詢1號員工的工資,使用CASE語句輸出其工資等級。工資小于等于3000,等級為“低”;工資大于3000,小于5000,等級為”中”;工資大于等于5000,等級為高;5、 編寫PL/SQL程序,查詢的departments表中是否有部門號為“6”的記錄,如果沒有,插入新記錄部門號為6,部門名稱為“后勤部”。如果有,顯示查詢結(jié)果。實驗六實驗名稱:使用游標、存儲過程和觸發(fā)器實驗學(xué)時:2實驗?zāi)康?(1) 了解游標的概念和工作原理。(2) 了解存儲過程的分類和使用方法。(3) 了解觸發(fā)器的概念。(4) 學(xué)習(xí)編寫和執(zhí)行自定義過程。(5) 學(xué)習(xí)創(chuàng)建和使用觸發(fā)器。實驗內(nèi)容及步驟1、游標的使用(一)使用顯式游標 (1)說明游標。DECLAR
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB6528T 205-2024棉花輕簡化栽培技術(shù)規(guī)程
- 臨時用地開發(fā)合同范本
- 三人合伙經(jīng)營投資合同:簡化版
- 中外合作勞動合同模板
- 個人品牌店鋪租賃合同標準范本
- 個人創(chuàng)業(yè)貸款合同細則
- 中外原材料供應(yīng)合同范本示例
- 臨時場地租賃合同范例集錦
- 臨時工勞動合同范文及合同條款
- 個人與個人借款合同示范文本
- 《大健康解讀》課件
- 2025年度交通運輸規(guī)劃外聘專家咨詢協(xié)議3篇
- 2024年公司領(lǐng)導(dǎo)在新年動員會上的講話樣本(3篇)
- 2025年中國濕度傳感器行業(yè)深度分析、投資前景、趨勢預(yù)測報告(智研咨詢)
- 人教版道德與法治二年級下冊《第一單元 讓我試試看》大單元整體教學(xué)設(shè)計2022課標
- 聯(lián)合體三方協(xié)議合同模板
- 2024年3季度青島房地產(chǎn)市場季度簡報
- 蘇東坡詞十首
- 山東省臨沂市2024年中考物理真題
- 2023年天津市文化和旅游局直屬事業(yè)單位招聘考試真題及答案
- 電力系統(tǒng)分析(郝亮亮)
評論
0/150
提交評論