版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、. 數(shù)據(jù)庫課程設(shè)計(jì)設(shè)計(jì)名稱:圖書管理系統(tǒng)組員:尚靖偉(122068)張紅凱(122072)班級:計(jì)G121班 信息工程學(xué)院計(jì)算機(jī)系2013年6月27日;“Oracle數(shù)據(jù)庫應(yīng)用設(shè)計(jì)”指導(dǎo)書Oracle數(shù)據(jù)庫管理與設(shè)計(jì)目 錄目 錄I前 言II第1部分 Oracle管理技術(shù)1實(shí)驗(yàn)1 數(shù)據(jù)庫管理1實(shí)驗(yàn)2 角色和用戶管理4實(shí)驗(yàn)3 表和視圖管理6實(shí)驗(yàn)4 索引和序列管理10實(shí)驗(yàn)5 PL/SQL編程12實(shí)驗(yàn)6 使用游標(biāo)、存儲過程和觸發(fā)器18實(shí)驗(yàn)7 表空間管理21實(shí)驗(yàn)8 文件管理23第2部分 Oracle開發(fā)技術(shù)26前 言數(shù)據(jù)庫技術(shù)是計(jì)算機(jī)科學(xué)中發(fā)展最快的領(lǐng)域之一。隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,數(shù)據(jù)庫技術(shù)與網(wǎng)絡(luò)技術(shù)
2、相結(jié)合,已經(jīng)廣泛應(yīng)用于工作和生活的各個領(lǐng)域。同時,數(shù)據(jù)庫技術(shù)及其應(yīng)用已經(jīng)成為國內(nèi)外高校計(jì)算機(jī)專業(yè)和許多非計(jì)算機(jī)專業(yè)的必修或選修課程。Oracle是當(dāng)前最流行的大型關(guān)系數(shù)據(jù)庫之一,支持包括32位Windows、64位Windows、OS、HP-UX、AIX5L、Solaris和Linux等多種操作系統(tǒng),擁有廣泛的用戶和大量的應(yīng)用案例,已成為大型數(shù)據(jù)庫應(yīng)用系統(tǒng)的首選后臺數(shù)據(jù)庫系統(tǒng)。本實(shí)驗(yàn)課程要求學(xué)生全面了解Oracle數(shù)據(jù)庫的特點(diǎn)和功能。從安裝配置、安全性、可用性、互操作性、PL/SQL、可開發(fā)性、商業(yè)智能等多個方面,對Oracle數(shù)據(jù)庫的各項(xiàng)技術(shù)進(jìn)行學(xué)習(xí)和實(shí)驗(yàn)。通過學(xué)習(xí)Oracle數(shù)據(jù)庫安裝、管
3、理及開發(fā),為今后從事Oracle數(shù)據(jù)庫管理和開發(fā)工作打下良好的基礎(chǔ)。本實(shí)驗(yàn)課程共分2個部分。第1部分為Oracle的管理技術(shù),由實(shí)驗(yàn)1至實(shí)驗(yàn)8組成,內(nèi)容包括:(1)數(shù)據(jù)庫管理;(2)角色和用戶管理;(3)表和視圖管理;(4)索引和序列管理;(5)PL/SQL編程;(6)使用游標(biāo)、存儲過程和觸發(fā)器;(7)表空間;(8)文件管理。第2部分為Oracle開發(fā)技術(shù),要求完成基于一定背景的管理信息系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì),如學(xué)生信息管理系統(tǒng)、圖書管理系統(tǒng)、人事信息管理系統(tǒng)、網(wǎng)上購物系統(tǒng)等。44第1部分 Oracle管理技術(shù)第1部分 Oracle管理技術(shù)實(shí)驗(yàn)1 數(shù)據(jù)庫管理目的和要求(1)了解Oracle數(shù)據(jù)庫的邏
4、輯結(jié)構(gòu)和物理結(jié)構(gòu);(2)了解Oracle Enterprise Manager的使用情況;(3)學(xué)習(xí)關(guān)閉和啟動數(shù)據(jù)庫實(shí)例的方法;(4)學(xué)習(xí)使用SQL語句創(chuàng)建數(shù)據(jù)庫的方法;(5)學(xué)習(xí)使用SQL語句刪除數(shù)據(jù)庫的方法。實(shí)驗(yàn)準(zhǔn)備首先要了解Oracle數(shù)據(jù)庫的邏輯結(jié)構(gòu),包括方案(schema)對象、數(shù)據(jù)塊(data block)、區(qū)間(extent)、段(segment)和表空間(tablespace)等。數(shù)據(jù)庫由若干個表空間組成,表空間由表組成,段由區(qū)間組成,區(qū)間則由數(shù)據(jù)塊組成。Oracle數(shù)據(jù)庫的物理結(jié)構(gòu)由構(gòu)成數(shù)據(jù)庫的操作系統(tǒng)文件所決定。每個Oracle數(shù)據(jù)庫都由3種類型的文件組成:數(shù)據(jù)文件、日志文
5、件和控制文件。這些數(shù)據(jù)庫文件為數(shù)據(jù)庫信息提供真正的物理存儲。Enterprise Manager 9i是Oracle 9i提供的新的管理工具,簡稱EM。使用它可以完成啟動、關(guān)閉數(shù)據(jù)庫,創(chuàng)建、刪除數(shù)據(jù)庫等功能。只有系統(tǒng)管理員或擁有CREATE DATABASE權(quán)限的用戶才能創(chuàng)建數(shù)據(jù)庫??梢栽贓nterprise Manager中通過圖形界面創(chuàng)建數(shù)據(jù)庫,也可以使用CREATE DATABASE語句創(chuàng)建數(shù)據(jù)庫。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)主要包括以下內(nèi)容。(1) 練習(xí)使用不同方法啟動和關(guān)閉數(shù)據(jù)庫實(shí)例。(2)練習(xí)使用不同方法創(chuàng)建和刪除數(shù)據(jù)庫,要使操作的數(shù)據(jù)庫為用戶管理數(shù)據(jù)庫UserMan。1使用SHUTDOWN命令
6、關(guān)閉數(shù)據(jù)庫實(shí)例練習(xí)使用SHUTDOWN命令關(guān)閉數(shù)據(jù)庫實(shí)例,分別按以下方式啟動數(shù)據(jù)庫實(shí)例。(1)正常關(guān)閉。等待當(dāng)前所有已連接的用戶斷開與數(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ù)庫實(shí)例,立即關(guān)閉數(shù)據(jù)庫。中止關(guān)閉的語句如下:SHUTDOWN ABORT每次執(zhí)行SHUTDOW
7、N語句關(guān)閉數(shù)據(jù)庫實(shí)例之前,請執(zhí)行STARTUP命令啟動數(shù)據(jù)庫。2使用STARTUP命令啟動數(shù)據(jù)庫實(shí)例練習(xí)使用STARTUP命令啟動數(shù)據(jù)庫實(shí)例,分別按以下方式啟動數(shù)據(jù)庫實(shí)例。(1)啟動數(shù)據(jù)庫實(shí)例時不裝載數(shù)據(jù)庫。執(zhí)行此操作的命令如下:STARTUP NOMOUNT(2)啟動數(shù)據(jù)庫實(shí)例,裝載數(shù)據(jù)庫,但不打開數(shù)據(jù)庫。通常在數(shù)據(jù)庫維護(hù)時執(zhí)行此操作,對應(yīng)的命令如下:STARTUP MOUNT(3)啟動數(shù)據(jù)庫實(shí)例,裝載數(shù)據(jù)庫,打開數(shù)據(jù)庫。執(zhí)行此操作的命令如下:STARTUP OPEN(4)強(qiáng)制實(shí)例啟動。在遇到特殊異常的情況時,可以強(qiáng)制啟動實(shí)例。強(qiáng)制啟動實(shí)例的語句如下:STARTUP FORCE該語句將數(shù)據(jù)庫
8、強(qiáng)行啟動到OPEN模式。(5)啟動后限制對數(shù)據(jù)庫實(shí)例的訪問。執(zhí)行此操作的命令如下:STARTUP RESTRICT每次執(zhí)行STARTUP語句啟動數(shù)據(jù)庫實(shí)例之前,請執(zhí)行SHUTDOWN命令關(guān)閉數(shù)據(jù)庫。3使用ORACLE Enterprise Manager關(guān)閉數(shù)據(jù)庫實(shí)例按照下面的步驟關(guān)閉數(shù)據(jù)庫實(shí)例。(1)在數(shù)據(jù)庫處于打開狀態(tài)時,使用SYS用戶以SYSDBA身份登錄到Enterprise Manager。在主目錄頁面的“一般信息”欄目中,可以看到“關(guān)閉”按鈕。(2)單擊“關(guān)閉”按鈕,可以打開“主機(jī)和目標(biāo)數(shù)據(jù)庫身份證明”頁面。用戶需要擁有管理員的權(quán)限才能關(guān)閉數(shù)據(jù)庫實(shí)例,包括主機(jī)操作系統(tǒng)的管理員和當(dāng)前
9、數(shù)據(jù)庫實(shí)例的SYSDBA用戶。(3)輸入完成后,單擊“確定”按鈕,打開“確認(rèn)關(guān)閉”頁面。(4)單擊“是”按鈕,開始關(guān)閉數(shù)據(jù)庫。關(guān)閉操作完成后,單擊“刷新”按鈕,打開“啟動數(shù)據(jù)庫實(shí)例”頁面。4使用ORACLE Enterprise Manager啟動數(shù)據(jù)庫實(shí)例按照下面的步驟啟動數(shù)據(jù)庫實(shí)例。(1)使用SYS用戶以SYSDBA身份登錄到Enterprise Manager。(2)單擊“啟動”按鈕,打開“主機(jī)和目標(biāo)數(shù)據(jù)庫身份證明”頁面。用戶需要擁有管理員的權(quán)限才能啟動數(shù)據(jù)庫實(shí)例,包括主機(jī)操作系統(tǒng)的管理員和當(dāng)前數(shù)據(jù)庫實(shí)例的SYSDBA用戶。(3)輸入完成后,單擊“確定”按鈕,打開“確認(rèn)打開”頁面。(4)
10、單擊“是”按鈕,開始打開數(shù)據(jù)庫。5使用SQL語句創(chuàng)建數(shù)據(jù)庫按照如下條件創(chuàng)建數(shù)據(jù)庫OracleDB(以SYSDBA的用戶身份連接到數(shù)據(jù)庫)。(1)設(shè)置SYS用戶的密碼為SYSPWD,設(shè)置SYSTEM用戶的密碼為SYSTEMPWD。(2)使用已有的控制文件。(3)指定日志文件組redo01.log,大小為100MB;指定日志文件組redo02.log,大小為100MB。設(shè)置最大的日志文件數(shù)量為10。(4)定義日志文件組中最大的日志文件數(shù)量為5。(5)定義最大的數(shù)據(jù)文件數(shù)量為100。(6)定義數(shù)據(jù)庫中最大的實(shí)例數(shù)量為1。(7)定義存儲數(shù)據(jù)的字符集為US7ASCII。(8)定義數(shù)據(jù)文件名稱為SYS01
11、.dbf,初始大小為100MB。(9)定義默認(rèn)的表空間為tbs_1。(10)定義臨時表空間為tempts1。(11)定義臨時文件為temp01.dbf,大小為10MB。CREATE DATABASE語句實(shí)例:CREATE DATABASE OracleDB USER SYS IDENTIFIED BY bipt123 USER SYSTEM IDENTIFIED BY bipt123 CONTROLFILE REUSEMAXLOGFILES 10 MAXLOGMEMBERS 5 MAXDATAFILES 100 MAXINSTANCES 1 LOGFILE GROUP 1 (E:redo01.
12、log) SIZE 100M , GROUP 2 (E:redo02.log) SIZE 100M , CHARACTER SET US7ASCII DATAFILE E:sys01.dbf SIZE 100M REUSE EXTENT MANAGEMENT LOCAL DEFAULT TABLESPACE tbs_1 DEFAULT TEMPORARY TABLESPACE tempts1 TEMPFILE E:temp01.dbf SIZE 10M REUSE;6使用SQL語句刪除數(shù)據(jù)庫按照如下步驟刪除數(shù)據(jù)庫UserMan。(1)在刪除數(shù)據(jù)庫之前,需要用戶以SYSDBA或SYSOPER身份
13、登錄,代碼如下:CONNECT SYS/SYSPWD AS SYSDBA;其中SYSPWD為SYS用戶的密碼,請根據(jù)實(shí)際情況輸入。(2)關(guān)閉數(shù)據(jù)庫,再以MOUNT模式啟動數(shù)據(jù)庫,代碼如下:SHUTDOWN IMMEDIATE;STARTUP MOUNT;(3)刪除數(shù)據(jù)庫,代碼如下:DROP DATABASE;實(shí)驗(yàn)2 角色和用戶管理目的和要求(1)了解Oracle數(shù)據(jù)庫用戶和角色的概念;(2)學(xué)習(xí)使用SQL語句創(chuàng)建Oracle用戶;(3)學(xué)習(xí)使用SQL語句創(chuàng)建Oracle角色;(4)學(xué)習(xí)使用SQL語句指定用戶的角色。實(shí)驗(yàn)準(zhǔn)備(1)了解Oracle數(shù)據(jù)庫用戶可以分為6種類型,即數(shù)據(jù)庫管理員、安全官
14、員、網(wǎng)絡(luò)管理員、應(yīng)用程序開發(fā)員、應(yīng)用程序管理員和數(shù)據(jù)庫用戶;(2)了解角色是對用戶的一種分類管理辦法,不同權(quán)限的用戶可以分為不同的角色;(3)了解使用CREATE ROLE語句創(chuàng)建角色的方法;(4)了解使用DROP ROLE語句刪除角色的方法;(5)了解使用GRANT語句指定用戶角色的方法;(5)了解使用CREATE USER語句創(chuàng)建用戶的方法;(4)了解使用DROP USER語句刪除用戶的方法。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)主要包括以下內(nèi)容。(1)練習(xí)使用SQL語句創(chuàng)建數(shù)據(jù)庫角色;(2)練習(xí)使用SQL語句為數(shù)據(jù)庫角色授予權(quán)限;(3)練習(xí)使用SQL語句指定用戶角色;(4)練習(xí)使用SQL語句創(chuàng)建數(shù)據(jù)庫用戶。1使
15、用SQL語句創(chuàng)建數(shù)據(jù)庫角色參照下面的步驟練習(xí)使用CREATE ROLE語句創(chuàng)建數(shù)據(jù)庫角色。(1)以SYSTEM用戶登錄到SQL*PLUS。(2)使用CREATE ROLE語句創(chuàng)建角色UserManRole,密碼為myrolepwd,代碼如下:CREATE ROLE UserManRole IDENTIFIED BY myrolepwd;2使用SQL語句為數(shù)據(jù)庫角色授權(quán)參照下面的步驟練習(xí)使用GRANT語句為數(shù)據(jù)庫角色授權(quán)。(1)以SYSTEM用戶登錄到SQL*PLUS。(2)使用GRANT語句將角色UserManRole授予CONNECT和RESOURCE權(quán)限,代碼如下:-設(shè)置角色權(quán)限GRANT
16、 CONNECT TO UserManRole ;GRANT RESOURCE TO UserManRole ;3使用SQL語句創(chuàng)建數(shù)據(jù)庫用戶參照下面的步驟練習(xí)使用CREATE USER語句創(chuàng)建數(shù)據(jù)庫用戶。(1)以SYSTEM用戶登錄到SQL*PLUS。(2)使用CREATE USER語句創(chuàng)建用戶UserManAdmin,密碼為UserPwd,代碼如下:CREATE USER UserManAdmin IDENTIFIED BY UserPwd DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;(3)使用GRANT語句對用戶UserManAd
17、min授予系統(tǒng)權(quán)限UNLIMITED TABLESPACE,代碼如下:-設(shè)置系統(tǒng)權(quán)限GRANT UNLIMITED TABLESPACE TO UserManAdmin ;4使用SQL語句指定用戶角色參照下面的步驟將用戶UserMan指定為角色UserManRole。(1)以SYSTEM用戶登錄到SQL*PLUS。(2)使用GRANT語句將用戶UserMan指定為角色UserManRole,代碼如下:GRANT UserManRole TO UserManAdmin ;實(shí)驗(yàn)3 表和視圖管理目的和要求(1)了解Oracle表和視圖的概念;(2)學(xué)習(xí)使用SQL語句創(chuàng)建表;(3)學(xué)習(xí)使用SELECT
18、語句查詢數(shù)據(jù);(4)學(xué)習(xí)使用SQL語句創(chuàng)建視圖。實(shí)驗(yàn)準(zhǔn)備(1)了解表是數(shù)據(jù)庫中最常用的數(shù)據(jù)存儲單元,它包括所有用戶可以訪問的數(shù)據(jù)。作為關(guān)系型數(shù)據(jù)庫,Oracle表由行和列組成。(2)視圖是一個虛擬的表,它在物理上并不存在。視圖可以把表或其它視圖的數(shù)據(jù)按照一定的條件組合起來,所以也可以把它看成是一個存儲的查詢。視圖并不包含數(shù)據(jù),它只是從基表中讀取數(shù)據(jù)。(3)了解使用CREATE TABLE語句創(chuàng)建表的方法。(4)了解使用SELECT語句查詢數(shù)據(jù)的方法。(5)了解使用SQL語句創(chuàng)建視圖的方法。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)主要包括以下內(nèi)容。(1)練習(xí)使用SQL語句創(chuàng)建表;(2)練習(xí)使用SQL語句向表中插入數(shù)據(jù);(
19、3)練習(xí)使用SQL語句修改表中的數(shù)據(jù);(4)練習(xí)使用SQL語句刪除表中的數(shù)據(jù);(5)練習(xí)使用SELECT語句查詢數(shù)據(jù);(6)練習(xí)使用SQL語句創(chuàng)建視圖。1使用SQL語句創(chuàng)建表使用CREATE TABLE語句創(chuàng)建用戶信息表Users,結(jié)構(gòu)如表1所示。表1 表Users的結(jié)構(gòu)編 號字段名稱數(shù)據(jù)結(jié)構(gòu)說 明1UserIdNUMBER用戶編號2UserNameVARCHAR2 40用戶名3UserTypeNUMBER 1用戶類型(1 管理員用戶,2 普通用戶)4UserPwdVARCHAR2 40參照下面的步驟練習(xí)使用CREATE TABLE語句創(chuàng)建表Users。(1)以實(shí)驗(yàn)2中創(chuàng)建的UserManAd
20、min用戶登錄到SQL*PLUS。(2)使用CREATE TABLE語句創(chuàng)建表Users,代碼如下:CREATE TABLE UserManAdmin.Users(UserIdNumber Primary Key, UserNameVarchar2(40) NOT NULL, UserTypeNumber(1), UserPwdVarchar2(40);使用CREATE TABLE語句創(chuàng)建用戶登錄信息表LoginInfo,結(jié)構(gòu)如表2所示。表2 表LoginInfo的結(jié)構(gòu)編 號字段名稱數(shù)據(jù)結(jié)構(gòu)說 明1UserIdNUMBER用戶編號2LoginTimeCHAR(20)登錄時間參照下面的步驟練習(xí)使
21、用CREATE TABLE語句創(chuàng)建表LoginInfo。(1)以實(shí)驗(yàn)2中創(chuàng)建的UserManAdmin用戶登錄到SQL*PLUS。(2)使用CREATE TABLE語句創(chuàng)建表LoginInfo,代碼如下:CREATE TABLE UserManAdmin.LoginInfo(UserIdNumber, LoginTimeCHAR(20) NOT NULL);2使用SQL語句向表中插入數(shù)據(jù)使用INSERT語句向表Users中插入用戶數(shù)據(jù),內(nèi)容如表3所示。表3 表Users中的數(shù)據(jù)UserIdUserNameUserTypeUserPwd1Admin1AdminPwd2User2UserPwd3Z
22、hangsan2ZhangsanPwd4Lisi2LisiPwd參照下面的步驟練習(xí)使用INSERT語句向表Users中插入數(shù)據(jù)。(1)以實(shí)驗(yàn)2中創(chuàng)建的UserManAdmin用戶登錄到SQL*PLUS。(2)使用INSERT語句向表Users中插入數(shù)據(jù),代碼如下:INSERT INTO UserManAdmin.Users VALUES(1, Admin, 1, AdminPwd);INSERT INTO UserManAdmin.Users VALUES(2, User, 2, UserPwd);INSERT INTO UserManAdmin.Users VALUES(3, Zhangsa
23、n, 2, ZhangsanPwd);INSERT INTO UserManAdmin.Users VALUES(4, Lisi, 2, LisiPwd);COMMIT;使用INSERT語句向表LoginInfo中插入數(shù)據(jù)。內(nèi)容如表4所示。參照下面的步驟練習(xí)使用INSERT語句向表LoginInfo中插入數(shù)據(jù)。(1)以實(shí)驗(yàn)2中創(chuàng)建的UserManAdmin用戶登錄到SQL*PLUS。(2)使用INSERT語句向表LoginInfo中插入數(shù)據(jù),代碼如下:INSERT INTO UserManAdmin.LoginInfo VALUES(1, 2012-5-15 10:33:02);INSERT
24、INTO UserManAdmin.LoginInfo VALUES(1, 2012-5-16 08:34:13);INSERT INTO UserManAdmin.LoginInfo VALUES(1, 2012-5-17 09:13:11);INSERT INTO UserManAdmin.LoginInfo VALUES(2, 2012-5-15 07:35:02);INSERT INTO UserManAdmin.LoginInfo VALUES(2, 2012-5-16 08:11:54);INSERT INTO UserManAdmin.LoginInfo VALUES(2, 20
25、12-5-17 09:13:11);INSERT INTO UserManAdmin.LoginInfo VALUES(3, 2012-5-15 08:34:02);INSERT INTO UserManAdmin.LoginInfo VALUES(3, 2012-5-16 09:34:13);INSERT INTO UserManAdmin.LoginInfo VALUES(3, 2012-5-17 10:13:09);INSERT INTO UserManAdmin.LoginInfo VALUES(4, 2012-5-15 11:34:02);INSERT INTO UserManAdm
26、in.LoginInfo VALUES(4, 2012-5-16 13:34:13);INSERT INTO UserManAdmin.LoginInfo VALUES(4, 2012-5-17 15:13:12);COMMIT;表4 表LoginInfo中的數(shù)據(jù)UserIdLoginTime12012-5-15 10:33:0212012-5-16 08:34:1312012-5-17 09:13:1122012-5-15 07:35:0222012-5-16 08:11:5422012-5-17 09:13:1132012-5-15 08:34:0232012-5-16 09:34:133
27、2012-5-17 10:13:0942012-5-15 11:34:0242012-5-16 13:34:1342012-5-17 15:13:123使用SQL語句修改表中的數(shù)據(jù)使用UPDATE語句可以修改表Users中的數(shù)據(jù)。參照下面的步驟練習(xí)將表Users中Admin用戶的密碼修改為AdminPassword。(1)以SYSTEM用戶登錄到SQL*PLUS。(2)使用UPDATE語句將表Users中Admin用戶的密碼修改為AdminPassword,代碼如下:UPDATE UserManAdmin.Users SET UserPwd=AdminPassword WHERE UserNa
28、me=Admin(3)使用SELECT語句查看用戶Admin的密碼,代碼如下:SELECT UserPwd FROM UserManAdmin.Users WHERE UserName=Admin修改表ALTER TABLE USERMANADMIN. LOGININFO MODIFY(LOGINTIME DATE)4使用SQL語句刪除表中的數(shù)據(jù)使用DELETE語句可以刪除表Users中的數(shù)據(jù)。參照下面的步驟練習(xí)將表Users中Zhansan用戶的記錄刪除。(1)以SYSTEM用戶登錄到SQL*PLUS。(2)使用DELETE語句將表Users中Zhangsan用戶的記錄刪除,代碼如下:DEL
29、ETE FROM UserManAdmin.Users WHERE UserName=Zhangsan(3)使用SELECT語句查看表Users中的數(shù)據(jù),確認(rèn)用戶Zhangsan的記錄是否被刪除,代碼如下:SELECT * FROM UserManAdmin.Users5使用SELECT語句查詢數(shù)據(jù)使用SELECT語句查詢數(shù)據(jù)庫中的用戶數(shù)據(jù),分別按以下方式查詢數(shù)據(jù)庫。(1)查詢表Users中的所有數(shù)據(jù)。以SYSTEM用戶登錄到SQL*PLUS,然后執(zhí)行如下代碼:SELECT * FROM UserManAdmin.Users*代表UserManAdmin.Users中的所有字段。(2)在返回結(jié)
30、果中使用自定義標(biāo)題。以SYSTEM用戶登錄到SQL*PLUS,然后執(zhí)行如下代碼:SELECT UserName AS 用戶名, UserPwd AS 密碼 FROM UserManAdmin.Users(3)設(shè)置查詢條件。查詢所有普通用戶的信息。以SYSTEM用戶登錄到SQL*PLUS,然后執(zhí)行如下代碼:SELECT * FROM UserManAdmin.Users WHERE UserType=2查詢用戶Admin的密碼信息。以SYSTEM用戶登錄到SQL*PLUS,然后執(zhí)行如下代碼:SELECT UserPwd FROM UserManAdmin.Users WHERE UserName
31、=Admin(4)對查詢結(jié)果進(jìn)行排序。查詢所有普通用戶的信息,并按用戶名的降序排列結(jié)果集。以SYSTEM用戶登錄到SQL*PLUS,然后執(zhí)行如下代碼:SELECT * FROM UserManAdmin.Users ORDER BY UserName DESC(5)對記錄進(jìn)行統(tǒng)計(jì)。統(tǒng)計(jì)表Users中共有多少個用戶記錄。以SYSTEM用戶登錄到SQL*PLUS,然后執(zhí)行如下代碼:SELECT COUNT(*) FROM UserManAdmin.Users(6)實(shí)現(xiàn)連接查詢。查看每個用戶的登錄記錄。以SYSTEM用戶登錄到SQL*PLUS,然后執(zhí)行如下代碼:SELECT u.UserName,
32、1.LoginTime FROM Users u INNER JOIN LoginInfo 1ON u.UserId=1.UserID在上面的SELECT語句中涉及兩個表:表Users和表LoginInfo。在FROM子句中,為每個表指定一個別名,表Users的別名為u,表LoginInfo的別名為1。6使用SQL語句創(chuàng)建視圖使用CREATE VIEW語句創(chuàng)建用戶登錄信息表UserLogin,代碼如下:CREATE VIEW UserLoginASSELECT u.UserName, l.LoginTime FROM UserManAdmin.Users u INNER JOIN UserMa
33、nAdmin.LoginInfo lON u.UserId=l.UserID;SELECT * FROM UserLogin;實(shí)驗(yàn)4 索引和序列管理目的和要求(1)了解索引的概念和作用;(2)了解序列的概念和作用;(3)學(xué)習(xí)使用SQL語句創(chuàng)建索引;(4)學(xué)習(xí)使用SQL語句創(chuàng)建序列。實(shí)驗(yàn)準(zhǔn)備(1)了解索引是對數(shù)據(jù)庫表中一個或多個列的值進(jìn)行排序的結(jié)構(gòu)。可以利用索引快速訪問數(shù)據(jù)庫表中的特定信息。(2)了解序列號是一個Oracle整數(shù),最多可有38個數(shù)字。序列的作用是自動生成整型數(shù)值,作為表中標(biāo)識字段的值。有許多表在創(chuàng)建時定義了一個標(biāo)識字段,此字段的值需要由系統(tǒng)自動生成,每當(dāng)插入一條新記錄時,此字段的
34、值自動加1。在Oracle中,這個功能由序列來實(shí)現(xiàn)。(3)了解使用CREATE INDEX語句創(chuàng)建索引的方法。(4)了解使用CREATE SEQUENCE語句創(chuàng)建序列的方法。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)主要包括以下內(nèi)容。(1)練習(xí)使用SQL語句創(chuàng)建索引;(2)練習(xí)使用SQL語句創(chuàng)建序列;1使用SQL語句創(chuàng)建索引使用CREATE INDEX語句在Users表的UserName字段上創(chuàng)建索引。代碼如下:CREATE INDEX index_username ON UserManAdmin.Users (UserName)TABLESPACE Users;2在創(chuàng)建表的同時創(chuàng)建索引在使用CREATE TABLE語句
35、創(chuàng)建表的同時,可以為指定字段創(chuàng)建索引。創(chuàng)建表Employees,在字段EmpName上創(chuàng)建索引。表Employees的結(jié)構(gòu)如表5所示。表5 表Employees的結(jié)構(gòu)編 號字段名稱數(shù)據(jù)結(jié)構(gòu)說 明1EmpIdNUMBER編號2EmpNameVARCHAR2(50)姓名3SexCHAR(2)性別4UserIdNUMBER用戶編號代碼如下:CREATE TABLE UserManAdmin.Employees(EmpIdNumber, EmpNameVARCHAR2(50) UNIQUE, SexCHAR(2), UserIdNumber);3使用SQL語句創(chuàng)建序列使用CREATE SEQUENCE
36、語句創(chuàng)建序列。序列的最小值為1,并且沒有最大值限制。序列的初始值為1,序列間隔為1。代碼如下:CREATE SEQUENCE EMP_SMINVALUE 1NOMAXVALUESTART WITH 1INCREMENT BY 1NOCYCLECACHE 20;2在插入數(shù)據(jù)時使用序列在使用INSERT語句向表Employees中插入數(shù)據(jù)時,可以使用序列EMP_S生成字段EmpId的值,代碼如下:INSERT INTO UserManAdmin.Employees (EmpId, EmpName) VALUES(EMP_S.NEXTVAL, Employee1);INSERT INTO UserM
37、anAdmin.Employees (EmpId, EmpName) VALUES(EMP_S.NEXTVAL, Employee2);INSERT INTO UserManAdmin.Employees (EmpId, EmpName) VALUES(EMP_S.NEXTVAL, Employee3);COMMIT;SELECT * FROM UserManAdmin.Employees實(shí)驗(yàn)5 PL/SQL編程目的和要求(1)了解PL/SQL語言的結(jié)構(gòu);(2)了解PL/SQL變量和常量的聲明和使用方法;(3)學(xué)習(xí)條件語句的使用方法;(4)學(xué)習(xí)分支語句的使用方法;(5)學(xué)習(xí)循環(huán)語句的使用方法;
38、(6)學(xué)習(xí)使用Oracle系統(tǒng)函數(shù)。實(shí)驗(yàn)準(zhǔn)備首先要了解PL/SQL語言是結(jié)構(gòu)化程序設(shè)計(jì)語言。塊(Block)是PL/SQL程序中最基本的結(jié)構(gòu),所有PL/SQL程序都是由塊組成的。PL/SQL的塊由變量聲明、程序代碼和異常處理代碼3部分組成。在PL/SQL中,常量和變量在使用前必須聲明,可以使用DECLARE對變量進(jìn)行聲明。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)主要包括以下內(nèi)容。(1)練習(xí)條件語句的使用方法;(2)練習(xí)分支語句的使用方法;(3)練習(xí)循環(huán)語句的使用方法;(4)練習(xí)使用Oracle系統(tǒng)函數(shù)。1使用條件語句參照下面的步驟練習(xí)使用條件語句。(1)以SYSTEM用戶登錄到SQL*PLUS。(2)執(zhí)行如下程序,觀察
39、結(jié)果。SET ServerOutput ON;DECLARE Num INTEGER := -11;BEGIN IF Num < 0 THEN dbms_output.put_line( 負(fù)數(shù) ); ELSIF Num > 0 THEN dbms_output.put_line( 正數(shù) ); ELSE dbms_output.put_line( 0 ); END IF;END;2使用分支語句參照下面的步驟練習(xí)使用分支語句。(1)以SYSTEM用戶登錄到SQL*PLUS。(2)執(zhí)行如下程序,觀察結(jié)果。SET ServerOutput ON;DECLARE varDAY INTEGER
40、 := 3; Result VARCHAR(20);BEGIN Result := 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使用循環(huán)語句LOOPEXITEND語句:此語句的功能是重復(fù)執(zhí)行循環(huán)體中的程序塊,直到執(zhí)行EXIT語句,退出循環(huán)。LOOPEXIT WHENEND:此語句的功能是重復(fù)執(zhí)
41、行循環(huán)體中的程序塊,直到滿足EXIT WHEN后面的判斷語句時,退出循環(huán)。WHILELOOPEND LOOP語句:此語句的功能是當(dāng)WHILE后面的條件語句成立時,重復(fù)執(zhí)行循環(huán)體中的程序塊。參照下面的步驟練習(xí)使用循環(huán)語句。(1)以SYSTEM用戶登錄到SQL*PLUS。(2)執(zhí)行如下程序,觀察結(jié)果。程序一:SET 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 ); IF v_Num = 3 T
42、HEN 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;程序二:SET 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_o
43、utput.put_line( + ); v_Num := v_Num + 1; END LOOP; dbms_output.put_line( = ); dbms_output.put_line( v_Sum );END;程序三: SET ServerOutput ON;DECLARE v_Num INTEGER := 1; v_Sum INTEGER := 0;BEGIN WHILE v_Num <=3 LOOP v_Sum := v_Sum + v_Num; dbms_output.put_line( v_Num ); IF v_Num < 3 THEN dbms_outpu
44、t.put_line( + ); END IF; v_Num := v_Num + 1; END LOOP; dbms_output.put_line( = ); dbms_output.put_line( v_Sum );END;4使用系統(tǒng)函數(shù)(1)數(shù)值型函數(shù)·ABS:返回給定數(shù)字表達(dá)式的絕對值。·CEIL:返回大于或等于所給數(shù)字表達(dá)式的最小整數(shù)。·FLOOR:返回小于或等于所給數(shù)字表達(dá)式的最大整數(shù)。·POWER:返回給定表達(dá)式指定次方的值。·ROUND:返回?cái)?shù)字表達(dá)式并四舍五入為指定的長度或精度。(2)字符型函數(shù)·ASCII:返回
45、字符表達(dá)式最左端字符的ASCII代碼值。·LENGTH:返回給定字符串表達(dá)式的字符(而不是字節(jié))個數(shù),其中不包含尾隨空格。·UPPER:返回將小寫字符數(shù)據(jù)轉(zhuǎn)換為大寫的字符表達(dá)式。(3)日期型函數(shù)·SYSDATE:返回當(dāng)前日期和時間。·TO_CHAR:轉(zhuǎn)換日期為字符串。·LAST_DAY:返回指定日期所在月份的最后一天的日期。這個函數(shù)可以被用來確定當(dāng)前月中還剩下多少天。·MONTHS_BETWEEN:返回兩個日期之間月的數(shù)目。(4)統(tǒng)計(jì)函數(shù)·COUNT:返回組中項(xiàng)目的數(shù)量。·MAX:返回表達(dá)式的最大值。·M
46、IN:返回表達(dá)式的最小值。參照下面的步驟練習(xí)使用系統(tǒng)函數(shù)。(1)以SYSTEM用戶登錄到SQL*PLUS。(2)執(zhí)行如下程序,觀察結(jié)果。程序一:SET ServerOutput ON;BEGIN dbms_output.put_line( ABS(-4) );END;程序二:SET ServerOutput ON;BEGIN dbms_output.put_line( CEIL(116.24) ); dbms_output.put_line( CEIL(-112.75) ); dbms_output.put_line( CEIL(0) );END;程序三:SET ServerOutput ON
47、;BEGIN dbms_output.put_line( FLOOR(116.24) ); dbms_output.put_line( FLOOR(-112.75) ); dbms_output.put_line( FLOOR(0) );END;程序四:SET ServerOutput ON;BEGIN dbms_output.put_line( POWER(15, 4) );END;程序五:SET ServerOutput ON;BEGIN dbms_output.put_line( ROUND(123.456, 2) ); dbms_output.put_line( ROUND(123.4
48、56, 1) ); dbms_output.put_line( ROUND(123.456, 0) ); dbms_output.put_line( ROUND(123.456, -1) ); dbms_output.put_line( ROUND(123.456, -2) ); dbms_output.put_line( ROUND(123.456, -3) );END;程序六:SET ServerOutput ON;BEGIN dbms_output.put_line( ASCII(ABC) );END;程序七:SELECT UserName, LENGTH(UserName) FROM
49、UserManAdmin.UsersWHERE UserType = 1;程序八:SET ServerOutput ON;BEGIN dbms_output.put_line( UPPER(abc) );END;程序九:SET ServerOutput ON;BEGIN dbms_output.put_line( SYSDATE );END;程序十:SET ServerOutput ON;BEGIN dbms_output.put_line( TO_CHAR(SYSDATE) );END;程序十一:SET ServerOutput ON;BEGIN dbms_output.put_line(
50、LAST_DAY(SYSDATE) );END;程序十二:SET ServerOutput ON;DECLARE date1 VARCHAR(20) := 2010-05-17 ; date2 VARCHAR(20) := 2010-10-17 ;BEGIN dbms_output.put_line( MONTHS_BETWEEN( TO_DATE( date2, yyyy-mm-dd ), TO_DATE( date1, yyyy-mm-dd ) ) ); END;程序十三:SELECT COUNT( UserName ) FROM UserManAdmin.Users;程序十四:SELEC
51、T MAX( UserId ) FROM UserManAdmin.Users;程序十五:SELECT MIN( UserId ) FROM UserManAdmin.Users;實(shí)驗(yàn)6 使用游標(biāo)、存儲過程和觸發(fā)器目的和要求(1)了解游標(biāo)的概念和工作原理;(2)了解存儲過程的分類和使用方法;(3)了解觸發(fā)器的概念;(4)學(xué)習(xí)編寫和執(zhí)行自定義過程;(5)學(xué)習(xí)編寫和執(zhí)行自定義函數(shù);(6)學(xué)習(xí)創(chuàng)建和使用觸發(fā)器。實(shí)驗(yàn)準(zhǔn)備首先要了解游標(biāo)是映射在結(jié)果集中一行數(shù)據(jù)上的位置實(shí)體,有了游標(biāo),用戶就可以訪問結(jié)果集中的任意一行數(shù)據(jù)了。將游標(biāo)放置到某行后,即可對該行數(shù)據(jù)進(jìn)行操作,最常見的操作是提取當(dāng)前行數(shù)據(jù)。了解PL
52、/SQL包括3種存儲過程,即過程、函數(shù)和程序包。了解觸發(fā)器是一種特殊的存儲過程,當(dāng)指定表中的數(shù)據(jù)發(fā)生變化時自動運(yùn)行。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)主要包括以下內(nèi)容。(1)練習(xí)創(chuàng)建和使用游標(biāo)的方法;(2)練習(xí)編寫和執(zhí)行自定義過程的方法;(3)練習(xí)編寫和執(zhí)行自定義函數(shù)的方法;(4)練習(xí)創(chuàng)建和使用觸發(fā)器的方法。1創(chuàng)建和使用游標(biāo)創(chuàng)建游標(biāo)MyCursor,從表LoginInfo中讀取指定用戶的登錄信息,操作步驟如下:(1)以UserManAdmin用戶登錄到SQL*PLUS。(2)執(zhí)行如下程序:/*打開顯示模式*/SET ServerOutput ON;DECLARE CURSOR Mycursor( varUserN
53、ame VARCHAR2 ) IS SELECT u.UserName, l.LoginTime FROM UserManAdmin.Users u, UserManAdmin.LoginInfo l WHERE u.UserId =l.UserId;BEGIN FOR var_LoginRecord IN MyCursor( Admin ) LOOP dbms_output.put_line( 用戶名: | var_LoginRecord.UserName | , 登錄時間: | var_LoginRecord.LoginTime ); END LOOP;END; 2編寫和執(zhí)行自定義過程參照下面的步驟練習(xí)編寫和執(zhí)行自定義過程:(1)以UserManAdmin用戶登錄到SQL*PLUS。(2)執(zhí)行如下程序,觀察結(jié)果。/*創(chuàng)建示例過程ResetPwd,此過程的功能是將表User中指定用戶的密碼重置為111111*/CREATE OR REPLACE PROCEDURE UserManAdmin.ResetPwd( u_UserId IN NUMBER )ASBEGIN UPDATE UserManAdmin.Users SET UserPwd = 111111 WHERE UserId = u_UserId;END;/*使用EXEXUT
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025保安新員工入職合同范本
- 2025公司簽的勞動合同
- 牙科正畸治療中的并發(fā)癥及預(yù)防
- 2025果樹苗木定購合同書
- 2024年執(zhí)業(yè)藥師合同模板
- 2024年禁牧期間牧民轉(zhuǎn)場及應(yīng)急救助合同
- 商丘學(xué)院《電視制片人管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 完整建筑合同范例
- 惠州工廠裝修施工合同范例
- 商洛學(xué)院《鋼結(jié)構(gòu)設(shè)計(jì)基本原理》2023-2024學(xué)年第一學(xué)期期末試卷
- 安全生產(chǎn)培訓(xùn)課件
- 2025年建筑公司年度工作總結(jié)及2025年計(jì)劃
- 母嬰安全培訓(xùn)課件
- 《人力資源招聘體系》課件
- 2024年國家工作人員學(xué)法用法考試題庫及參考答案
- FOCUS-PDCA改善案例-提高術(shù)前手術(shù)部位皮膚準(zhǔn)備合格率醫(yī)院品質(zhì)管理成果匯報(bào)
- 中國成人心肌炎臨床診斷與治療指南2024解讀
- 期末(試題)-2024-2025學(xué)年人教PEP版英語六年級上冊
- 龍門吊二手買賣合同(2024版)
- 2025年廣東省高等學(xué)校招生中等職業(yè)學(xué)校畢業(yè)生統(tǒng)一考試 英語押題卷(五)(含答案)
- 2024年高考真題完全解讀課件:2024年高考物理真題完全解讀(遼寧、吉林、黑龍江卷)
評論
0/150
提交評論