




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Oracle數(shù)據(jù)庫實(shí)驗(yàn)指導(dǎo)段華斌 編著計(jì)算機(jī)與通信工程系實(shí)驗(yàn)一實(shí)驗(yàn)名稱:數(shù)據(jù)庫的管理實(shí)驗(yàn)學(xué)時(shí):2實(shí)驗(yàn)?zāi)康模?)了解Oracle數(shù)據(jù)庫的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)。2)熟悉Oracle的命令操作環(huán)境SQL*PLUS。3)了解啟動(dòng)和關(guān)閉數(shù)據(jù)庫的不同方式及其優(yōu)缺點(diǎn)。4)熟悉掌握各種啟動(dòng)、關(guān)閉方式。實(shí)驗(yàn)內(nèi)容及步驟:1、 SQL*Plus的啟動(dòng)與關(guān)閉(一)SQL*Plus的啟動(dòng)當(dāng)?shù)卿浀讲僮飨到y(tǒng)后,有三種方法啟動(dò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將連接到默認(rèn)數(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(四)啟動(dòng)sqlplus,可能的故障ORA-12560 造成ORA-12560: TNS: 協(xié)議適配器錯(cuò)誤的問題的原因有三個(gè): (1)監(jiān)聽服務(wù)沒有起起來。windows平臺(tái)個(gè)一如下操作:開始-程序-管理工具-服務(wù),打開服務(wù)面板,啟動(dòng)TNSlistener服務(wù)。 (2)database instance沒有起起來。windows平臺(tái)如下操作:開始-程序-管理工具-服務(wù),打開服務(wù)面板,啟動(dòng)oracleserviceXXXX,XXXX就是你的database SID. (3)進(jìn)入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í)例,分別按以下方式啟動(dòng)數(shù)據(jù)庫實(shí)例。 (1)正常關(guān)閉。等待當(dāng)前所有已連接的用戶斷開與數(shù)據(jù)庫的連接,然后關(guān)閉數(shù)據(jù)庫。正常關(guān)閉的語句如下: SHUTDOWN NORMAL (2)立即關(guān)閉?;赝嘶顒?dòng)事務(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ù)庫實(shí)例,
5、立即關(guān)閉數(shù)據(jù)庫。中止關(guān)閉的語句如下: SHUTDOWN ABORT3、 使用startup命令啟動(dòng)數(shù)據(jù)庫練習(xí)使用STARTUP命令啟動(dòng)數(shù)據(jù)庫實(shí)例,分別按以下方式啟動(dòng)數(shù)據(jù)庫實(shí)例。 (1)啟動(dòng)數(shù)據(jù)庫實(shí)例時(shí)不裝載數(shù)據(jù)庫。執(zhí)行此操作的命令如下: STARTUP NOMOUNT (2)啟動(dòng)數(shù)據(jù)庫實(shí)例,裝載數(shù)據(jù)庫,但不打開數(shù)據(jù)庫。通常在數(shù)據(jù)庫維護(hù)時(shí)執(zhí)行此操作,對(duì)應(yīng)的命令如下:STARTUP MOUNT (3)啟動(dòng)后限制對(duì)數(shù)據(jù)庫實(shí)例的訪問。執(zhí)行此操作的命令如下:STARTUP RESTRICT (4)強(qiáng)制實(shí)例啟動(dòng)。在遇到特殊異常的情況時(shí),可以強(qiáng)制啟動(dòng)實(shí)例。強(qiáng)制啟動(dòng)實(shí)例的語句如下: STARTUP FORCE
6、4.改變數(shù)據(jù)庫的狀態(tài)(1)裝載數(shù)據(jù)庫實(shí)例。 在執(zhí)行某些管理操作時(shí),數(shù)據(jù)庫必須啟動(dòng)、裝載一個(gè)實(shí)例,但此時(shí)數(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、當(dāng)關(guān)閉數(shù)據(jù)庫時(shí)使用shutdown命令,好久沒有關(guān)閉,隨即將“命令提示符”窗口關(guān)閉,之后重新“啟動(dòng)命令提示符”并登錄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)?實(shí)驗(yàn)二實(shí)驗(yàn)名稱:日志文件的管理實(shí)驗(yàn)學(xué)時(shí):2實(shí)驗(yàn)?zāi)康模?)了解日志文件的作用。2)了解管理重做日志文件的準(zhǔn)則。3)掌握重做日志文件組及成員的添加、清除、刪除等操作方法。實(shí)驗(yàn)內(nèi)容及步驟:重做日志文件對(duì)于Oracle數(shù)據(jù)庫來說是至關(guān)重要的,Oracle數(shù)據(jù)庫的變化,都會(huì)生成相應(yīng)的重做日志,這些日志被記錄在重做日志文件中。1、 重做日志文件的查看(1)查看數(shù)據(jù)庫各組聯(lián)機(jī)重做日志文件的日志序列號(hào):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;方法二:如果不知道組編號(hào),可以通過下述操作向組中其他成員的名稱來添加新的成員: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;可能的錯(cuò)誤信息:Ora-01623:日志10 是實(shí)例orcl的當(dāng)前日志。解決方法:SQL alter system switch logfile; SQL select * from v$log;交替日志文件組,如果多次切換后想要?jiǎng)h除的重做日志組狀態(tài)依舊是active的時(shí)候可以重啟動(dòng)一下數(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ù)庫實(shí)例SHUTDOWN IMMEDIATE;(3) Startup mount;(4) Alter database archivelog;(5) Alter databas
12、e open;8、 強(qiáng)制進(jìn)行日志切換,以檢查日志文件能否正確歸檔。SQLALTER SYSTEM SWITCH LOGFILE;在資源管理器中查看指定歸檔位置下的歸檔日志文件。9、 查看數(shù)據(jù)庫的當(dāng)前模式:SQLSELECT NAME,LOG_MODE FROM V$DATABASE;10、 查看數(shù)據(jù)庫的歸檔進(jìn)程信息:SQLSELECT * FROM V$ARCHIVE_PROCESSES;11、 查詢數(shù)據(jù)庫的歸檔日志文件名稱、重做日志序列號(hào)以及每次歸檔的完成時(shí)間等。SQLSELECT NAME,SEQUENCE#,COMPLETION_TIME FROM V$ARCHIVED_LOG;思考題:
13、1、 移動(dòng)、重命名重做日志文件成員的步驟如下,請(qǐng)完成各步驟的命令代碼。 (1)關(guān)閉數(shù)據(jù)庫。(2)將重做日志文件E:REDO04_3.LOG移動(dòng)或復(fù)制到D盤,并重命名為REDO04_03.LOG。(3)以MOUNT狀態(tài)打開數(shù)據(jù)庫。(4)重命名數(shù)據(jù)庫的重做日志文件。(5)打開數(shù)據(jù)庫。(6)查看重做日志文件信息。2、在實(shí)驗(yàn)內(nèi)容中添加重做日志文件組group4時(shí),是否可以將group4 改為group1?改為group6呢?請(qǐng)分別說明原因。3、當(dāng)重做日志文件組被清除后,該組還可以繼續(xù)使用嗎?為什么?實(shí)驗(yàn)三實(shí)驗(yàn)名稱:角色和用戶管理實(shí)驗(yàn)學(xué)時(shí):2實(shí)驗(yàn)?zāi)康模?)了解數(shù)據(jù)庫用戶。2)熟悉創(chuàng)建、更改、刪除、查看用
14、戶的方法。3)了解數(shù)據(jù)庫的不同權(quán)限。4)掌握權(quán)限的授予和回收的方法。5)了解權(quán)限、角色的不同點(diǎn)以及它們之間的關(guān)系。6)熟練掌握對(duì)角色的管理。實(shí)驗(yàn)內(nèi)容及步驟:在Oracle中,只有具有一定權(quán)限的用戶才能對(duì)數(shù)據(jù)庫進(jìn)行操作。在安裝Oracle時(shí),數(shù)據(jù)庫本身會(huì)自動(dòng)創(chuàng)建一些用戶或帳戶,如SYS、SYSTEM、SYSMAN、DBSNMP等,這些預(yù)定義的用戶具有特殊的權(quán)限能管理數(shù)據(jù)庫。用SYS用戶來實(shí)現(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的密碼立即過期,它在下一次登錄時(shí)必須修改密碼: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:解除對(duì)用戶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;不同用戶可以對(duì)數(shù)據(jù)庫進(jìn)行不同的操作,所有對(duì)數(shù)據(jù)庫可以進(jìn)行操作的用戶都必須具有一定的操作權(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:對(duì)于用戶USERMAN授予SYSDBA角色:GRANT SYSDBA TO USERMAN;6、 授予對(duì)象權(quán)限使用GRANT語句,其語法如下:GRANT object_privilege , . | ALL PRIVILEGES ON object_nameTO user_name , . | role_name , . | PUBLIC WITH GRANT OPTION ;Oracle數(shù)據(jù)庫的權(quán)限太多,對(duì)權(quán)限的管理工作太復(fù)雜,使用角色可以很好的解決這個(gè)問題。角色是權(quán)限的集合,以下關(guān)于角色的管理。7、 創(chuàng)建角色創(chuàng)建角色的語法如下:Create role 角色名
19、not identified | identified by 口令|externally|globally;例7: 創(chuàng)建一個(gè)角色sr_admin,還用數(shù)據(jù)庫口令認(rèn)證方式。create role sr_admin identified by admin;8、 給角色授權(quán)給角色授權(quán)的語法如下:Grant All|對(duì)象權(quán)限1 ,對(duì)象權(quán)限2 列1,列2 On模式名.對(duì)象名|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é)號(hào)最后兩位。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實(shí)驗(yàn)4實(shí)驗(yàn)名稱:表的管理實(shí)驗(yàn)學(xué)時(shí):4實(shí)驗(yàn)?zāi)康模?)了解Oracle表和視圖的概念。2)熟練掌握使用SQL語句創(chuàng)建表。3)學(xué)習(xí)使用SELECT語句查詢數(shù)據(jù)。實(shí)驗(yàn)內(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中添加一個(gè)列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運(yùn)算符將兩個(gè)或更多查詢的結(jié)果組合為單個(gè)結(jié)果集,該結(jié)果集包含聯(lián)合查詢中的所有查詢的全部行COMPUTE子句生成合計(jì)作為附加的匯總列出現(xiàn)在結(jié)果集的最后。當(dāng)與BY一起使用時(shí),COMPUTE子句在結(jié)果集內(nèi)生成控制中斷和分類匯總。可在同一查詢內(nèi)指定COMPUTE BY和COMPUTEFOR子句FOR子句用于指定BROWSE或XML選項(xiàng)OPTION子句應(yīng)在整個(gè)查詢中使用指定的查詢提示。每個(gè)查詢提示只能指定一次,但允許指定多個(gè)查詢提示。用該語句只可能指定一個(gè)OPTION子句。查詢提示影響語句中的所有運(yùn)算符。如果主查詢中涉及UNION,則只有涉及UNION運(yùn)算符的最后一個(gè)查詢可以有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)鍵字實(shí)現(xiàn)模糊查詢Oracle的通配符及其含義%包含零個(gè)或多個(gè)任意字符的字符串_任意單個(gè)字符?任意單個(gè)字符#表示09的數(shù)字指定范圍或集合中的任意單個(gè)字符查詢所有身份證號(hào)中包含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ù)不同邏輯表達(dá)式是否成立來決定函數(shù)的返回值,語法如下:CASE WHEN THEN WHEN THEN ELSE END例9:在Emp
30、loyees中,將員工工資分3個(gè)級(jí)別,工資小于等于3000的級(jí)別為低,工資大于3000且小于5000的級(jí)別為中,工資大于等于5000的級(jí)別為高。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é)號(hào)后兩位命名。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é)號(hào)和姓名。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)計(jì)同名人數(shù)。9、1981 年出生的學(xué)生名單。10、查詢每門課程的平均成績,結(jié)果按平均成績升序排列,平均成績相同時(shí),按課程號(hào)降序排列。11、查詢平均成績大于85 的所有學(xué)生的學(xué)號(hào)、姓名和平均成績。12、統(tǒng)計(jì)每門課程的學(xué)生選修人數(shù)(超過10 人的課程才統(tǒng)計(jì))。要求輸出課程號(hào)和選修人數(shù),查詢結(jié)果按人數(shù)降序排列,若人數(shù)相同,按課程號(hào)升序排列。13、查詢各科成績最高和最低的分:以如下形式顯示:課程ID,最高分,最低分。14、按各科平均成績從低到高和及格率的百分?jǐn)?shù)從高到低順序。15、統(tǒng)計(jì)列印各科成績,各分?jǐn)?shù)段人數(shù):課程ID,課程名稱,100-85,85-7
40、0,70-60, 60。實(shí)驗(yàn)五實(shí)驗(yàn)名稱:PL/SQL編程實(shí)驗(yàn)學(xué)時(shí):4實(shí)驗(yàn)?zāi)康?1) 熟練掌握PL/SQL程序設(shè)計(jì)的基本知識(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語句的綜合運(yùn)用。實(shí)驗(yàn)內(nèi)容及步驟1、條件語句IF的語法及使用IF THEN ELSIF THEN ELSE END IF;例1:聲明一個(gè)整型變量Num,使用IF語句判斷Num變量是正數(shù)、負(fù)數(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ù)輸出對(duì)應(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、計(jì)算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、計(jì)算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、計(jì)算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ù)類型錯(cuò)誤);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ù)是零!默認(rèn)用1替代除數(shù),結(jié)果是:|100/1);END;思考題:1、 編寫PL/SQL程序,使用LOOPEXITEND語句計(jì)算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號(hào)員工工資,如果工資小于3000,則加200員工資,并提示信息“5號(hào)員工工資已更新?!?,如果工資大于3000,則提示信息“5號(hào)員工工資為XXX,已達(dá)到規(guī)定標(biāo)準(zhǔn)?!?、 編寫PL/SQL程序,查詢1號(hào)員工的工資,使用CASE語句輸出其工資等級(jí)。工資小于等于3000,等級(jí)為“低”;工資大于3000,小于5000,等級(jí)為”中”;工資大于等于5000,等級(jí)為高;5、 編寫PL/SQL程序,查詢的departments表中是否有部門號(hào)為“6”的記錄,如果沒有,插入新記錄部門號(hào)為6,部門名稱為“后勤部”。如果有,顯示查詢結(jié)果。實(shí)驗(yàn)六實(shí)驗(yàn)名稱:使用游標(biāo)、存儲(chǔ)過程和觸發(fā)器實(shí)驗(yàn)學(xué)時(shí):2實(shí)驗(yàn)?zāi)康?(1) 了解游標(biāo)的概念和工作原理。(2) 了解存儲(chǔ)過程的分類和使用方法。(3) 了解觸發(fā)器的概念。(4) 學(xué)習(xí)編寫和執(zhí)行自定義過程。(5) 學(xué)習(xí)創(chuàng)建和使用觸發(fā)器。實(shí)驗(yàn)內(nèi)容及步驟1、游標(biāo)的使用(一)使用顯式游標(biāo) (1)說明游標(biāo)。DECLAR
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024北京糧香四溢科技有限責(zé)任公司公開招聘3人筆試參考題庫附帶答案詳解
- 第六章 幾何圖形初步教學(xué)設(shè)計(jì)-2024-2025學(xué)年人教版數(shù)學(xué)七年級(jí)上冊
- 2《我學(xué)習(xí)我快樂》教學(xué)設(shè)計(jì)-2024-2025學(xué)年道德與法治三年級(jí)上冊統(tǒng)編版
- 太陽能熱電聯(lián)產(chǎn)系統(tǒng)集成與設(shè)計(jì)方案
- 山陽中學(xué)校本課程設(shè)計(jì)方案
- 2025至2030年中國帕薩特刮水器傳動(dòng)總成數(shù)據(jù)監(jiān)測研究報(bào)告
- 二零二五年度城市公交班車服務(wù)合同及線路優(yōu)化方案
- 二零二五年度教育機(jī)構(gòu)經(jīng)典實(shí)習(xí)期勞動(dòng)合同模板
- 2025年度環(huán)保材料研發(fā)勞動(dòng)承攬合同
- 二零二五年度房地產(chǎn)營銷代理合作協(xié)議
- (名師整理)部編人教版語文初中課內(nèi)古詩文大全(五四制)
- 非常好的精益生產(chǎn)案例-值得借鑒
- 東南亞潤滑油市場研究報(bào)告和展望
- 煤礦安全知識(shí)300問 煤礦職工每日一題
- 《0-3歲嬰幼兒教育》課程教學(xué)大綱
- 2023年廣東醫(yī)科大學(xué)專插本中藥學(xué)真題
- GB/T 5392-2004林業(yè)機(jī)械油鋸技術(shù)條件
- GB/T 26535-2011國家重要濕地確定指標(biāo)
- GA/T 1133-2014基于視頻圖像的車輛行駛速度技術(shù)鑒定
- 食品安全 PPT課件7農(nóng)獸藥化學(xué)性污染對(duì)食品安全性的影響
- 介入科人員崗位職責(zé)
評(píng)論
0/150
提交評(píng)論