【正文】
姓名。1990010139。yyyymmdd39。1991123139。yyyymmdd39。女 39。 Select cj from cjb where xh=39。* 檢索每個學生的姓 名和年齡。yyyy39。yyyy39。* 在 XS表中檢索學生的姓名和出生年份,輸出的列名為姓名和生年 Select xm,to_char(cssj,39。)as 出生時間 from xsb。 第 17頁 Select xh,cj from cjb where kch=’206’ order by cj d esc。 Delete from kcb where kcm=(select kch from kcb where kcm=‘ 軟件工程 ’)。 Update cjb set cj=cj* where xh in(select xh from xsb where xb=39。)and cj 如果學號為 061106的學生的成績少于 90,則加上 10分。 Select xh,xm from xsb where xh in(select xh from cjb where kcb=’061104’。 Select xm,xh from xsb where kch=’206’。 Select kcm from kch where xm=(select xm from xsb where xm=’ 李明 ’)。 Select xh,avg as 課程號平均成績 from cjb。 Select count(distinct xh)as 選修課程總?cè)藬?shù) from cjb。 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)desc。 Select kch as 課程號 from cjb group by having count(*)=6。 * 1統(tǒng)計被學生選修的課程門數(shù)。 2取出選修 ‘ 操作系統(tǒng) ’ 課程的學生姓名。 2檢索至少選修課程號為 101和 206的學生姓名。 2查詢 101號課程得最高分的學生的學號 2 ‘ 計算機基礎 ’ 課程得最高分的學生的姓名、性別、所在系。 2所有成績都在 70 分以上的學生姓名及所在系。 至少選修了兩門課及以上的學生的姓名和性別 3檢索至少有兩名男生選修的課程名。 3計算機基礎成績比離散數(shù)學成績好的學生 3列出每個同學的學號、姓名及選修課程的平均成績情況,沒有選修的同學也列出。 創(chuàng)建一名為 xs_view的視圖,該視圖可以用來查看每個學生的姓名、選修的課程名和成績。 Create or replace view xs_view(姓名 ,課程名 ,成績 )as select xm kcm cj from xsb,kcb,cjb where = and =。 Create or replace view kc_view(課程號 ,課程名 ,選修人數(shù) ,平均成績 )as select ,kcm,count(xh),avg(cj)from cjb,kcb where = group by ,kcm。 Select 課程名 from kc_view where平均成績 =(select max(平均成績 )from kc_view)。 Create or replace view xs_view(姓名 ,選課門數(shù) ,平均成績 )as select xm,count(kch),avg(cj)from cjb,xsb where = group by ,xm。 Drop view zy_view。 五、心得體會 這次學習,我知道了對表的內(nèi)容的查詢,修改的操作,并通過實踐對這次操作命令進一步的熟悉,運用和掌握。 實驗六:索引和約束 一、實驗目標: ( 1)掌握索引的使用方法。 二、實驗學時數(shù) 2學時 三、實驗步驟和內(nèi)容: 第 21頁 建立索引的最大好處是快速存取數(shù)據(jù)。而如果對成績表中的學號和課程號創(chuàng)建索引,則最壞情況只需查找 20次(先查找學號,再查找課程號)。 ( 2)如果經(jīng)常檢索的內(nèi)容僅為包含大量數(shù)據(jù)的表中少于 15%的行,就需要創(chuàng)建索引。 CREATE TABLESPACE INDX DATAFILE 39。 SIZE 32M REUSE AUTOEXTEND ON NEXT 1280K MINIMUM EXTENT 128K DEFAULT STORAGE(INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 4096 PCTINCREASE 0)。3. 維護索引 第 22頁 ALTER INDEX kc_name_idx DROP INDEX kc_idx。因此必須使用一些方法對數(shù)據(jù)進行約束,才得以保持數(shù)據(jù)完整性。 KCB 表: 課程號為主鍵,開課學期默認值為 1,且只能為 18。( 2)建表后時添加約束 XSB表: 第 23頁 RENAME TO kc_idx。 CJB表: 成績必須 =0且 ( 1)建 KCB表時添加約束,使課程號必須為三位 09 數(shù)字 ( 2)建 XSB表時添加約束,使學號為 101開頭,后三位為 09數(shù)字 四、上機作業(yè) 完成實驗內(nèi)容中的任務,并把語句記錄在每道題的下面。 1:先插數(shù)據(jù)再建索引。 3:建立索引的先后順序會影響查詢的性能。 我還知道了可以增加約束,就是制約范圍。( 2)掌握系統(tǒng)函數(shù)和自定義函數(shù)的使用。D:.sql。 count varchar2(10):= 39。例子 2:在表 XSB中包含 XH列,為了聲明一個變量 my_xh與 XH列具有相同的數(shù)據(jù)類型,聲明時可使用點和 %TYPE屬性,格式如下: my_xh %TYPE。 如:聲明一個記錄名為 cj_rec,它與 CJB表具有相同的名稱和數(shù)據(jù)類型,格式如下: DECLARE cj_rec CJB%ROWTYPE。( 2)程序塊 例子 :查詢總學分大于 50的學生人數(shù) set serveroutput on DECLARE v_num number(3)。 IF v_num0 THEN (39。|| TO_CHAR(v_num))。END。 DECLARE n number:=1。BEGIN LOOP n:=n*count1。 IF count110 THEN EXIT。 第 26頁 END LOOP。END。begin select to_char(sysdate, 39。)to_char(cssj, 39。)into age from xsb where xm=39。if age20 then (39。||to_char(age)||39。)。李明同學不符合條件 39。end if。/ 1+3+5+??+99 的和,并顯示結(jié)果。i number:=1。i:=i+2。end loop。end。 create or replace function f_age(sname in char)return number as age number。yyyy39。yyyy39。return(age)。/ 1題的程序塊,調(diào)用函數(shù) f_age來求年齡。declare age number(2)。李明 39。if age20 then (39。||to_char(age)||39。)。李明同學不符合條件 39。end if。/ 第 28頁 四、上機作業(yè) 完成實驗內(nèi)容中的任務,并把語句記錄在每道題的下 面。在此基礎上還鞏固了 sql語句查詢的方法。 實驗八:游標與存儲過程 一、實驗目標: ( 1)掌握游標的使用方法。 二、實驗學時數(shù) 6學時 三、實驗步驟和內(nèi)容: 游標 例子: set serveroutput on DECLARE v_xh char(6)。CURSOR XS_CUR3 第 29頁 IS SELECT XH,ZXF FROM XSB WHERE ZYM=39。BEGIN OPEN XS_CUR3。WHILE XS_CUR3%FOUND LOOP (v_xh||39。||TO_CHAR(v_zxf))。END LOOP。END。 set serveroutput on DECLARE v_xh char(12)。v_cj number(38)。 第 30頁 BEGIN OPEN XS_CUR3。WHILE XS_CUR3%FOUND LOOP (v_xh||39。||TO_CHAR(v_xm)||v_cj)。END LOOP。END。BEGIN SELECT ZXF INTO xf FROM XS WHERE XM=xname。三好學生 39。 第 31頁 END IF。李明 39。(2)begin update_info(39。)。例子 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。 第 32頁 執(zhí)行: set serveroutput on DECLARE v_num number。計算機39。(v_num)。/ p_delete可以刪除 CJB表的信息。END p_delete。 p_insert,可以給學生表添加一條記錄。END p_insert。10222239。羅 39。女 39。1986031039。yyyymmdd39。通信工程 39。轉(zhuǎn)專業(yè)學習 39。 第 33頁 p_count,輸入?yún)?shù)為姓名,輸出參數(shù)為選課門數(shù),平均成績。END p_count。v_num2 number(4,2)。10110439。(v_num1||39。||v_num2)。 四、上機作業(yè) 完成實驗內(nèi)容中的任務,并把語句記錄在每道題的下面。 實驗九:觸發(fā)器、用戶角色創(chuàng)建和邏輯備份 第 34頁 一、實驗目標: ( 1)掌握觸發(fā)器的使用。( 3)掌握數(shù)據(jù)表的導入導出。創(chuàng)建一個觸發(fā)器,當 XSB表被刪除一行,把刪除的記錄寫到日志表 XSB_HIS 中。END。 CREATE OR REPLACE TRIGGER del_xs BEFORE DELETE ON XSB FOR EACH ROW BEGIN 第 35頁 DELETE FROM CJB WHERE XH=:。 (二)用戶和角色 tom,密碼為 cat。使用該用戶建表,插入數(shù)據(jù)。grant dba to tom。 (三)數(shù)據(jù)庫邏輯備份 exp 和 imp的使用 ( 1)將 XSB,KCB和 CJB表導出成為 DMP文件 ( 2)將 XSB,KCB和 CJB表刪除 ( 3)將剛導出 DMP文件導入恢復 3個表 ( 1)將用戶 tom導出成為 DMP文件 ( 2)將用戶 tom刪除再重建 ( 3)將剛導出 DMP文件導入恢復用戶 tom 四、上機作業(yè) 完成實驗內(nèi)容中的任務。還學會了數(shù)據(jù)表的導入導出,使保 存數(shù)據(jù)變的很容易。 : 可移植性 ORACLE采用 C語言開發(fā)而成,故產(chǎn)品與硬件和操作系統(tǒng)具有很強的獨立性。可在 UNIX、 DOS、 Windows等操作系統(tǒng)上運行。并提供讀取其它數(shù)據(jù)庫文件的間接方法。 ( 1) ORACLE的文件結(jié)構(gòu) 一個 ORACLE數(shù)據(jù)庫系統(tǒng)包括以下 5類文件 :ORACLE RDBMS的代碼文件。 日志文件 須有兩個或兩個以上,用來記錄所有數(shù)據(jù)庫的變化,用于數(shù)據(jù)庫的恢復。參數(shù)文件 含有數(shù)據(jù)庫例程起時所需的配置參數(shù)。 SGA( System Global Area)包括數(shù)據(jù)庫緩沖區(qū)、日志緩沖區(qū)及共享區(qū)域。一個 Server進程起動時,就為其分配一個 PGA區(qū),以存放數(shù)據(jù)及控制信息。 ② 服務進程 處理與之相連的一組用戶進程的請求。 LGWR( Log Writer)進程,負責把日志從 SGA中的緩沖區(qū)中寫到日志文件中。 PMON( Process Moniter)進程,當一用戶進程異常結(jié)束時,該進程負責恢復未完成的事務,注銷失敗的用戶進程,釋放用戶進程占用的資源。每當聯(lián)機日志文件寫滿時,該進程將其拷貝到歸檔存儲設備上。 構(gòu)成 ORACLE的數(shù)據(jù)庫的邏輯結(jié)構(gòu)包括 :( 1)表空間 ( 2) 5種類型的段( segment) ① 數(shù)據(jù)段 。③ 回滾( rollbock)段 。⑤ 自舉( bootstrap)段。一個數(shù)據(jù)庫可以有一個或多個表空間,初始的表空間命名為 SYSTEM,每一個邏輯表空間對應于一個或多個物理文件。為 數(shù)據(jù)庫用戶設置空間配額。后備或恢復數(shù)據(jù)。 在每個數(shù)據(jù)庫中都存在 SYSTEM表空間,它在建立數(shù)據(jù)庫時自動建立。 SYSTEM表空間總是在線的,像其它表空間一樣,可以通過增加新的數(shù)據(jù)庫文件來擴大。但一個表和索引不能跨越表空間,可跨越組成表空間的文件。 SYSTEM表空間必須在線。執(zhí)行表空間離線備份。 可以增加數(shù)據(jù)文件擴大已有的表空間,也可增加新的表空間使數(shù)據(jù)庫容量增大,或分配空間給某個應用。使用 CREATE TABLESPACE語句可建立一個新的表空間。一個段是分配給數(shù)據(jù)庫用于數(shù)據(jù)存儲的范圍的集合。段是表空間的下一個邏輯存儲的級別。一個數(shù)據(jù)庫最多需要五種段類型 : 數(shù)據(jù)段 一個包含一個表(或聚集)的全部數(shù)據(jù),一個表(或聚集)總有一個單個數(shù)據(jù)段。一個表可以有一個、多個或者沒有索引段 ,取決于它所擁有的索引個數(shù)。 回滾段 每個 DB有一個或多