第一篇:Oracle實驗報告
Oracle數據庫實驗報告
實驗一:Oracle 10g安裝卸載及相關工具配置
一、實驗目標:
安裝Oracle 10g,了解OEM,通過DBCA安裝數據庫,通過DBCA刪除數據庫,sqldeveloper連接數據庫,卸載oracle 10g。
二、實驗學時數 2學時
三、實驗步驟和內容:
1、安裝Oracle10g(默認安裝數據庫)雙擊setup.exe,選擇基本安裝,安裝目錄D:盤,標準版,默認數據庫orcl,口令bhbh。進入先決條件檢查界面時:網絡配置需求選項不用打勾,直接下一步,是。直到安裝成功。
2、登陸和了解OEM 主要是已網頁的形式來對數據庫進行管理。
第1頁 http://主機IP:1158/em 用戶名:sys 口令:bhbh 身份:sysdba 或者
用戶名:system 口令:bhbh 身份:normal
3、通過DBCA刪除已安裝的默認數據庫orcl 程序->OracleOraDb10g_home1->配置和移植工具->Database Configuration Assistant->創(chuàng)建數據庫->……
5、sqldeveloper連接數據庫 打開sqldeveloper,新建連接 連接名:system_ora 用戶名:system 口令:bhbh 主機名:本機計算機名 SID:xscj 測試,顯示成功,連接,保存。
第2頁
6、卸載oracle 10g Windows下
1>停止所有Oracle服務,點Universal Installer卸載
2>刪除注冊表中的所有關于Oracle項
在HKEY_LOCAL_MACHINESOFTWARE下,刪除Oracle目錄
3>刪除硬盤上所有Oracle文件。(1)Oracle安裝文件
(2)系統(tǒng)目錄下,在Program files文件夾中的Oracle文件
四、上機作業(yè)
根據實驗步驟完成逐個實驗目標中的任務。
五、心得體會
通過這次的實驗,我了解了oracle數據庫的情況。懂得了數據庫就是把數據存儲在一個類似與倉庫的地方,需要用時才從數據庫里調出來。通過上機實踐,知道了裝數據庫和卸載數據庫,并且學會了怎樣連數據庫。
實驗二:Oracle 10g手工建數據庫
一、實驗目標:
安裝Oracle 10g數據庫環(huán)境,手工建立數據庫;通過Net Configuration Assistant建立監(jiān)聽,使用sqldeveloper連接數據庫測試。
二、實驗學時數 2學時
三、實驗步驟和內容:
先安裝好Oracle 10g數據庫環(huán)境(不安裝默認數據庫)。1.創(chuàng)建好相關的目錄
第3頁 假設oracle安裝在D盤,打開命令行,運行->cmd-> md D:oracleproduct10.2.0adminmydbpfile md D:oracleproduct10.2.0adminmydbbdump md D:oracleproduct10.2.0adminmydbcdump md D:oracleproduct10.2.0adminmydbudump md D:oracleproduct10.2.0oradatamydb md D:oracleproduct10.2.0flash_recovery_areamydb 2.創(chuàng)建數據庫實例
(1)設置環(huán)境變量SID(注:以后每打開一次CMD都要運行此句)set ORACLE_SID=mydb(2)創(chuàng)建口令文件
orapwd file=D:oracleproduct10.2.0oradatamydbPWDmydb.ora Password=bhbh entries=5(3)使用oradim命令創(chuàng)建數據庫實例mydb oradim-new-sid mydb-startmode manual-pfile “D:oracleproduct10.2.adminmydbpfileinitmydb.ora” 3.用sys賬戶以sysdba的身份登錄 輸入sqlplus sys/bhbh as sysdba 4.創(chuàng)建實例初始化參數文件initmydb.ora,并將其放到D:oracleproduct10.2.adminmydbpfile路徑下。
initmydb.ora # Copyright(c)1991, 2001, 2002 by Oracle Corporation
第4頁 job_queue_processes=10 # Job Queues # Shared Server dispatchers=“(PROTOCOL=TCP)(SERVICE=mydbXDB)” # Miscellaneous compatible=10.2.0.1.0 # Security and Auditing remote_login_passwordfile=EXCLUSIVE # Sort, Hash Joins, Bitmap Indexes pga_aggregate_target=25165824 sort_area_size=65536 # Database Identification db_domain=“" db_name=mydb # File Configuration control_files=(”D:oracleproduct10.2.0oradatamydbcontrol01.ctl“, ”D:oracleproduct10.2.0oradatamydbcontrol02.ctl“,”D:oracleproduct10.2.0oradatamydbcontrol03.ctl“)db_recovery_file_dest=D:oracleproduct10.2.0flash_recovery_area db_recovery_file_dest_size=2147483648 # Pools
第5頁 java_pool_size=50331648 large_pool_size=8388608 shared_pool_size=83886080 # Cursors and Library Cache open_cursors=300 # System Managed Undo and Rollback Segments undo_management=AUTO undo_tablespace=UNDOTBS1 # Diagnostics and Statistics background_dump_dest=D:oracleproduct10.2.0adminmydbbdump core_dump_dest=D:oracleproduct10.2.0adminmydbcdump user_dump_dest=D:oracleproduct10.2.0adminmydbudump # Processes and Sessions processes=150 # Cache and I/O db_block_size=8192 db_cache_size=25165824 db_file_multiblock_read_count=16
5.運行命令實例初始化 STARTUP NOMOUNT
第6頁 pfile=”D:oracleproduct10.2.0adminmydbpfileinitmydb.ora“;6.運行創(chuàng)建數據庫SQL命令 CREATE DATABASE mydb MAXINSTANCES 1 MAXLOGHISTORY 1 MAXLOGFILES 5 MAXLOGMEMBERS 5 MAXDATAFILES 100 DATAFILE 'D:oracleproduct10.2.0oradatamydbsystem01.dbf' SIZE 500M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED SYSAUX DATAFILE 'D:oracleproduct10.2.0oradatamydbsysaux01.dbf' size 20M UNDO TABLESPACE UNDOTBS1 DATAFILE 'D:oracleproduct10.2.0oradatamydbundotbs01.dbf' SIZE 150M REUSE AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED DEFAULT TEMPORARY TABLESPACE TEMP1 TEMPFILE 'D:oracleproduct10.2.0oradatamydbtemp01.dbf' SIZE 100M REUSE CHARACTER SET ZHS16GBK NATIONAL CHARACTER SET AL16UTF16 LOGFILE 'D:oracleproduct10.2.0oradatamydbredo01.log' SIZE 50M,第7頁
'D:oracleproduct10.2.0oradatamydbredo02.log' SIZE 50M,'D:oracleproduct10.2.0oradatamydbredo03.log' SIZE 50M;7.創(chuàng)建用戶表空間USERS CREATE TABLESPACE USERS DATAFILE 'D:oracleproduct10.2.0oradatamydbusers01.dbf' SIZE 128M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED;8.創(chuàng)建數據字典(需要幾分鐘,報錯不要緊)
@D:oracleproduct10.2.0db_1RDBMSADMINcatalog.sql;9.創(chuàng)建內部包(需要幾分鐘,報錯不要緊)
@D:oracleproduct10.2.0db_1RDBMSADMINcatproc.sql;10.創(chuàng)建自啟動文件,以便以后不用每次打開數據庫實例都要運行一次第5步。
create spfile FROM pfile='D:oracleproduct10.2.0adminmydbpfileinitmydb.ora';11.重啟數據庫,即關閉再打開。shutdown;connect sys/bhbh as sysdba;startup;12.授權用戶system為dba,置密碼為bhbh
第8頁 grant dba to system identified by bhbh;13.使用system用戶登錄 conn system/bhbh;14.為system用戶創(chuàng)建一張KC表 CREATE TABLE KC(KCH CHAR(3)NOT NULL, KCM CHAR(16)NOT NULL, KKXQ NUMBER(1)NOT NULL, XS NUMBER(2)NOT NULL, XF NUMBER(2), CONSTRAINT CH_KKXQ CHECK(kkxq between 1 and 8), CONSTRAINT ”PK_KCH“ PRIMARY KEY(”KCH“))TABLESPACE USERS;15.給KC表插入一條數據,并提交。
INSERT INTO KC VALUES('001','數據庫',7,68,4);commit;16.測試查詢 Select * from kc;17.使用Net Configuration Assistant添加監(jiān)聽器,并重啟監(jiān)聽器(運行cmd->netca也一樣)。
第9頁 18.創(chuàng)建Em資料檔案庫(這一步可以省略,只為創(chuàng)建OEM,我們以后學習用不到)。
cmd->emca-config dbcontrol db-repos create 19.打開SQLDeveloper,并新建數據庫連接并測試是否成功。
20.若之前手工安裝數據庫出現差錯,可使用以下命令刪除數據庫實例: cmd->oradim-delete-sid mydb 然后刪除第1步所建目錄即可。
四、上機作業(yè)
根據實驗步驟完成逐個實驗目標中的任務。
五、心得體會:
通過這次的實驗,明白了手動建數據庫,建表空間等。還知道了運行數據庫的命令,授權命令插表等等。這次學習讓我對數據庫的了解和運用又新的體會。
實驗三:數據庫修改
一、實驗目標:
學習簡化實驗二里的實驗步驟,學習修改數據庫某些屬性,完成數據庫作業(yè)1:手工快速創(chuàng)建數據庫實例XSCJ和數據庫XSCJ。
二、實驗學時數 2學時
三、實驗步驟和內容:
第10頁 1.安裝好ORACLE 10g,(不需要安裝數據庫)。
2.快速安裝數據庫實例mydb和數據庫mydb需要3個文件:init.bat,initmydb.ora,ctreatedb.sql。
(1)雙擊運行init.bat文件;
(2)將initmydb.ora放到正確的路徑下(參考實驗二);(3)在sqlplus環(huán)境下運行ctreatedb.sql
3.了解startup nomount,startup mount和startup三種狀態(tài)的使用情況的區(qū)別,即打開實例不裝載數據庫、打開實例裝載數據庫但不打開數據庫和打開實例裝載數據庫同時打開數據庫。
(1)運行P45頁例子2-7修改數據庫(提示:startup;)ALTER DATABASE mydb DATAFILE 'D:oracleproduct10.2.0oradatamydbusers01.dbf' RESIZE 200M;(2)運行P45頁例子2-9刪除數據庫(提示:startup mount;)取消數據庫的受限制狀態(tài):
alter system enable restricted session;刪除數據庫: DROP DATABASE;(3)重建數據庫
sys重新登錄,運行ctreatedb.sql。
4.刪除數據庫實例mydb和數據庫mydb。使用命令 oradim-delete-sid mydb 以及刪除相關文件夾。
四、上機作業(yè)
第11頁 適當地修改建庫所用到的3個文件里的參數,手工安裝數據庫實例xscj和數據庫xscj(快速安裝),用戶表空間myts。
五、心得體會
這次學習,讓我明白了怎樣修改數據庫某些屬性,手工快速創(chuàng)建數據庫實例XSCJ和數據庫XSCJ。DROP DATABASE命令可以刪除數據庫…
實驗四:表的創(chuàng)建、修改和刪除 以及表數據的插入、修改和刪除
一、實驗目標:
學習表的創(chuàng)建、插入、修改和刪除以及表數據的插入、修改和刪除。
二、實驗學時數 4學時
三、實驗步驟和內容: 1.手工創(chuàng)建好數據庫XSCJ。
2.為用戶system創(chuàng)建3個表XSB、KCB和CJB(P66-67 例子3.7-3.9,create table用法,自己照書完成)。
CREATE TABLE XSB(XH char(6)NOT NULL PRIMARY KEY, XM char(8)NOT NULL, XB char(2)DEFAULT '1' NOT NULL,第12頁
CSSJ date NOT NULL, ZY char(12)NULL, ZXF number(2)NULL, BZ varchar2(200)NULL)TABLESPACE myts;CREATE TABLE KCB(KCH char(3)NOT NULL PRIMARY KEY,KCM char(16)NOT NULL, KKXQ number(1)NULL, XS number(2)NULL, XF number(1)NOT NULL)TABLESPACE myts;CREATE TABLE CJB(XH CHAR(6)NOT NULL, KCH CHAR(3)NOT NULL, CJ NUMBER(2), XF NUMBER(1), PRIMARY KEY(XH,KCH))TABLESPACE myts;3.學習修改表結構(P70 例子3.11(1)-(3)alter table用法)。(1)在表XSB中增加兩列:JXJ(獎學金等級)、DJSM(獎學金等級說明)。
第13頁 ALTER TABLE XSB ADD(JXJ number(1), DJSM varchar2(40)DEFAULT '獎金1000元');(2)在表XSB中修改名為DJSM的列的默認值。ALTER TABLE XSB MODIFY(DJSM DEFAULT '獎金800元');(3)在表XSB中刪除名為JXJ和DJSM的列。ALTER TABLE XSB DROP COLUMN JXJ;ALTER TABLE XSB DROP COLUMN DJSM;修改好可用命令:describe table_name;查看。4.刪除表(P71 drop table用法)。DROP TABLE table_name;5.向XSCJ數據庫的表XSB中插入一行(P75 例子3.12 insert用法)。INSERT INTO XSB(XH, XM, XB, CSSJ, ZY, ZXF)VALUES('101101', '王林', '男',TO_DATE('19900210','YYYYMMDD'), '計算機', 50);提交數據: Commit;
插入后可用命令:select * from table_name;查看。
第14頁 6.學習刪除表數據(P78 DELETE和TRUNCATE的用法)。將XSCJ數據庫的XSB表中總學分小于50的行刪除: DELETE FROM XSB WHERE ZXF<50;使用TRUNCATE TABLE語句刪除表中的所有數據,且不能恢復。TRUNCATE TABLE table_name;插入后可用命令:select * from table_name;查看。7.為3個表XSB、KCB和CJB插入數據(使用insert.sql)8.學習修改表數據(P78-79 例子3.17-3.20 UPDATE 用法)。UPDATE XSB SET BZ='三好' WHERE XH='101110';UPDATE XSB SET ZXF=ZXF+10;
UPDATE XSB SET ZY='通信工程', BZ='轉專業(yè)學習', XH='101241' WHERE XM= '羅林琳';
UPDATE XS
第15頁 SET ZXF=ZXF+ 4, BZ= '提前修完《數據結構》,并獲得學分'
插入后可用命令:select * from table_name where(條件);查看。9.將數據恢復到剛插入時的狀態(tài)(即把修改過的表清空再插入)。10.了解一下同義詞,知道同義詞的作用(不作重點)。
四、上機作業(yè)
手工安裝數據庫實例xscj和數據庫xscj(快速安裝),用戶表空間myts后,為用戶system創(chuàng)建3個表XSB、KCB和CJB,并插入所有數據。
五、心得體會
這次學習的表創(chuàng)建,刪除和修改的學習使我對數據庫的表的認識更進一步。通過這次的學習,學會對表的創(chuàng)建、修改、刪除。創(chuàng)建表就是按格式寫些代碼;修改(UPDATE+表名+需修改的內容)和刪除(DROP TABLE + 表名)就是使用指定的指令對表進行操作,使之完成想要的目的。
WHERE XM='李明';
實驗五:數據庫查詢練習
一、實驗目標:
學習數據庫數據查詢語句的基本方法以及視圖的使用方法。
二、實驗學時數
第16頁 6學時
三、實驗步驟和內容:
課本例子:4.5,4.6,4.8,4.9,4.12(2),4.14,4.15(2),4.16,4.17 4.18,4.19,4.28,4.29,4.37,4.39(1),(3),4.42,4.43,4.46
(一)學習和掌握課本查詢語句的基本語法和使用方法,完成下面練習(*為必做,@為選做)。
*
1、查詢所有計算機系學生的信息。Select * from xsb;*
2、查詢王同學所修的學號
Select kch from xsb where xm like '王%';*
3、查詢出生于85和86年的女同學的學號和姓名。Select xh,xm from xsb where cssj between to_date('19900101','yyyymmdd')and to_date('19911231','yyyymmdd')and xb='女';*
4、查詢學號為101104所選修的全部課程成績。Select cj from cjb where xh='101104';*
5、檢索每個學生的姓名和年齡。
Select xm,to_char(sysdate,'yyyy')-to_char(cssj,'yyyy')as 年齡 from xsb;*
6、在XS表中檢索學生的姓名和出生年份,輸出的列名為姓名和生年 Select xm,to_char(cssj,'yyyy')as 出生時間 from xsb;*
7、在XS_KC表中,求選修課程206的學生的學號和得分,并將結果按分數降序排序。
第17頁 Select xh,cj from cjb where kch=’206’ order by cj desc;*
8、把課程名為軟件工程的成績從學生選課數據表XS_KC中刪除。Delete from kcb where kcm=(select kch from kcb where kcm=‘軟件工程’);*
9、把女同學的成績提高10%。
Update cjb set cj=cj*1.1 where xh in(select xh from xsb where xb='女')and cj<=90;*
10、如果學號為061106的學生的成績少于90,則加上10分。Update cjb set cj=cj+10 where xh=’061106’and cj<90;*
11、查詢學號為061104的學生選修的課程號和課程名。
Select xh,xm from xsb where xh in(select xh from cjb where kcb=’061104’;
*
12、檢索學習課程號為206的學生學號與姓名。Select xm,xh from xsb where kch=’206’;*
13、檢索‘李明’所選修的全部課程名稱。
Select kcm from kch where xm=(select xm from xsb where xm=’李明’);*
14、查找每個同學的學號及選修課程的平均成績情況。Select xh,avg as 課程號平均成績 from cjb;*
15、求選修了各課程的學生的人數。
Select count(distinct xh)as 選修課程總人數 from cjb;Select kch as課程號 ,count(xh)as 選修人數 group by kch;
第18頁 *
16、查詢平均成績都在80分以上的學生學號及平均成績。Select xh,cj from cjb group by xh having avg(cj)>80;Select xh,cj from cjb group by xh having avg(cj)>80 order by avg(cj);Select xh,cj from cjb group by xh having avg(cj)>80 order by avg(cj)desc;*
17、查詢至少有6人選修的課程號。
Select kch as 課程號 from cjb group by having count(*)>=6;*
18、檢索選修課程號為101或102的學生學號,姓名和所在系
Select xh,xm,zy from kch=(select kch from kcb where kch=’101’and kch= ‘102’;
*
19、統(tǒng)計被學生選修的課程門數。Select cjb 每個學生情況以及選修課程情況
Select * from xsb inner join cjb on xsb.xh=cjb.xh Select xsb.*,cjb.* from xsb,cjb where xsb.xh=cjb.xh *20、查詢沒有選修數據庫的學生學號,姓名和專業(yè)名。
@
21、取出選修‘操作系統(tǒng)’課程的學生姓名。
@
22、檢索至少選修課程“數據結構”和“計算機基礎”的學生學號。@
23、檢索至少選修課程號為101和206的學生姓名。@
24、列出學生所有可能的選課情況。@
25、查詢101號課程得最高分的學生的學號
@
26、‘計算機基礎’課程得最高分的學生的姓名、性別、所在系。
第19頁 @
27、將成績最低的學生的成績加上10分。@
28、所有成績都在70分以上的學生姓名及所在系。@
29、列出選修課程超過3門的學生姓名及選修門數。@30、至少選修了兩門課及以上的學生的姓名和性別 @
31、檢索至少有兩名男生選修的課程名。
@
32、統(tǒng)計每門課程的學生選修人數(超過10人的課程才統(tǒng)計)。@
33、計算機基礎成績比離散數學成績好的學生
@
34、列出每個同學的學號、姓名及選修課程的平均成績情況,沒有選修的同學也列出。
@
35、列出每個同學的學號及選修課程號,沒有選修的同學也列出
(二)視圖
1、創(chuàng)建一個名為zy_view的視圖,該視圖可以用來查看每個系名稱和學生人
Create or replace view zy_view(專業(yè),專業(yè)人數)as select zy,count(xh)from xsb group by zy;
2、創(chuàng)建一名為xs_view的視圖,該視圖可以用來查看每個學生的姓名、選修的課程名和成績。查看視圖。
Create or replace view xs_view(姓名,課程名,成績)as select xm kcm cj from xsb,kcb,cjb where xsb.xh=cjb.xh and cjb.kch=kcb.kch;
3、創(chuàng)建一個名為kc_view的視圖,該視圖可以用來查看每門課的課程號,課程名,選修人數和平均成績。
Create or replace view kc_view(課程號,課程名,選修人數,平均成績)as select kcb.kch,kcm,count(xh),avg(cj)from cjb,kcb where cjb.kch=kcb.kch group by kcb.kch,kcm;
4、利用kc_view視圖,查看平均成績最高的課程名。
Select 課程名 from kc_view where平均成績=(select max(平均成績)from kc_view);
5、修改xs_view視圖,將視圖重定義為每個學生的姓名、選課門數和平均
第20頁 成績。
Create or replace view xs_view(姓名,選課門數,平均成績)as select xm,count(kch),avg(cj)from cjb,xsb where xsb.xh=cjb.xh group by xsb.xh,xm;
6、刪除zy_view視圖。Drop view zy_view;
四、上機作業(yè)
完成實驗內容中的任務,并把語句記錄在每道題的下面。
五、心得體會
這次學習,我知道了對表的內容的查詢,修改的操作,并通過實踐對這次操作命令進一步的熟悉,運用和掌握。還學會了怎么建立視圖,視圖是可以快速的查詢多個表的不同的信息的圖表,它使我們更方便。
實驗六:索引和約束
一、實驗目標:
(1)掌握索引的使用方法。
(2)掌握各種約束即數據完整性的實現方法。
二、實驗學時數 2學時
三、實驗步驟和內容: 1.關于索引
第21頁 建立索引的最大好處是快速存取數據。
假設有10個學生,10門課,則成績表會有100條記錄,對于成績表中某人某門課成績的查找,最壞情況是逐行查找100次,即最后一行。而如果對成績表中的學號和課程號創(chuàng)建索引,則最壞情況只需查找20次(先查找學號,再查找課程號)。
建立索引的原則:(1)先插數據再建索引。
(2)如果經常檢索的內容僅為包含大量數據的表中少于15%的行,就需要創(chuàng)建索引。
(3)建立索引的先后順序會影響查詢的性能。2.創(chuàng)建索引表空間 CREATE TABLESPACE INDX DATAFILE 'D:oracleproduct10.2.0oradataxscjindx01.dbf' SIZE 32M REUSE AUTOEXTEND ON NEXT 1280K MINIMUM EXTENT 128K DEFAULT STORAGE(INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0);2.創(chuàng)建索引
CREATE INDEX kc_name_idx ON KCB(KCM)TABLESPACE ”INDX";3.維護索引
第22頁 ALTER INDEX kc_name_idx
4.刪除索引 DROP INDEX kc_idx;5.數據完整性
生活中有些數據除了數據類型和寬度,還必須要定義其他規(guī)則的,比如學生學號必須是唯一的,不能重復的;性別必須是男或女,成績必須是0-100的范圍等。因此必須使用一些方法對數據進行約束,才得以保持數據完整性。
6.約束
(1)建表同時添加約束: XSB表: 主鍵為學號。KCB表: 課程號為主鍵,開課學期默認值為1,且只能為1-8。CJB表
主鍵為學號和課程號,存在外鍵XH參照XSB表的XH,存在外鍵KCH參照KCB表的KCH。(2)建表后時添加約束 XSB表:
第23頁 RENAME TO kc_idx;性別必須為“男”或者“女”。CJB表:
成績必須>=0且<=100或者為空。7.插入數據驗證。8.思考題
(1)建KCB表時添加約束,使課程號必須為三位0-9數字
(2)建XSB表時添加約束,使學號為101開頭,后三位為0-9數字
四、上機作業(yè)
完成實驗內容中的任務,并把語句記錄在每道題的下面。
五、心得體會
通過這次的學習,我知道了索引的最大好處是快速存取數據。1:先插數據再建索引。2:如果經常檢索的內容僅為包含大量數據的表中少于15%的行,就需要創(chuàng)建索引。3:建立索引的先后順序會影響查詢的性能。這3條是建立索引的原則。
我還知道了可以增加約束,就是制約范圍。
實驗七:PL/SQL編程
一、實驗目標:
(1)掌握變量、運算符以及控制語句的使用。(2)掌握系統(tǒng)函數和自定義函數的使用。
二、實驗學時數 4學時
三、實驗步驟和內容: SYS登錄,先導入數據字典:
第24頁 @D:oracleproduct10.2.0db_1RDBMSADMINcatalog.sql;@D:oracleproduct10.2.0db_1RDBMSADMINcatproc.sql;(1)定義變量
例子1:定義一個長度為10的變量count,其初始值為1,是varchar2類型。
count varchar2(10):= '1';例子2:在表XSB中包含XH列,為了聲明一個變量my_xh與XH列具有相同的數據類型,聲明時可使用點和%TYPE屬性,格式如下:
my_xh XSB.XH%TYPE;例子3:可以使用%ROWTYPE屬性聲明描述表的行數據的記錄。
如:聲明一個記錄名為cj_rec,它與CJB表具有相同的名稱和數據類型,格式如下:
DECLARE cj_rec CJB%ROWTYPE;對于用戶定義的記錄,必須聲明自己的域: DECLARE TYPE TimeRec IS RECORD(HH number(2),MM number(2));(2)程序塊
例子6.6:查詢總學分大于50的學生人數 set serveroutput on DECLARE v_num number(3);
第25頁 BEGIN SELECT COUNT(*)INTO v_num
FROM xsb
WHERE zxf>50;
IF v_num<>0 THEN dbms_output.put_line('總學分>:50的人數為:'|| TO_CHAR(v_num));END IF;END;/ 例子6.9:求10的階乘。DECLARE n number:=1;count1 number:=2;BEGIN LOOP
n:=n*count1;
count1:=count1+1;
IF count1>10 THEN
EXIT;END IF;
第26頁 END LOOP;DBMS_OUTPUT.PUT_LINE(to_char(n));END;/(3)函數
系統(tǒng)函數:例子6.20、6.21、6.22、6.23、6.24 自定義函數:例子6.26、6.27、6.28
如果李明同學的年齡大于20歲,則顯示“李明同學年齡為X歲”,否則打印“李明同學不符合條件” set serveroutput on declare age number(2);begin select to_char(sysdate, 'yyyy')-to_char(cssj, 'yyyy')into age from xsb where xm='李明';if age>20 then dbms_output.put_line('李明同學年齡為'||to_char(age)||'歲');else dbms_output.put_line('李明同學不符合條件');end if;end;/
2.計算1+3+5+……+99的和,并顯示結果。
declare s number:=0;i number:=1;begin loop
第27頁 s:=s+i;i:=i+2;exit when i>99;end loop;dbms_output.put_line(to_char(s));end;/
3.編寫一個函數f_age,可以在xs表中根據姓名求出某人的年齡。
create or replace function f_age(sname in char)return number as age number;begin select to_char(sysdate,'yyyy')-to_char(cssj,'yyyy')into age from xsb where xm=sname;return(age);end;/
4.改寫第1題的程序塊,調用函數f_age來求年齡。set serveroutput on;declare age number(2);begin age:=f_age('李明');if age>20 then dbms_output.put_line('李明同學年齡為'||to_char(age)||'歲');else dbms_output.put_line('李明同學不符合條件');end if;end;/
第28頁
四、上機作業(yè)
完成實驗內容中的任務,并把語句記錄在每道題的下面。
五、心得體會
通過這次的學習,學會了用sql語言編寫簡單的程序,定義和調用簡單函數。在此基礎上還鞏固了sql語句查詢的方法。在以后的學習中要多加理解,上機練習。
實驗八:游標與存儲過程
一、實驗目標:
(1)掌握游標的使用方法。(2)掌握存儲過程的使用方法。
二、實驗學時數 6學時
三、實驗步驟和內容: 游標 例子:
set serveroutput on DECLARE v_xh char(6);v_zxf number(2);CURSOR XS_CUR3
第29頁 IS SELECT XH,ZXF FROM XSB WHERE ZYM='計算機';BEGIN OPEN XS_CUR3;FETCH XS_CUR3 INTO v_xh,v_zxf;WHILE XS_CUR3%FOUND LOOP dbms_output.put_line(v_xh||' '||TO_CHAR(v_zxf));FETCH XS_CUR3 INTO v_xh,v_zxf;END LOOP;CLOSE XS_CUR3;END;1.使用游標,將平均分大于75分的學生的學號、姓名、平均分逐行輸出。
set serveroutput on DECLARE v_xh char(12);v_xm char(12);v_cj number(38);CURSOR XS_CUR3 IS SELECT CJB.XH,XSB.XM,avg(CJ)FROM XSB,CJB WHERE xsb.xh=cjb.xh group by CJB.XH,XSB.XM having avg(cj)>75;
第30頁 BEGIN OPEN XS_CUR3;FETCH XS_CUR3 INTO v_xh,v_xm,v_cj;WHILE XS_CUR3%FOUND LOOP dbms_output.put_line(v_xh||' '||TO_CHAR(v_xm)||v_cj);FETCH XS_CUR3 INTO v_xh,v_xm,v_cj;END LOOP;CLOSE XS_CUR3;END;存儲過程 例子1:
CREATE OR REPLACE PROCEDURE update_info(xname in char)AS xf number;BEGIN SELECT ZXF INTO xf FROM XS WHERE XM=xname;IF XF>60 THEN UPDATE XSB SET BZ='三好學生' WHERE XM= xname;
第31頁
END IF;IF XF<35 THEN UPDATE XS SET BZ='學分未修滿' WHERE XM=xname;END IF;END update_info;執(zhí)行:
(1)EXECUTE update_info('李明');(2)begin update_info('李明');end;例子2: CREATE OR REPLACE PROCEDURE count_grade(zym in char,person_num out number)AS BEGIN
SELECT COUNT(XH)
INTO person_num
FROM XS WHERE ZYM=zym;END count_grade;
第32頁 執(zhí)行:
set serveroutput on DECLARE v_num number;BEGIN count_grade('計算機',v_num);dbms_output.put_line(v_num);END;/ 1.創(chuàng)建一個存儲過程p_delete可以刪除CJB表的信息。CREATE OR REPLACE PROCEDURE p_delete AS
BEGIN delete FROM CJB;END p_delete;執(zhí)行
EXECUTE p_delete;
2.創(chuàng)建一個存儲過程p_insert,可以給學生表添加一條記錄。CREATE OR REPLACE PROCEDURE p_insert(XH IN CHAR,XM IN CHAR,XB IN CHAR,CSSJ IN DATE,ZY IN CHAR,ZXF IN NUMBER,BZ IN CHAR)AS BEGIN insert into xsb values(XH,XM,XB,CSSJ,ZY,ZXF,BZ);END p_insert;執(zhí)行:
execute p_insert('102222','羅','女',to_date('19860310','yyyymmdd'),'通信工程',50,'轉專業(yè)學習');
第33頁
3.創(chuàng)建一個存儲過程p_count,輸入參數為姓名,輸出參數為選課門數,平均成績。CREATE OR REPLACE PROCEDURE p_count(XNO IN CHAR,K_COUNT OUT NUMBER,AVG_CJ OUT NUMBER)BEGIN SELECT count(kch),avg(cj)INTO K_COUNT,AVG_CJ FROM XSB,CJB WHERE XSB.XH=CJB.XH AND XSB.XH=XNO;END p_count;
set serveroutput on DECLARE v_num1 number;v_num2 number(4,2);BEGIN p_count('101104',v_num1,v_num2);dbms_output.put_line(v_num1||' '||v_num2);END;
四、上機作業(yè)
完成實驗內容中的任務,并把語句記錄在每道題的下面。
五、心得體會
通過這次學習,我知道了游標和存儲過程,還知道了游標和存儲過程的使用方法,并且掌握了它們的使用方法,為以后打下基礎。
實驗九:觸發(fā)器、用戶角色創(chuàng)建和邏輯備份
第34頁
一、實驗目標:
(1)掌握觸發(fā)器的使用。
(2)掌握用戶和角色的創(chuàng)建和使用。(3)掌握數據表的導入導出。
二、實驗學時數 2學時
三、實驗步驟和內容:
(一)觸發(fā)器
例子1: 假設XSCJ數據庫中增加一個新表XSB_HIS,表結構和表XSB相同,用來存放從XSB表中刪除的記錄。創(chuàng)建一個觸發(fā)器,當XSB表被刪除一行,把刪除的記錄寫到日志表XSB_HIS中。
CREATE OR REPLACE TRIGGER del_xs BEFORE DELETE ON XSB FOR EACH ROW BEGIN INSERT INTO XSB_HIS(XH,XM, XB,CSSJ, ZY, ZXF,BZ)VALUES(:OLD.XH,:OLD.XM, :OLD.XB, :OLD.CSSJ, :OLD.ZY, :OLD.ZXF, :OLD.BZ);END;1.創(chuàng)建一個觸發(fā)器,當XSB表刪除一個人時,把這個人的選課信息也刪掉。CREATE OR REPLACE TRIGGER del_xs BEFORE DELETE ON XSB FOR EACH ROW BEGIN
第35頁 DELETE FROM CJB WHERE XH=:OLD.XH;END del_xs;
(二)用戶和角色
1.創(chuàng)建一個用戶tom,密碼為cat。該用戶角色為dba。使用該用戶建表,插入數據。
CREATE USER tom identified by cat default tablespace users;grant dba to tom;導入table.sql和insert.sql drop user tom cascade;
(三)數據庫邏輯備份 exp和imp的使用
(1)將XSB,KCB和CJB表導出成為DMP文件
(2)將XSB,KCB和CJB表刪除
(3)將剛導出DMP文件導入恢復3個表
(1)將用戶tom導出成為DMP文件
(2)將用戶tom刪除再重建
(3)將剛導出DMP文件導入恢復用戶tom
四、上機作業(yè)
完成實驗內容中的任務。
五、心得體會
第36頁 通過這次實踐,我明白了什么是觸發(fā)器,并掌握的它的使用方法,還掌握了用戶和角色的創(chuàng)建和使用。還學會了數據表的導入導出,使保存數據變的很容易。
第37頁
第二篇:Oracle數據庫實驗報告
中南林業(yè)科技大學
實驗報告
課程名稱:
Oracle數據庫 專業(yè)班級: 姓名:
學號:
****年**月**日
實驗一
安裝和使用Oracle數據庫
【實驗目的】
1.掌握Oracle軟件安裝過程,選擇安裝組件 2.掌握建立Oracle數據庫,配置網絡連接 3.掌握Oracle企業(yè)管理器的基本操作 4.使用SQL*Plus,登錄到實例和數據庫 5.掌握命令方式的關閉和啟動實例及數據庫 【實驗內容】
1.查看已安裝的Oracle組件
2.查看服務,記錄下和數據庫有關的服務名,將他們設為手動方式,啟動相關服務。
3.配置監(jiān)聽器,查看是否在服務中有LISTENER,是否能啟動。4.配置本地net服務,提示:設置正確的服務器地址和端口號。5.打開SQL*Plus,用SYS和SYSTEM用戶名和密碼登錄。6.思考題:有幾種打開SQL*Plus的方法?分別是什么? 7.用命令關閉實例和數據庫,記錄命令
8.用命令以NOMOUNT的方式啟動實例,再加載數據庫,打開數據庫。
【實驗結論】
1.查看已安裝的Oracle組件
2.查看服務,記錄下和數據庫有關的服務名,將他們設為手動方式,啟動相關服務。
3.配置監(jiān)聽器,查看是否在服務中有LISTENER,是否能啟動。
4.配置本地net服務,提示:設置正確的服務器地址和端口號。
5.打開SQL*Plus,用SYS和SYSTEM用戶名和密碼登錄。
6.思考題:有幾種打開SQL*Plus的方法?分別是什么?(1)直接打開 sql plus 即窗口方式(2)cmd 命令行方式
(3)WEB 頁面中 iSQL*Plus 方式 7.用命令關閉實例和數據庫,記錄命令 SQL>shutdown immediate
8.用命令以NOMOUNT的方式啟動實例,再加載數據庫,打開數據庫。
sql>startup nomount sql>alter database mount;sql>alter database open;sql>startup
(1).用SQLplus 命令:show parameters參數名
(2).用select [列名] from 表名
2.初始化文件有幾種?默認的保存位置在哪里?
初始化文件有三種:數據文件,日志文件,控制文件; 默認的保存位置E:oracleproduct10.2.0oradataorcl
4.打開OEM,查看三類物理文件信息
三類物理文件:數據文件、控制文件、日志文件 數據文件:.DBF存儲表、索引及數據結構信息
日志文件:.LOG記錄對數據庫的所有修改信息,用于恢復
控制文件:.CTL二進制文件,記錄數據庫名、文件標識、檢查點
5.分別用select命令查詢V$parameter動態(tài)性能視圖,用show命令查看全局數據庫名、實例名、是否啟動自動歸檔、標準數據塊大小這四個參數的值,記錄命令和結果。用select命令查詢V$parameter動態(tài)性能視圖
用show命令查看全局數據庫名、實例名
用show命令查看是否啟動自動歸檔、標準數據塊大小
6.如何用命令查看數據文件、控制文件的文件名、存儲位置和狀態(tài)信息?
(1).查看數據文件的文件名、存儲位置和狀態(tài)信息
(2).查看控制文件的文件名、存儲位置和狀態(tài)信息
0
和服務器型文件都要找到),查看各類默認位置并記錄下來(包括物理文件所在目錄,該數據庫相關的各個目錄等),登錄到mydb數據庫。
2.用命令方式手工創(chuàng)建數據庫testorcl
(1)創(chuàng)建批處理文件,建立必需的各級目錄,參考第一題MYDB數據庫的默認目錄。
(4)運行數據庫建立腳本,更改相關服務為手動啟動方式
(5)運行數據字典等創(chuàng)建腳本
3.在DBCA中刪除MYDB數據庫。
Enter valuefor 4:runner Specify log path as parameter 5: Enter valuefor 5: D:oracleproduct10.2.0db_2RDBMSlog
二、完成下面的查詢,記錄查詢命令和結果。1.查詢HR方案種有哪些表,列出表名 2.設置行寬為160,每頁行數為40 3.查詢employees表中所有薪水在3000到6000元之間的員工編號、姓、名、受聘日期、工作代號、薪水、經理代號、部門號,按部門號升序排列,同一部門按員工編號降序排列
4.查詢每個部門的人數、平均薪水、最高薪水、最低薪水,按部門編號升序排列
5.查詢first_name的第三個字母是t的員工編號,first_name,電話號碼,部門編號,部門名稱
6.在job_history表中查詢任職時間超過1年的員工編號,任職歷時月份(保留整數),工作代號,部門代號。
7.查詢每個部門經理的員工編號、姓名、薪水、部門號。
【實驗結論】
一、需要訪問HR示例方案中的表,如果機器上沒有該示例方案,則運行相關包和相應配置裝入HR方案。
1.將hr.rar解壓到D:oracleproduct10.2.0db_2demoschema human_resources目錄下,然后在SQL*PLUS 中執(zhí)行 hr_main.sql
二、完成下面的查詢,記錄查詢命令和結果。1.查詢HR方案種有哪些表,列出表名
5.查詢first_name的第三個字母是t的員工編號,first_name,電話號碼,部門編號,部門名稱
738
實驗五
PL/SQL編程
【實驗目的】
1.熟悉PL/SQL的數據類型和書寫規(guī)則 2.熟悉控制結構和游標的使用 3.編寫和運行函數、過程和觸發(fā)器 【實驗內容】
編寫腳本文件,調試運行腳本文件,并記錄結果。
1.在SQL*Plus中編寫一個PL/SQL塊,功能用于打印學生信息 在DECLARE部分完成:
(2)建立學生信息記錄類型stu_record_type,包括學號,姓名,性別,籍貫,學習成績和活動成績。均為可變長字符類型(3)編寫本地子過程:學生信息打印過程PrintStuRecord,把(1)中定義的記錄類型作為參數(4)定義學生信息記錄變量stu_record 在BEGIN…END部分完成:
(1)為stu_record變量的各個元素賦值如下: 學號:‘2001001’ 姓名:’李新’
性別:‘m’
籍貫:‘黑龍江省哈爾濱市’ 學習成績:‘Excellent’
0
(1)建立學生信息記錄類型stu_record_type,包括學號,姓名,性別,籍貫,學習成績和活動成績。均為可變長字符類型
set serveroutput on declare type stu_record_type is record
(s_no varchar2(8), s_name varchar2(10), s_sex varchar2(2), s_address varchar2(20), s_studyscore varchar2(10), s_activescore varchar2(10));(2)編寫本地子過程:學生信息打印過程PrintStuRecord,把中定義的記錄類型作為參數
procedure PrintStuRecord as begin dbms_output.put_line('學號:'|| stu_record.s_no);dbms_output.put_line('姓名 :'|| stu_record.s_name);dbms_output.put_line('性別:'|| stu_record.s_sex);dbms_output.put_line('籍貫:'|| stu_record.s_address);dbms_output.put_line('學習成績:'|| stu_record.s_studyscore);dbms_output.put_line('活動成績:'|| stu_record.s_activescore);end PrintStuRecord;(3)定義學生信息記錄變量stu_record stu_record stu_record_type;在BEGIN…END部分完成:
(4)為stu_record變量的各個元素賦值如下: 學號:‘2001001’ 姓名:’李新’
性別:‘m’
籍貫:‘黑龍江省哈爾濱市’
2.建立對bookinfo表的DML觸發(fā)器,一旦bookinfo表發(fā)生了任何變化,立即觸發(fā),對bookinfo表的數據進行統(tǒng)計,結果存儲在數據統(tǒng)計表中
(1)如果沒有則建立bookinfo表,選擇建立在scott用戶下,表結構為(bookno varchar2(36)Primary key, bookname varchar2(40)not null, authorname varchar2(10)not null, publishtime date, bookprice float)
create table bookinfo(bookno varchar2(36)Primary key,4
Selectcount(bookno),count(distinct authorname)from bookinfo;end;/
(4)在bookinfo表中插入、刪除和更新信息,再查看major_stats表中數據的變化 <1>插入
647
實驗六
模式對象管理與安全管理
【實驗目的】
1.了解模式對象的類型
2.掌握在OEM中操作模式對象的方法
3.掌握命令方式建立表、視圖、索引等常見對象的方法 4.熟悉Oracle中權限分類和設置,理解系統(tǒng)提供用戶的角色和權限
5.熟練使用建立用戶、角色,為用戶授權、授予角色的命令
【實驗內容】
1.創(chuàng)建一個TESTUSET用戶,密碼為test,默認表空間為user表空間
2.創(chuàng)建用戶后為其授予登錄數據庫和創(chuàng)建數據庫對象的權限 3.用TESTUSER用戶登錄數據庫
4.創(chuàng)建學生信息表(學號,姓名,性別,入學成績),定義主鍵和輸入數據(至少5條數據),提交添加的數據。并完成下面的題目:
(1)再繼續(xù)添加2條數據,設置一個保存點savepoint,再添加1條數據,執(zhí)行回退到保存點的回退命令。查看此時表中數據(2)查詢入學成績大于480的學生信息(3)建立男生信息視圖
(4)在“成績”字段上建立B-樹索引
5.創(chuàng)建一個表簇,名為empl_dep,容納empl表和dep表,有公
第三篇:oracle上機實驗報告格式規(guī)范
Oracle上機實驗報告
學生姓名:學號:班級:實驗日期:
實驗名稱:
實驗目的:
實驗內容:
實驗步驟及分析:(此部分為關鍵內容:要求整理實驗主要步驟,總結編寫實驗過程中遇到哪些問題,如何解決的,若未解決也應總結,回答思考題的答案)
第四篇:Oracle數據庫 圖書管理系統(tǒng)實驗報告
圖書管理系統(tǒng)(Oracle)
1、創(chuàng)建表空間student_library
2、(1)創(chuàng)建表Administrator
(2)創(chuàng)建表library
(3)創(chuàng)建表student
(4)創(chuàng)建表lent_library
(5)創(chuàng)建表booktype
3、(1)創(chuàng)建表空間student_library
create tablespace student_library datafile 'C:oracleproduct10.2.0oradataorclstudent_library' size 100M autoextend on;
(2)創(chuàng)建表Administrator create table Administrator(AdministratorID number(20)primary key,AdministratorName varchar2(25),sex varchar2(5),beizhu varchar2(30),bookID varchar2(20), foreign key(bookID)references library(bookID))tablespace student_library;
向Administrator表插入數據 insert into Administrator values(100421101,'張三','男',' ',100421)insert into Administrator values(100421102,'李四','女',' ',100422)insert into Administrator values(100421103,'王五','男',' ',100423)對Administrator表刪除數據
delete from Administrator where AdministratorID=100421103 ——刪除Administrator表中管理員編號為‘100421103’的一行數據 對Administrator表查詢數據
select * from Administrator order by AdministratorID ——按照管理員的ID號對Administrator表進行排列 向Administrator表修改數據
update Administrator set AdministratorName=‘王明’where AdministratorID=100421101 ——對Administrator表中管理員編號為‘100421101’的姓名改為“王明” update Administrator set sex=‘女’where AdministratorID=100421103 ——對Administrator表中管理員編號為‘100421103’的性別改為“女”(3)創(chuàng)建表library create table library(bookID number(20)primary key,bookName varchar2(20),author varchar2(10),press varchar2(20),publishDate varchar2(50),price number(20),leibienumber number(20),state varchar2(8),studentID number(20),foreign key(studentID)references student(studentID))tablespace student_library;
向library表插入數據 insert into library
values(100421,'Oracle數據庫管理','馬曉玉','清華大學出版社','2011-11-8',40,'013999',' ',100421203)insert into library
values(100422,'ASP.NET網站設計','唐慧','南京大學出版社','2011-5-18',32,'165923',' ',100421205)insert into library
values(100423,'JavaScript程序設計','徐元','蘇州大學出版社','2011-2-12',28,'265894',' ',100421207)對library表刪除數據
delete from library where bookID=100422 ——刪除library表中書籍編號為‘100422’的一行數據 向library表查詢數據
select bookID,bookName,author,press,publishDate,price from library order by bookID ——查詢library表中的bookID,bookName,author,press,publishDate,price的數據根據書籍的編號進行排序
向library表修改數據
update library set author=‘張敏’where bookID=100422 ——對library表中書籍編號為‘100422’的作者改為“張敏”
(4)創(chuàng)建表student create table student(studentID number(20)primary key,studentName varchar2(50),sex varchar2(2),department varchar2(10),studentPhone number(15),borrowID number(20),password number(10))tablespace student_library;
向student表插入數據 insert into student values(100421203,'王逸','男','信電系','***','123456','521568')insert into student values(100421205,'劉娟','女','食品系','***','256302','269756')insert into student values(100421207,'張一凡','男','園林園藝系','***','687456','305621')對student表刪除數據
delete from student where studentName=‘張一凡’
——刪除student表中學生姓名為‘張一凡’的一行數據 向student表修改數據
update student set department=‘經貿系’where studentID=100421205 ——對student表中學生學號為‘100421205’的系部名稱改為“經貿系”
(5)創(chuàng)建表lent_library create table lent_library(lentID number(20)primary key,bookID number(20),borrowbookID number(20),borrowDate varchar2(50),borrowState varchar2(30),foreign key(bookID)references library(bookID))tablespace student_library;
向lent_library表插入數據 insert into lent_library values(12345,'100421','1360','2012-3-15','還未歸還')insert into lent_library values(21350,'100422','2035','2012-1-6','已經歸還')insert into lent_library values(13056,'100423','1503','2012-3-22','還未歸還')向lent_library表刪除數據 delete from lent_library where bookID=‘100423’
——刪除lent_library表中書籍編號為‘100423’的一行數據 向lent_library表查詢數據
select lentID,bookID,borrowbookID,borrowState from lent_library where bookID=‘10042%’ ——查詢lent_library表中的lentID,bookID,borrowbookID,borrowState數據根據書籍編號前五位數位‘10042’進行排序
(6)創(chuàng)建表booktype create table booktype(Leibienumber number(20)primary key,booktype varchar2(20))tablespace student_library;
向booktype表插入數據 insert into booktype values('4630','文學類')insert into booktype values('1623','科普類')insert into booktype values('2412','理工科類')向booktype表刪除數據
delete from booktype where leibienumber=‘1623’
——刪除booktype表中類別編號為‘1623’的一行數據 向booktype表修改數據
update booktype set booktype=‘計算機類’where leibienumber=‘2412’ ——對booktype表中類別編號為‘2412’的書籍類型改為“計算機類”
4、(1)創(chuàng)建索引
【1】create index AdministratorID _index on Administrator(AdministratorID)tablespace users;
—在Administrator表的AdministratorID列創(chuàng)建一個名為Aid_index的索引
【2】create bitmap index studentName_index on student(studentName)tablespace users;—在student表的學生姓名列上創(chuàng)建位圖索引
(2)創(chuàng)建視圖
create or replace view view_library as select bookID,bookName,author,press,publishDate,price from library;—創(chuàng)建視圖view_library,查詢library表中的bookID,bookName,author,press,publishDate,price
5、(1)創(chuàng)建匿名塊
set serveroutput on declare out_text varchar2(50);begin out_text:='程序塊示例';dbms_output.put_line(out_text);exception when others then dbms_output.put_line('捕獲一個異常');end;
(2)創(chuàng)建存儲過程
create or replace procedure InsertAdministrator as begin insert into Administrator(AdministratorID,administratorName,sex)values(100421105,'李凡','男');exception when dup_val_on_index then
dbms_output.put_line('重復的編號');when others then
dbms_output.put_line('發(fā)生其他錯誤!');end InsertAdministrator;—創(chuàng)建一個存儲過程InsertAdministrator,向Administrator表的AdministratorID,administratorName和sex列分別插入數據100421105,李凡和男三個值。
(3)創(chuàng)建函數
create or replace function Factorial(n in number)return number as result number: =1;begin for i in 1...n loop result: =result*i;end loop;return(result);end Factorial;(4)創(chuàng)建觸發(fā)器 create table student_log(studentID number(20),studentName varchar2(50),sex varchar2(2),department varchar2(10));—創(chuàng)建一個日志表,記錄對student表所做的修改,日志表名為student_log create or replace trigger insertlog_trigger after insert on student begin insert into student_log values(100421230,'路奇', '女', '園林系');end;—在student表上創(chuàng)建一個語句級Insert觸發(fā)器
6、用戶權限和角色管理
(1)創(chuàng)建用戶user_student create user user_student identified by student default tablespace student_library
(2)為用戶user_student設置系統(tǒng)權限 grant create session to user_student;
(3)為用戶user_student撤銷系統(tǒng)權限
revoke create session from user_student;
(4)創(chuàng)建角色user_library
create role user_library identified by student
(5)為角色user_library授予權限
grant user_library to public;
(6)啟用角色user_library
set role user_library identified by student
第五篇:Oracle 的安裝與配置實驗報告
Oracle 的安裝與配置實驗報告
班 級:10網工三班
學生姓名:謝昊天
學號:1215134046
實驗目的和要求:
掌握Oracle的基本安裝方法。掌握Oracle 10g的網絡配置。能夠使用DBCA創(chuàng)建數據庫。
實驗內容:
1、Oracle 10g的安裝。
2、Oracle 10g的網絡配置。
3、使用DBCA創(chuàng)建數據庫。
實驗步驟與調試過程:
安裝oracle:
1、執(zhí)行Oracle10g中的安裝文件,點擊setup開始Oracle 10g的安裝
2、出現“選擇要使用的安裝方法”窗口選擇高級安裝,點擊下一步。
3、所需安裝的路徑,點擊下一步;
4、在此可以選擇企業(yè)版,點擊下一步
5、選擇“創(chuàng)建啟動數據庫”
6、選擇“創(chuàng)建象樣本方案的數據庫”選項),點擊下一步。
7、選擇默認設置,即“使用Database Console管理數據庫”,以便在本地對數據庫進行管理。單擊“下一步”按鈕。
8、指定數據庫文件存儲選項選擇默認設置,單擊“下一步”按鈕。
9、即選中“不啟用自動備份”單選按鈕,單擊“下一步”按鈕
10、選擇“所有用戶都使用同一個口令”選項,口令輸入oracle
11、“概要”窗口按照全局設置、產品語言、空間要求、新安裝組件分類顯示安裝設置。可以先在概要窗口中檢查一下這些設置是否滿意,如不滿意可以單擊“上一步”按鈕,返回到前一個步驟修改。
12、單擊“口令管理”按鈕,彈出“口令管理”窗口。
13、口令管理窗口。可以分別為SYS、SYSTEM、SCOTT用戶設置口令。
14、安裝完成,點擊退出按鈕,退出Oracle universal installer。可以記下該頁面上面的文本內容,將來通過web訪問控制oracle。
15、配置Oracle 10g網絡環(huán)境
網絡配置
1、安裝目錄中點擊Net Manager,進入如下界面。
2、選擇協(xié)議,這里選擇TCP/IP
3、輸入主機的IP地址或名稱,然后輸入端口號。
4、選擇服務器。
5、通過網頁打開登陸界面進行驗證。
創(chuàng)建DBCA數據庫。
1、開始菜單中的Database Configuration Assistant(DBCA),單擊下一步。
2、選擇創(chuàng)建數據庫,單擊下一步,“數據庫模板”窗口,單擊常規(guī)用途模板,然后單擊下一步。
3、輸入全局數據庫名和SID,保持configure the Database with Enterprise Manager被選中,“數據庫連接選項”窗口,選擇在缺省情況下您需要您的數據庫工作的模式。單擊未用模式或分享服務器模式并單擊下一步。
4、“初始化參數”窗口的字符集選項卡上,單擊使用 Unicode(AL32UTF8)。
5、當數據庫創(chuàng)建過程完成時,單擊完成。
實驗結果:
1、oracle安裝完成,可以通過web訪問控制oracle。
2、oracle安裝成功后可以通查看服務,也可以通過sqlplus+用戶名/密碼來進行驗證。
3、網絡配置好后可以通過http://PC-201301151832:1158/em來驗證,還可以查看oracle的各項作用。
4、可以通過網頁來查看發(fā)現DBCA數據庫創(chuàng)建成功。
疑難小結:
通過本次試驗,我對Oracle 的安裝與配置思想有了進一步的了解,通過動手實現Oracle 的安裝與配置,更加深刻的理解了Oracle 安裝的特點。在實驗的過程中同時,發(fā)現如果在Oracle安裝時候同時創(chuàng)建一個數據庫實例會比先安裝Oracle程序,再創(chuàng)建數據庫慢。如果一開始不創(chuàng)建一個數據庫實例,那么Oracle不會往系統(tǒng)服務里安裝服務項。并且在實驗過程中,回顧書本上的理論知識,鞏固了我的知識。
主要算法和清單程序:
1、只需要安裝包然后點擊 setup、按照提醒 就可以進行安裝;
2、創(chuàng)建數據庫的語句 和一些命令;
3、Oracle 10g網絡環(huán)境配置;
4、操作系統(tǒng)(XP),安裝oracle10g;
5、驗證安裝是否正確;
6、看相關服務是否正常啟動;
7、登錄sql *plus客戶端和OEM驗證;
8、把oracle相關服務設置成手動啟動(不讓自動啟動,這樣可以減輕系統(tǒng)負擔);
9、建立一個批處理文件,通過它實現oracle服務的啟動和停止;
10、配置本地服務命名,本地服務器有問題時連接遠程服務器操作(net manager)。