




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精品文檔數(shù)據(jù)庫原理及應(yīng)用- SQL Server 2000 陳學(xué)進(jìn) 于 2010年三月實驗指導(dǎo)書 實驗一 用E-R圖設(shè)計數(shù)據(jù)庫1. 實驗?zāi)康?) 熟悉E-R模型的基本概念和圖形的表示方法。2) 掌握將現(xiàn)實世界的事物轉(zhuǎn)化成E-R圖的基本技巧。3) 熟悉關(guān)系數(shù)據(jù)模型的基本概念。4) 掌握將E-R圖轉(zhuǎn)化成關(guān)系表的基本技巧。2. 實驗內(nèi)容1) 根據(jù)需求確定實體,屬性和聯(lián)系。2) 將實體,屬性和聯(lián)系轉(zhuǎn)化為E-R圖。3) 將E-R圖轉(zhuǎn)化為表。3. 實驗步驟1) 設(shè)計能夠表示出班級與學(xué)生關(guān)系的數(shù)據(jù)庫。確定班級實體和學(xué)生實體的屬性。確定班級和學(xué)生之間的聯(lián)系,給聯(lián)系命名并指出聯(lián)系的類型。確定聯(lián)系本身的屬性。畫出
2、班級與學(xué)生關(guān)系的E-R圖。將E-R圖轉(zhuǎn)化為關(guān)系模式,寫出各關(guān)系模式并標(biāo)明各自的主碼或外碼。2) 設(shè)計能夠表示出顧客與商品關(guān)系的數(shù)據(jù)庫。確定顧客實體和商品實體的屬性。確定顧客和商品之間的聯(lián)系,給聯(lián)系命名并指出聯(lián)系的類型。確定聯(lián)系本身的屬性。畫出顧客與商品關(guān)系的E-R圖。將E-R圖轉(zhuǎn)化為關(guān)系模式,寫出表的關(guān)系模式并標(biāo)明各自的主碼或外碼。3) 設(shè)計能夠表示學(xué)校與校長關(guān)系的數(shù)據(jù)庫。確定學(xué)校實體和校長實體的屬性。確定學(xué)校和校長之間的聯(lián)系,給聯(lián)系命名并指出聯(lián)系的類型。確定聯(lián)系本身的屬性。畫出學(xué)校與校長關(guān)系的E-R圖。將E-R圖轉(zhuǎn)化為關(guān)系模式,寫出表的關(guān)系模式并標(biāo)明各自的主碼或外碼。4) 設(shè)計能夠表示出房地
3、產(chǎn)交易中客戶,業(yè)務(wù)員和合同三者之間關(guān)系的數(shù)據(jù)庫。 確定客戶實體,業(yè)務(wù)員實體和合同實體的屬性。確定客戶,業(yè)務(wù)員和合同三者之間的聯(lián)系,給聯(lián)系命名并指出聯(lián)系的類型。確定聯(lián)系本身的屬性。畫出客戶,業(yè)務(wù)員和合同三者關(guān)系E-R圖。將E-R圖轉(zhuǎn)化為關(guān)系模式,寫出表的關(guān)系模式并標(biāo)明各自的主碼或外碼。5) 學(xué)生之間相互交流各自設(shè)計的數(shù)據(jù)庫。實驗二 確定表中的關(guān)鍵字1. 實驗?zāi)康?) 正確理解候選關(guān)鍵字,主關(guān)鍵字,組合關(guān)鍵字,外關(guān)鍵字的基本概念。2) 能夠正確判斷給定的表中各種類型的關(guān)鍵字。3) 在設(shè)計數(shù)據(jù)庫時能正確指定各種類型的關(guān)鍵字,知道如何實施數(shù)據(jù)完整性。2. 實驗內(nèi)容1) 復(fù)習(xí)候選關(guān)鍵字,主關(guān)鍵字,外關(guān)鍵
4、字,組合關(guān)鍵字以及數(shù)據(jù)完整性的基本概念。2) 在給出的部門表和員工表中能正確標(biāo)識出各種類型的關(guān)鍵字。3. 實驗步驟1) 寫出候選關(guān)鍵字,主關(guān)鍵字,組合關(guān)鍵字,外關(guān)鍵字,實體完整性,域完整性,參照完整性的定義。已知部門表和員工表分別見表2-1和表2-2 表2-1部門表部門代碼部門名負(fù)責(zé)人地點0001生產(chǎn)部李華江浙江杭州0002銷售部張麗浙江寧波0003市場部王欣浙江溫州 表2-2員工表員工代碼姓名家庭住址聯(lián)系電話郵政編碼部門代碼200001王華杭州869609863100060001200002李想富陽854387693100100003200003張麗杭州6789354231001700022
5、00004李華江蕭山8284987331010100012) 確定部門表和員工表中的候選關(guān)鍵字,并陳述理由。3) 選擇部門表和員工表的關(guān)鍵字。4) 在部門表和員工表的結(jié)構(gòu)中標(biāo)注主關(guān)鍵字。5) 在員工表中確定可能的組合關(guān)鍵字,并陳述理由。6) 確定在部門表和員工表中共有的屬性。7) 指出哪個表中的屬性是外關(guān)鍵字。8) 確定哪個表是主表,哪個表是從表。9) 部門表和員工表是如何通過關(guān)鍵字實施數(shù)據(jù)完整性的。實驗三 關(guān)系規(guī)范化1. 實驗?zāi)康?) 了解函數(shù)依賴的基本概念。2) 能正確判斷某一關(guān)系是屬于第幾范式。3) 掌握規(guī)范化范式的方法。2. 實驗內(nèi)容1) 復(fù)習(xí)函數(shù)依賴,數(shù)據(jù)規(guī)范化,范式的基本概念以及各
6、級范式的判別標(biāo)準(zhǔn)。2) 判斷給定的表滿足哪級范式的條件。3) 將給定的表轉(zhuǎn)換成滿足特定等級范式條件的表。3. 實驗步驟1) 寫出函數(shù)依賴,數(shù)據(jù)規(guī)范化,范式的定義以及各級范式的判別標(biāo)準(zhǔn)。2) 有表3-1所示的項目表1,判斷其是否滿足第一范式的條件,并說明理由。表3-1 項目表1項目代碼職員代碼部門累計工時間P27E101系統(tǒng)集成部90P51101P2060P27E305銷售部109P2298P51E508行政辦公室NULLP27723) 有表3-2所示的項目表2,判斷其是否滿足第二范式的條件,并說明理由。 表3-2 項目表2項目代號職員代碼部門累計工作時間P27E101系統(tǒng)集成部90P27E30
7、5財務(wù)部10P51E508行政辦公室NULLP51E101系統(tǒng)集成部101P20E101系統(tǒng)集成部60P27E508行政辦公室724) 有表3-3所示的職員表,判斷其是否滿足第三范式的條件,并說明理由。 表3-3 職員表職員代碼部門部門負(fù)責(zé)人代碼E101系統(tǒng)集成部E901E305財務(wù)部E909E402銷售部E909E508行政辦公室E908E607財務(wù)部E909E608財務(wù)部E9095) 有表3-4所示的項目表3,判斷其是否滿足第三范式的條件,并說明理由。 表3-4 項目表3項目代碼職員代碼職員姓名累計工作時間P2E1李華玉48P5E2陳家偉100P6E3張勤15P3E4謝成權(quán)2505P5E4
8、謝成權(quán)75P5E1李華玉406) 將項目表1轉(zhuǎn)換成滿足第一范式條件的表。7) 將項目表2轉(zhuǎn)化成滿足第二范式條件的表。8) 將職員表轉(zhuǎn)換成滿足第三范式條件的表。9) 將項目表3轉(zhuǎn)換成滿足BCNF條件的表。10) 非規(guī)范化數(shù)據(jù)帶來的不利影響是什么?實驗四 創(chuàng)建SQL Server 2000數(shù)據(jù)庫和表1. 實驗的目的1) 熟悉企業(yè)管理器環(huán)境。2) 掌握創(chuàng)建數(shù)據(jù)庫和表的操作。2. 實驗內(nèi)容1) 熟悉SQL Server 2000 企業(yè)管理器環(huán)境。2) 創(chuàng)建XSCJ數(shù)據(jù)庫。3) 在XSCJ數(shù)據(jù)庫中創(chuàng)建學(xué)生情況表XSQK,課程表KC,學(xué)生成績表XS_KC。4) 在XSQK、KC、XS_KC表中輸入數(shù)據(jù)。3
9、. 實驗步驟1) 啟動SQL Server企業(yè)管理器,打開“SQL Server Enterprise Mananger”窗口,并在左邊的目錄樹結(jié)構(gòu)中選擇“數(shù)據(jù)庫”文件夾。2) 選擇“操作”菜單中的“新建數(shù)據(jù)庫”命令,打開 “數(shù)據(jù)庫屬性” 對話框,并在 “名稱”框內(nèi)輸入數(shù)據(jù)庫名稱XSCJ。3) 單擊“確定”按鈕,完成XSCJ數(shù)據(jù)庫的創(chuàng)建。4) 打開剛才創(chuàng)建的 “XSCJ” 文件夾,并在“SQL Server Enterprise Mananger”窗口的右邊窗口中選擇“表”對象。5) 選擇“操作”菜單中的“新建表”命令,打開SQL Server的表編輯器窗口。 6) 根據(jù)表4-1所示的表結(jié)構(gòu)增
10、加新列。 表4-1 學(xué)生情況表XSQK的結(jié)構(gòu)列名數(shù)據(jù)類型長度是否允許為空值默認(rèn)值說明學(xué)號Char6N主鍵姓名Char8N性別Bit1N男1,女0出生日期smalldatetime4N專業(yè)名Char10N所在系Char10N聯(lián)系電話char11Y7) 點擊快捷工具欄上的快捷按鈕,在彈出的“選擇名稱”對話框中輸入表名XSQK,然后單擊“確定”按鈕,關(guān)閉表編輯器窗口,完成新表的創(chuàng)建。8) 打開“表”對象,在“SQL Server Enterprise Manager”窗口的右邊窗口中選擇剛才創(chuàng)建的“XSQK”表。9) 選擇“操作”菜單中的“打開表”子菜單下的“返回所有行”命令,打開表的數(shù)據(jù)記錄窗口。
11、10) 輸入的學(xué)生情況數(shù)據(jù)記錄見表4-2。學(xué)號姓名性別出生日期專業(yè)所在系聯(lián)系電話020101楊穎01980-7-20計算機(jī)應(yīng)用計算機(jī)88297147020102方露露01981-1-15計算機(jī)應(yīng)用計算機(jī)88297147020103俞奇軍11980-2-20信息管理計算機(jī)88297151020104胡國強(qiáng)11980-11-7信息管理計算機(jī)88297151020105薛冰11980-7-29水利工程水利系88297152020201秦盈飛01981-3-10電子商務(wù)經(jīng)濟(jì)系88297161020202董含靜01980-9-25電子商務(wù)經(jīng)濟(jì)系88297062020203陳偉11980-8-7電子商務(wù)經(jīng)
12、濟(jì)系88297171020204陳新江11980-7-20房建水利系88297171 表4-2 學(xué)生情況記錄11) 同理建課程表KC,表的結(jié)構(gòu)見表4-3所示,表的內(nèi)容見表4-4所示。表4-3 課程表KC的結(jié)構(gòu)列名數(shù)據(jù)類型長度是否允許為空值默認(rèn)值說明課程號Char3N主鍵課程名Char20N教師Char10開課學(xué)期Tinyint1只能1-6學(xué)時Tinyint160學(xué)分Tinyint1N 表4-4 課程表記錄課程號課程名教師開課學(xué)期學(xué)時學(xué)分101計算機(jī)原理陳紅2453102計算方法王頤3453103操作系統(tǒng)徐格2604104數(shù)據(jù)庫原理及應(yīng)用應(yīng)對剛3755105網(wǎng)絡(luò)基礎(chǔ)吳江江4453106高等數(shù)學(xué)孫
13、中文1906107英語陳剛1906108VB程序設(shè)計趙紅韋3705 12) 同理建成績表XS_KC,表的結(jié)構(gòu)見表4-5所示,表的內(nèi)容見表4-6所示。表4-5 成績表XS_KC的結(jié)構(gòu)列名數(shù)據(jù)類型長度是否允許為空值默認(rèn)值說明學(xué)號Char6N外鍵課程號Char3N外鍵成績Tinyint10-100之間表4-6 成績表XS_KC的記錄學(xué)號課程號成績02010110185020101102870201011078802010210158020102102630201041077602020210355020202108800202031035702020410371實驗五 查詢數(shù)據(jù)庫1實驗?zāi)康?) 熟悉
14、SQL Server 2000查詢分析器環(huán)境。2) 掌握基本的SELECT查詢及其相關(guān)子句的使用。3) 掌握復(fù)雜的SELECT查詢,如多表查詢、子查詢、連接和聯(lián)合查詢。2實驗內(nèi)容1) 啟動SQL Server 2000 查詢分析器環(huán)境。2) 涉及多表的簡單查詢。3) 涉及多表的復(fù)雜查詢。3. 實驗步驟1) 啟動SQL Server查詢分析器,打開“SQL查詢分析器”窗口。2) 在“SQL查詢分析器”窗口中選擇要操作的數(shù)據(jù)庫,如“XSCJ”數(shù)據(jù)庫。3) 在KC表中查詢學(xué)分低于3的課程信息,并按課程號升序排列。 在查詢命令窗口中輸入以下SQL查詢命令并執(zhí)行: SELECT * FROM KC WH
15、ERE KC.學(xué)分<3 ORDER BY 課程號4) 在XS_KC表中按學(xué)號分組匯總學(xué)生的平均分,并按平均分的降序排列。SELECT 學(xué)號,平均分=AVG(成績) FROM XS_KC GROUP BY 學(xué)號 ORDER BY 平均分 DESC 5) 在XS_KC表中查詢選修了3門以上課程的學(xué)生學(xué)號。SELECT 學(xué)號 FROM XS_KC GROUP BY 學(xué)號HAVING COUNT(*)>36) 按學(xué)號對不及格的成績記錄進(jìn)行明細(xì)匯總。SELECT 學(xué)號,課程號,成績 FROM XS_KCWHERE 成績<60ORDER BY 學(xué)號COMPUTE COUNT(成績)BY
16、學(xué)號7) 分別用子查詢和連接查詢,求107號課程不及格的學(xué)生信息。用子查詢:SELECT 學(xué)號,姓名,聯(lián)系電話 FROM XSQKWHERE 學(xué)號 IN( SELECT 學(xué)號 FROM XS_KC WHERE 課程號=107AND 成績<60)用連接查詢:SELECT 學(xué)號,姓名,聯(lián)系電話 FROM XSQK JOIN XS_KC ON XSQK.學(xué)號=XS_KC.學(xué)號WHERE課程號=107AND 成績<608) 用連接查詢在XSQK表中查詢住在同一寢室的學(xué)生,即其聯(lián)系電話相同SELECT A.學(xué)號,A.姓名,A.聯(lián)系電話 FROM XSQK A JOIN XSQK BON A.
17、聯(lián)系電話=B.聯(lián)系電話 WHERE A.學(xué)號!=B.學(xué)號請自已完成以下的查詢:9) 查詢XSQK表中所有的系名。10) 查詢有多少同學(xué)選修了課程。11) 查詢有多少同學(xué)沒有選課。12) 查詢與楊穎同一個系的同學(xué)姓名。13) 查詢選修了課程的學(xué)生的姓名、課程名與成績。14) 統(tǒng)計每門課程的選課人數(shù)和最高分。15) 統(tǒng)計每個學(xué)生的選課門數(shù)和考試總成績,并按選課門數(shù)的降序排列。實驗六 創(chuàng)建和使用視圖1實驗?zāi)康?) 掌握視圖的創(chuàng)建、修改和刪除。2) 掌握使用視圖來訪問數(shù)據(jù)。2實驗內(nèi)容1) 創(chuàng)建一個簡單的視圖,查詢101號課程不及格的學(xué)生信息。2) 修改簡單視圖,查詢107號課程成績介于70-90的學(xué)生
18、信息。3) 使用視圖訪問數(shù)據(jù)。4) 刪除所創(chuàng)建的視圖。3實驗步驟1) 啟動SQL Server企業(yè)管理器,打開“SQL Server Enterprise Manager”窗口。2) 選擇要創(chuàng)建視圖的數(shù)據(jù)庫文件夾,如“XSCJ”文件夾,并在右邊的對象窗口中選擇其中的“視圖”對象。3) 選擇“操作”菜單中的“新建視圖”命令,打開SQL Server的視圖設(shè)計窗口。4) 在“數(shù)據(jù)源關(guān)系圖窗口”中單擊鼠標(biāo)右鍵,打開“添加表”窗口,添加XSQK表和XS_KC表。5) 選擇XSQK表的學(xué)號和姓名列,選擇XS_KC表的課程號和成績列,作為視圖的顯示列。6) 設(shè)置學(xué)號列的排序類型為升序。7) 設(shè)置查詢條件:
19、先在課程號行的“準(zhǔn)則”列設(shè)置條件為“=101”,然后在成績行的“準(zhǔn)則”列設(shè)置條件為“<60”。8) 點擊快捷工具欄上的快捷按鈕,在彈出的“另存為”對話框中輸入視圖名,如“v_101不及格”,然后單擊“確定”按鈕,關(guān)閉視圖設(shè)計窗口,完成視圖的創(chuàng)建。9) 在“v_101不及格”視圖上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“設(shè)計視圖”命令,修改視圖定義。10) 添加數(shù)據(jù)源KC表,以顯示107號課程的課程名稱。打開“添加表”窗口,選擇“KC” 表,系統(tǒng)自動為KC表和XS_KC表建立基于課程號的內(nèi)連接。11) 選擇KC表中的課程名列。12) 添加查詢條件:修改課程號行中“準(zhǔn)則”列的條件為“=107”
20、;修改成績行中“準(zhǔn)則”列的條件為“>=70”,并復(fù)制該行,去掉“輸出”列中的復(fù)選,并修改“準(zhǔn)則”列的條件為“<=90”。13) 點擊快捷工具欄上的快捷按鈕,關(guān)閉視圖設(shè)計窗口,保存對視圖的修改。請自已創(chuàng)建以下視圖:14) 創(chuàng)建一個簡單視圖,查詢“計算機(jī)系”學(xué)生的信息。15) 創(chuàng)建一個簡單視圖,統(tǒng)計每門課程的選課人數(shù)和最高分。16) 創(chuàng)建一個復(fù)雜視圖,查詢與“俞奇軍”住在同一寢室的學(xué)生信息,即其聯(lián)系電話相同。17) 創(chuàng)建一個復(fù)雜視圖,查詢選修了課程的同學(xué)的姓名,課程名及成績。實驗七 創(chuàng)建和使用索引1實驗?zāi)康?) 熟悉SQL Server 2000 索引管理器。2) 掌握索引的創(chuàng)建和使用
21、。3) 掌握對索引的優(yōu)化操作。2實驗要求1) 使用索引管理器為XS-KC表創(chuàng)建索引IX-XS-KC。2) 使用強(qiáng)制索引查詢數(shù)據(jù)。3) 用索引優(yōu)化向?qū)?yōu)化索引。3實驗內(nèi)容1) 用索引管理器創(chuàng)建XS_KC表的索引IX_XS_KC。選擇要創(chuàng)建索引的數(shù)據(jù)庫文件夾,如“XSCJ”文件夾,并在右邊的對象窗口中選擇并打開其中的“表”對象。選擇所要創(chuàng)建索引的表,如“XS_KC”表,并從“操作”菜單中選擇“所有任務(wù)”子菜單下的“管理索引”命令,打開SQL Server 的索引管理器窗口。單擊其中的“新建”按鈕,創(chuàng)建新的索引,并為其設(shè)置相應(yīng)的屬性。為XS_KC 表創(chuàng)建一個基于“課程號”列和“成績”列的索引IX_X
22、S_KC,其中課程號列按升序排列,成績列按降序排列。首先,單擊“新建”按鈕,此時系統(tǒng)打開“新建索引”口,在其中的“列名”列表框中選擇“課程號”項。再選擇“成績”項,并選中其后的“排列次序(DESC)”項,使成績列按降序排列。接著,選擇“填充因子”項,其值保留系統(tǒng)默認(rèn)的80,并選中“填充索引”選項,使索引中間頁具有與葉級頁相同的填充程度。最后,將索引名設(shè)置為IX_XS_KC。單擊“確定”按鈕,完成新索引的創(chuàng)建?;氐剿饕芾砥鞔翱凇?) 強(qiáng)制使用剛才創(chuàng)建的索引查詢數(shù)據(jù)。啟動SQL Server查詢分析器,打開“SQL 查詢分析器”窗口,并在其右上腳的下拉框中選擇要操作的“XSCJ”數(shù)據(jù)庫。強(qiáng)制使用
23、“IX_XS_KC索引查詢所有課程的及格成績記錄。在查詢命令窗口中輸入以下SQL查詢命令并執(zhí)行:SELECT 學(xué)號 ,課程表, 成績FROM XS_KCWITH (INDEX (IX_XS_KC) )WHERE 成績>=60觀察一下顯示出來的數(shù)據(jù)是否有序3) 使用索引優(yōu)化向?qū)?yōu)化索引。索引優(yōu)化向?qū)Э梢愿鶕?jù)給定的工作負(fù)荷,通過使用查詢優(yōu)化器分析該工作負(fù)荷的查詢。此時為數(shù)據(jù)庫推薦最佳索引組合,而為了記錄工作負(fù)荷,必須使用SQL事件探查創(chuàng)建一個跟蹤記錄工作負(fù)荷。啟動SQL Server事件探查器,打開“SQL事件探查”窗口。選擇“文件“菜單中”新建“子菜單下的”跟蹤“命令”打開“跟蹤屬性”對話
24、框,新建一個跟蹤。設(shè)置跟蹤名為“INDEX_TRACE”,把跟蹤保存為負(fù)荷文件“INDEX_TRACE”。然后單擊運行按紐開始跟蹤。切換到SQL查詢分析器窗口,在其中的查詢命令中輸入以下SELECT查詢語句: SELECT A.學(xué)號,A.姓名,D.課程名,C.成績,A.聯(lián)系電話FROM XSQK A JOIN XSQK B ON A.聯(lián)系電話=B.聯(lián)系電話JOIN XS_KC C ON A.學(xué)號=C.學(xué)號 JOIN KC D ON D.課程號=C.課程號WHERE A.姓名='俞奇軍' and B.姓名!='俞奇軍'切換回SQL事件探查起窗口,此時在窗口中列出了
25、剛剛執(zhí)行的查詢語句的跟蹤信息。單擊快捷工具欄的快捷鍵按鈕暫停跟蹤。其中,注意列的含義如下:1CPU列:表示查詢所占用的CPU時間,單位為毫秒。2Duration列:表示查詢執(zhí)行的時間 ,單位為毫秒。3Reads列:表示查詢所引起服務(wù)器執(zhí)行的物理磁盤讀取次數(shù)。4Writes列:表示查詢所引起服務(wù)器執(zhí)行的物理磁盤寫入次數(shù)。選擇“工具”菜單中的“索引優(yōu)化向?qū)А泵?,打開“索引優(yōu)化向?qū)А睂υ捒?。開始優(yōu)化索引。切換到SQL事件探查窗口,然后點擊快捷工具欄上的快捷按鈕繼續(xù)跟蹤。切換到SQL查詢分析器窗口,再次執(zhí)行剛才的SELECT查詢語句。切換回SQL事件探查起窗口,此時在窗口中又列出了優(yōu)化索引執(zhí)行同樣的
26、查詢語句的跟蹤信息。我們可以看到,優(yōu)化索引后,讀盤次數(shù)減少了,執(zhí)行時間變短了。比較圖中兩次查詢的執(zhí)行情況,很顯然,經(jīng)過索引優(yōu)化后,查詢性能有了很大的提高。如果全換成大型表,優(yōu)化效果將更加明顯。單擊快捷工具欄上的快捷按鈕停止跟蹤,并關(guān)閉“SQL事件探查窗口”。實驗八 創(chuàng)建并使用約束和默認(rèn)值對象1. 實驗?zāi)康?) 掌握約束的定義和刪除操作。2) 掌握默認(rèn)值對象的定義和刪除。2實驗內(nèi)容1) 使用命令刪除XSQK表中性別的約束,然后再創(chuàng)建。2) 使用界面方式創(chuàng)建默認(rèn)值對象,并綁定到列,然后再刪除。3實驗步驟1)刪除并重建XSQK表中性別的約束。打開“SQL 查詢分析器”窗口,選擇要操作的數(shù)據(jù)庫,如“X
27、SCJ”數(shù)據(jù)庫。在命令窗口中輸入以下SQL命令并執(zhí)行,刪除XSQK表中性別列的約束。ALTER TABLE XSQKDROP CONSTRAINT CK_XSQK_性別在命令窗口中輸入以下SQL命令并執(zhí)行,查詢創(chuàng)建剛才刪除的性別列約束,使性別只能取值為1(表示男)或者0(表示女)。ALTER TABLE XSQK ADD CONSTRAINT CK_ XSQK_性別CHECK (性別=1 OR性別=0)2)定義新的默認(rèn)值對象。啟動SQL Server企業(yè)管理器,打開“SQL Server Enterprise Manager”窗口。選擇要創(chuàng)建默認(rèn)值對象的數(shù)據(jù)庫文件夾,如“XSCJ”文件夾,并在
28、右邊的對象窗口中選擇其中的“默認(rèn)”對象。選擇“操作”菜單中的“新建默認(rèn)”命令,打開“默認(rèn)屬性”對話框,并輸入名稱“DFO_出生日期”和值 1980-1-1注意:1980-1-1前后有單引號()括起來,表示其為日期類型。單擊“確定”按鈕,完成默認(rèn)值對象的定義。3)將默認(rèn)值對象綁定到XSQK表的出生日期列。打開“默認(rèn)”對象,并選中剛才定義的默認(rèn)值對象DFO_出生日期。選擇“操作”菜單中的“屬性”命令,打開“默認(rèn)屬性”對話框。單擊“綁定列”按鈕,打開“將默認(rèn)值綁定到列”的對話框。單擊“確定”按鈕,完成到列的綁定。4)使用值對象為新插入行的出生日期列設(shè)置值。在對象窗口中選擇并打開其中的“表”對象,選中
29、XSQK表。選擇“操作”菜單中“打開表”子菜單下的“返回所有行”命令,打開表的數(shù)據(jù)記錄窗口。在表中插入一行新記錄,其中出生日期列不填,其值由剛才綁定的默認(rèn)值對象設(shè)定。如果在設(shè)置默認(rèn)值對象屬性時,其值前后沒有加單引號(),那么在插入出生日期列的默認(rèn)值時,該值就不會是“1980-1-1”了。關(guān)閉數(shù)據(jù)記錄窗口。5)取消綁定并刪除默認(rèn)值對象。選擇并打開“默認(rèn)”對象,選中“DFO_出生日期”默認(rèn)對象。選擇“操作”菜單中的“屬性”命令,打開“默認(rèn)屬性”對話框。單擊“綁定列”按鈕,打開“將默認(rèn)值綁定到列”對話框。單擊“確定”按鈕,取消到列的綁定,關(guān)閉“默認(rèn)屬性”對話框。選擇“操作”菜單中的“刪除”命令,打開
30、“除去對象”對話框。單擊“全部除去”按鈕,確定刪除。實驗九 實現(xiàn)數(shù)據(jù)完整性1實驗?zāi)康?) 掌握域完整性的實現(xiàn)方法。2) 掌握實體完整性的實現(xiàn)方法。3) 掌握參照完整性的方法。2實驗內(nèi)容1) 使用界面方式創(chuàng)建規(guī)則對象,并綁定到列,實現(xiàn)域完整性。2) 為表添加一個標(biāo)識列,實現(xiàn)實體完整性。3) 為兩表建立關(guān)聯(lián),實現(xiàn)參照完整性。3實驗步驟1) 實現(xiàn)域完整性啟動SQL Server企業(yè)管理器,打開“SQL Server Enterprise Manager”窗口。選擇要創(chuàng)建規(guī)則對象的數(shù)據(jù)庫文件夾,并在右邊的對象窗口中選擇其中的“規(guī)則”對象。選擇“操作”菜單中的“新建規(guī)則”命令,打開“規(guī)則屬性”對話框。設(shè)
31、置形如“(區(qū)號)電話號碼”的聯(lián)系電話格式檢查規(guī)則,單擊“確定”按鈕,完成規(guī)則對象的定義。打開“規(guī)則”對象,并選中剛才定義的規(guī)則對象RO_聯(lián)系電話格式。選擇“操作”菜單中的“屬性”命令,打開“規(guī)則屬性”對話框。單擊“綁定列”按鈕,打開“將規(guī)則綁定到列”對話框,完成到列的綁定,關(guān)閉“規(guī)則屬性”對話框。在對象窗口中選擇并打開其中的“表”對象,選中XSQK表并打開。在表中分別插入兩行新記錄,其中一行的聯(lián)系電話格式為指定的格式,另一行的聯(lián)系電話格式為非法格式。當(dāng)插入第一行時,系統(tǒng)成功地插入了新數(shù)據(jù)行,但無信息返回;而在插入第二行時系統(tǒng)提示錯誤信息,拒絕接受非法格式的聯(lián)系電話,從而保證了域完整性。單擊“確
32、定”按鈕,取消插入,并關(guān)閉表的數(shù)據(jù)記錄窗口。2)實現(xiàn)實體完整性在對象窗口中選擇并打開其中的“表”對象,選中KC表。選擇“操作”菜單中的“設(shè)計表”命令,打開表編輯器窗口。添加一個標(biāo)識列,種子值為1,遞增量也為1。點擊快捷工具攔上的快捷按鈕,完成標(biāo)識列的添加,然后關(guān)閉編輯窗口。選中KC表并打開表的數(shù)據(jù)記錄窗口。可以看到,系統(tǒng)自動為每行的標(biāo)識列填充了值,并從1開始,依次遞增,這樣,表中的每一數(shù)據(jù)行都可以由標(biāo)識列唯一標(biāo)識,實現(xiàn)了實體完整性。關(guān)閉表的數(shù)據(jù)記錄窗口。3)實現(xiàn)參照完整性在對象窗口中選擇打開其中的“表”對象,選中XS_KC表。先擇“操作”菜單中的“設(shè)計表”命令,打開表編輯器窗口。點擊快捷工具攔
33、上的快捷按鈕,打開“屬性”對話框的“關(guān)系”選項卡。為XSQK表和XS_KC表建立基于學(xué)號列的關(guān)系。選中XSQK表,并選擇“操作”菜單中“打開表”子菜單下的“返回所有行”命令,打開表的數(shù)據(jù)記錄窗口。將表中的值為“020101”的學(xué)號都修改為“020111”。由于XSQK表中不存在值為“020111”的學(xué)號,所以系統(tǒng)提示錯誤信息,拒絕接受不存在的學(xué)號,從而保證了參照完整性。單擊“確定”按鈕,取消修改,并關(guān)閉表的數(shù)據(jù)記錄窗口。實驗十 實現(xiàn)存儲過程1實驗?zāi)康?) 掌握用戶存儲過程的創(chuàng)建操作。2) 掌握用戶存儲過程執(zhí)行操作。3) 掌握用戶存儲過程的刪除操作。2實驗內(nèi)容1) 創(chuàng)建帶輸入?yún)?shù)的存儲過程和嵌套
34、調(diào)用的存儲過程。2) 執(zhí)行所創(chuàng)建的存儲過程。3) 刪除所有新創(chuàng)建的存儲過程。3實驗步驟1) 創(chuàng)建帶輸入?yún)?shù)的存儲過程。啟動SQL Server查詢分析器,打開“SQL查詢分析器”窗口。選擇要操作的數(shù)據(jù)庫,如“XSCJ”數(shù)據(jù)庫。在查詢命令窗口中輸入創(chuàng)建存儲過程的CREATE PROCEDURE語句。這里,我們創(chuàng)建一個帶輸入?yún)?shù)的存儲過程proc_XSQK1,其中的輸入?yún)?shù)用于接收課程號,默認(rèn)值為“101”,然后在XS_KC表中查詢該課成績不及格的學(xué)生學(xué)號,接著在XSQK表中查找這些學(xué)生的基本信息,包括學(xué)號、姓名、性別和聯(lián)系電話信息,最后輸出。點擊快捷工具欄上的快捷銨鈕,對輸入的CREATE PR
35、OCEDURE 語句進(jìn)行語法分析。如果有語法錯誤,則進(jìn)行修改,直到?jīng)]有語法錯誤為止。點擊快捷工具攔上的快捷按鈕,執(zhí)行CREATE PROCEDURE語句。2) 創(chuàng)建帶嵌套調(diào)用的存儲過程。在查詢命令窗口中輸入創(chuàng)建存儲過程的CREATE PROCEDURE語句。這里,我們創(chuàng)建一個帶嵌套調(diào)用的存儲過程proc_XSQK2。該存儲過程也有一個輸入?yún)?shù),它用于接收授課教師姓名,默認(rèn)值為“王頤”,然后嵌套調(diào)用存儲過程proc_課程號,輸出其所授課程的課程號,接著用此課程號來完成上一部分實驗中所創(chuàng)建的存儲過程proc_XSQK1的功能。相應(yīng)的CREATE PROCEDURE語句如下:DECLARE 課程號c
36、har(3)-嵌套調(diào)用存儲過程proc_課程號EXECUTE proc_課程號 授課老師,課程號 OUTPUT-查詢指定課程成績不及格的學(xué)生的基本信息SELECT XSQK.學(xué)號,XSQK.姓名,XSQK.性別,XSQK.聯(lián)系電話FROM XSQK ,XS_KCWHERE XS_KC.課程號=課程號AND XS_KC.成績<60AND XSQK.學(xué)號=XS_KC.學(xué)號PROC_課程號的存儲過程如下:CREATE PROCEDURE PROC_課程號教師 CHAR(10)=王頤,課程號碼 CHAR(3) OUTPUTASSELECT 課程號碼=課程號 FROM KCWHERE KC.教師=
37、教師 點擊快捷工具欄上的快捷按鈕,對輸入的CREATE PROCEDURE 語句進(jìn)行語法分析。如果有語法錯誤,則進(jìn)行修改,直到?jīng)]有語法錯誤為止。點擊快捷工具欄上的快捷按鈕,執(zhí)行CREATE PROCEDURE語句。3)執(zhí)行所創(chuàng)建的二個存儲過程在查詢命令窗口中輸入以下EXECUTE語句,執(zhí)行存儲過程proc_XSQK1。 EXECUTE proc_XSQK1 101點擊快捷工具攔上的快捷按鈕,執(zhí)行存儲過程。在查詢命令窗口中輸入以下EXECUTE語句,執(zhí)行存儲過程proc_XSQK2。 EXECUTE proc_XSQK2 DEFAULT點擊快捷工具攔上的快捷按鈕,執(zhí)行存儲過程。3) 刪除新建的存
38、儲過程在查詢命令的窗口中輸入DROP PROCEDURE語句和所有新創(chuàng)建的存儲過程名。 DROP PROCEDURE Proc_XSQK1,proc_XSQK2點擊快捷工具上的快捷按鈕,刪除存儲過程。實驗十一 實現(xiàn)觸發(fā)器1. 實驗?zāi)康?) 掌握觸發(fā)器的創(chuàng)建、修改和刪除操作。2) 掌握觸發(fā)器的觸發(fā)執(zhí)行。3) 掌握觸發(fā)器與約束的不同。2. 實驗要求1) 創(chuàng)建觸發(fā)器。2) 觸發(fā)器執(zhí)行觸發(fā)器。3) 驗證約束與觸發(fā)器的不同作用期。4) 刪除新創(chuàng)建的觸發(fā)器。3. 實驗內(nèi)容1) 創(chuàng)建觸發(fā)器啟動SQL Server 查詢分析器,打開“SQL查詢分析器”窗口,選擇要操作的數(shù)據(jù)庫,如“XSCJ”數(shù)據(jù)庫。在查詢命令
39、窗口中輸入以下CREATE TRIGGER語句,創(chuàng)建觸發(fā)器。為XS_KC表創(chuàng)建一個基于UPDATE操作和DELETE操作的復(fù)合型觸發(fā)器,當(dāng)修改了該表中的成績信息或者刪除了成績記錄時,觸發(fā)器被激活生效,顯示相關(guān)的操作信息。-創(chuàng)建觸發(fā)器CREATE TRIGGER tri_UPDATE_DELETE_XS_KCON XS_KCFOR UPDATE,DELETEAS-檢測成績列表是否被更新IF UPDATE(成績)BEGIN-顯示學(xué)號、課程號、原成績和新成績信息SELECT INSERTED.課程號,DELETED.成績AS原成績,INSERTED.成績AS原成績 FROM DELETED ,INS
40、ERTEDWHERE DELETED.學(xué)號=INSERTED.學(xué)號END-檢測是更新還是刪除操作ELSE IF COLUMNS_UPDATED( )=0BEGIN-顯示被刪除的學(xué)號、課程號和成績信號SELECT 被刪除的學(xué)號=DELETED.學(xué)號,DELETED.課程號,DELETED.成績AS原成績FROM DELETEDENDELSE-返回提示信息PRINT 更新了非成績列!點擊快捷工具欄上的快捷按鈕,完成觸發(fā)器的創(chuàng)建。2) 觸發(fā)觸發(fā)器在查詢命令窗口中輸入以下UPDATE XS_KC語句,修改成績列,激發(fā)觸發(fā)器。UPDATE XS_KCSET成績=成績+5WHERE 課程號=101在查詢命
41、令窗口中輸入以下UPDATE XS_KC語句修改非成績列,激發(fā)觸發(fā)器。UPDATE XS_KCSET 課程號=113WHERE 課程號=103在查詢命令窗口中輸入以下DELETE XS_KC 語句,刪除成績記錄,激發(fā)觸發(fā)器。DELETE XS_KC WHERE 課程號=1023) 比較約束與觸發(fā)器的不同作用期在查詢命令窗口中輸入并執(zhí)行以下ALTER TABLE 語句,為XS_KC表添加一個約束,使得成績只能大于等于0且小于等于100。ALTER TABLE XS_KCADD CONSTRAINT CK_成績CHECK(成績>=0 AND成績<=100)在查詢命令窗口中輸入并執(zhí)行以下
42、UPDATE XS_KC語句,查看執(zhí)行結(jié)果。UPDATE XS_KC SET成績=120WHERE 課程號=108在查詢命令窗口中輸入執(zhí)行以下UPDATE XS_KC 語句,查看執(zhí)行結(jié)果。UPDATE XS_KCSET成績=90WHERE 課程號=108從這部分實驗中,我們可以看到,約束優(yōu)先于觸發(fā)器起作用,它在更新前就生效,以對要更新的值進(jìn)行規(guī)則檢查。當(dāng)檢查到與現(xiàn)有規(guī)則沖突時,系統(tǒng)給出錯誤消息,并取消更新操作。如果檢查沒有問題,更新被執(zhí)行,當(dāng)執(zhí)行完畢后,再激活觸發(fā)器。4) 刪除新創(chuàng)建的觸發(fā)器在查詢命令窗口中輸入DROP TRIGGER 語句,刪除新創(chuàng)建的觸發(fā)器。DROP TRIGGER tri
43、_UPDATE_DELETE_XS_KC點擊快捷工具欄上的快捷按鈕,刪除觸發(fā)器。*實驗十二 實現(xiàn)事務(wù)和批1. 實驗?zāi)康?) 了解事務(wù)的ACID屬性。2) 掌握事務(wù)和批的工作原理。3) 了解事務(wù)處理與批處理。2. 實驗內(nèi)容1) 事務(wù)處理與批處理的關(guān)系。2) 如何把一個事務(wù)處理封閉在單個的批處理中。3) 用條件判斷結(jié)構(gòu)來實現(xiàn)。3. 實驗步驟1) 把事務(wù)處理分散寫進(jìn)多個批處理通常不是一個好的設(shè)計思想。鎖定問題會變得非常復(fù)雜,會帶來可怕的性能干擾。2) 通常情況下,應(yīng)該把一個事務(wù)處理封閉在單個的批處理中。下面還有一個更好的方法來編寫這段程序:BEGIN TRANSACTINONINSERT PUBLI
44、SHERS(PUB_ID,PUB_NAME,CITY,STATE)VALUES(“1111”,“JOE AND MARYS BOOKS”,“NOTRTHERN PLAINS”,“IA”)IF ERROR=0BEGIN PRINT PUBLISHER INSERT WAS SUCCESSFUL CONTINUING。 UPDATE TITLES SET PUB_ID=1111 WHERE PUB_ID=1234 DELETE AUTHORS WHERE STATE=CACOMMIT TRANSACTIONENDELSEBEGIN PRINT PUBLISHER INSERT FAILEDROLL
45、ING BACK TRANSACTION ROLLBACK TRANSACTIONEND這個例子中最重要的一點在于事務(wù)處理屬于一個簡單的批處理了。*實驗十三 檢測死鎖1實驗?zāi)康?) 了解死鎖的類型和其兼容性。2) 了解死鎖發(fā)生的情況。3) 了解可鎖定的資源。4) 了解死鎖的一般處理過程。2實驗內(nèi)容1) 鎖與并行查詢執(zhí)行相關(guān)的資源。2) 如何查看進(jìn)程信息。3) 如何查看鎖/對象信息。4) 如何處理死鎖。3實驗步驟1) 構(gòu)造死鎖,讓鎖現(xiàn)象發(fā)生。先構(gòu)造一個可能造成鎖表的代碼如下:BEGIN TRANSACTIONINSERT publishers (pub_id,pub_name,city,stat
46、e)VALUES(“1111”,“Joe and Marys Books”,“Notrthern Plains”,“IA”)IF ERROR=0BEGIN PRINT Publisher insert failedrolling back transaction ROLLBACK TRANSACTIONEND下面的代碼對同一個表執(zhí)行簡單的查詢操作,具體代碼如下:select * from titles;2)處理死鎖的一般過程或步驟。Sp_who:提供關(guān)于當(dāng)前Microsoft SQL Server用戶和進(jìn)程信息。如:列出全部當(dāng)前進(jìn)程。在SQL查詢分析器的命令窗口中輸入sp_whosp_lock
47、:報告有關(guān)鎖的信息在SQL查詢分析器的命令窗口中輸入sp_lock spid1=從sp_who中查出的進(jìn)程標(biāo)識號在企業(yè)管理器中打開“管理”文件夾下的當(dāng)前活動,查看進(jìn)程信息。實驗十四 實現(xiàn)安全管理1實驗?zāi)康?) 了解SQL Server 2000 的身份驗證方法。2) 掌握合法登錄帳戶的設(shè)置。3) 掌握數(shù)據(jù)庫用戶的設(shè)置。4) 掌握數(shù)據(jù)庫角色的設(shè)置。5) 掌握用戶的權(quán)限管理方法。2實驗內(nèi)容1) Windows和SQL Server2000身份驗證的比較。2) 設(shè)置登錄帳戶。3) 設(shè)置數(shù)據(jù)庫用戶。4) 設(shè)置數(shù)據(jù)庫角色。5) 設(shè)置數(shù)據(jù)庫用戶權(quán)限。3實驗步驟1) 使用企業(yè)管理器選擇和設(shè)置身份驗證模式 打
48、開企業(yè)管理器,在“樹”窗口中展開一個服務(wù)器組,然后選擇希望設(shè)置身份驗證模式的服務(wù)器。 在該服務(wù)器上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇命令“屬性”,打開“屬性”對話框。 在屬性對話框中選擇“安全性”選項卡,在“身份驗證”區(qū)域中選擇下列身份驗證模式之一。· SQL Server和Windows:指定用戶可以使用SQL Server身份驗證和Windows身份驗證連接到SQL Server。· 僅Windows:指定用戶只能使用Windows身份驗證連接SQL Server。 單擊“確定”按鈕,即可完成身份驗證模式的選擇和設(shè)置。 2) 使用企業(yè)管理器創(chuàng)建登錄賬戶 打開企業(yè)管理器,展
49、開希望創(chuàng)建新的登錄的服務(wù)器。 展開文件夾“安全性”,在登錄節(jié)點上單擊鼠標(biāo)右鍵。 從彈出的菜單中選擇“新建登錄”,打開“新建登錄”窗口。 在“新建登錄”窗口的“常規(guī)”選項卡中進(jìn)行如下配置:· 在“名稱”文本框中輸入一個SQL Server登錄的賬號名。· 選擇一種登錄模式。· 在“默認(rèn)設(shè)置”區(qū)選擇連接時默認(rèn)的數(shù)據(jù)庫XSCJ和語言。 在“新建登錄”窗口的“數(shù)據(jù)庫訪問”選項卡,選擇允許登錄賬戶訪問的數(shù)據(jù)庫和分配給登錄賬戶的數(shù)據(jù)庫角色。 單擊“確定”按鈕,完成登錄模式的創(chuàng)建。3) 使用企業(yè)管理器新建數(shù)據(jù)庫用戶 打開企業(yè)管理器,在樹形目錄中展開指定的數(shù)據(jù)庫節(jié)點。 選中該數(shù)據(jù)庫節(jié)點的下一級節(jié)點“用戶”,單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“新建數(shù)據(jù)庫用戶”。4) 使用企業(yè)管理器創(chuàng)建數(shù)據(jù)庫角色 打開企業(yè)管理器,在樹形目錄中展開指定的數(shù)據(jù)庫節(jié)點。 選中該數(shù)據(jù)庫節(jié)點的下一級節(jié)點“角色”,單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“新建數(shù)據(jù)庫角色”。 在彈出的“數(shù)據(jù)庫角色屬性-新建角色”對話框中
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中級養(yǎng)老護(hù)理復(fù)習(xí)測試卷含答案(二)
- 企業(yè)內(nèi)部辦公自動化系統(tǒng)的設(shè)計與實施
- 鄉(xiāng)村規(guī)劃設(shè)計與旅游產(chǎn)業(yè)開發(fā)作業(yè)指導(dǎo)書
- 攝影行業(yè)圖像處理與后期制作系統(tǒng)優(yōu)化方案
- 三農(nóng)產(chǎn)品市場監(jiān)管與安全風(fēng)險評估手冊
- 《稻草人》選擇題后附答案
- 法律服務(wù)行業(yè)實戰(zhàn)指南
- 環(huán)境治理與可持續(xù)發(fā)展技術(shù)報告
- 平滑切換基礎(chǔ)入門
- 臨床護(hù)理帶教老師述職報告
- 河南省勞動關(guān)系協(xié)調(diào)員職業(yè)技能大賽技術(shù)工作文件
- 成都實驗中學(xué)2025屆高三最后一模英語試題含解析
- 2024年新《反洗錢法》修訂要點解讀
- 如何變廢為寶課件
- 隧道危險源清單
- 中華人民共和國學(xué)前教育法
- 辯論英文課件教學(xué)課件
- 2023屆江蘇省南通市高考一模地理試題(解析版)
- 我國藥械組合產(chǎn)品基本情況及屬性界定、注冊申報流程介紹
- 制定業(yè)務(wù)拓展的具體方案計劃
- 二年級下冊脫式計算題100道及答案
評論
0/150
提交評論