![數(shù)據(jù)庫實驗指導_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/20/84ccd558-530e-42dd-ba60-027254aa2274/84ccd558-530e-42dd-ba60-027254aa22741.gif)
![數(shù)據(jù)庫實驗指導_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/20/84ccd558-530e-42dd-ba60-027254aa2274/84ccd558-530e-42dd-ba60-027254aa22742.gif)
![數(shù)據(jù)庫實驗指導_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/20/84ccd558-530e-42dd-ba60-027254aa2274/84ccd558-530e-42dd-ba60-027254aa22743.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、.實驗D001: 數(shù)據(jù)庫及表的建立和管理實驗一、實驗名稱和性質(zhì)所屬課程數(shù)據(jù)庫原理 實驗名稱數(shù)據(jù)庫、數(shù)據(jù)表的建立與數(shù)據(jù)的插入實驗學時2實驗性質(zhì)驗證 綜合 設計必做/選做必做 選做二、實驗目的1了解和掌握SQL Server系統(tǒng)。2掌握數(shù)據(jù)庫建立的幾種方法。3掌握數(shù)據(jù)表的建立方法和數(shù)據(jù)表中數(shù)據(jù)的插入方法。 三、實驗的軟硬件環(huán)境要求硬件環(huán)境要求:PC機(單機)。使用的軟件名稱、版本號以及模塊:Windows XP下的SQL Server 2005(或 SQL Server 2008)。四、知識準備前期要求掌握的知識:1SQL Server 2005平臺構(gòu)成:數(shù)據(jù)庫引擎。分析服務(Analysis S
2、ervices)。集成服務(Integration Services)。復制技術(shù)。通知服務(Notification Services)。報表服務(Reporting Services)。服務代理(Service Broker)。全文搜索。2SQL Server 2005安裝成功后,系統(tǒng)會自動創(chuàng)建4個系統(tǒng)數(shù)據(jù)庫:Master、Model、Msdb、Tempdb。3SQL Server 2005中最重要的管理工具:“SQL Server Management Studio”(簡稱“SSMS”)。五、實驗內(nèi)容1創(chuàng)建數(shù)據(jù)庫和查看數(shù)據(jù)庫屬性。2在“SSMS”中和查詢編輯器中創(chuàng)建數(shù)據(jù)表。3“SSMS”中
3、和查詢編輯器中數(shù)據(jù)表中數(shù)據(jù)的插入。 六、驗證性實驗(一) 在“SSMS”中創(chuàng)建數(shù)據(jù)庫、數(shù)據(jù)表和進行數(shù)據(jù)插入1創(chuàng)建數(shù)據(jù)庫(1)使用“SSMS”建立數(shù)據(jù)庫的步驟1)單擊“開始”菜單下“所有程序”“Microsoft SQL Server2005(或Microsoft SQL Server2008)”“SQL Server Management Studio”,如圖3-1所示。圖3-1 SQL Server 2005啟動2) 在連接到服務器窗口中選擇服務器名(點擊服務器名稱右面的下拉列表選擇“瀏覽更多”展開“數(shù)據(jù)庫引擎”選擇下面出現(xiàn)的本機號,單擊“確定”),單擊”連接”按鈕, 如圖3-2所示.。3)
4、 進入到“Microsoft SQL Server Management Studio(SSMS)”,如圖3-3所示.。圖3-2 SQL Server 2005連接服務器界面 圖3-3 “SSMS”界面4)選中“數(shù)據(jù)庫”文件夾,單擊鼠標右鍵,在彈出菜單上選擇“新建數(shù)據(jù)庫”。隨后在數(shù)據(jù)庫屬性對話框的常規(guī)頁面中,輸入數(shù)據(jù)庫名“學生選課”,如圖3-4所示。新建數(shù)據(jù)庫屬性對話框有3 個頁面:常規(guī)、選項和文件組。常規(guī)選項分別用來義數(shù)據(jù)庫名、數(shù)據(jù)文件屬性和日志文件屬性。選項是對數(shù)據(jù)庫中游標狀態(tài)等信息的設置。5)單擊“確定”按鈕,關(guān)閉對話框。在“SSMS”窗口中出現(xiàn)“學生選課”數(shù)據(jù)庫標志,如圖3-5所示,表
5、明已經(jīng)成功創(chuàng)建數(shù)據(jù)庫。圖3-4 新建數(shù)據(jù)庫界面 圖3-5 數(shù)據(jù)庫建立成功界面6)在“SSMS”中,右鍵單擊“學生選課”數(shù)據(jù)庫,在彈出菜單中選擇“屬性”,將彈出一個對話框,顯示“學生選課”數(shù)據(jù)庫的屬性,如圖3-6所示。 2創(chuàng)建數(shù)據(jù)庫表(1)打開剛才創(chuàng)建的“學生選課”數(shù)據(jù)庫,并在“SSMS”窗口的右邊窗口中用鼠標右鍵點擊“表”對象,選擇“新建表”命令,打開表編輯器窗口,如圖3-7所示。圖3-6 數(shù)據(jù)庫屬性窗口 圖3-7 表編輯器界面(2)根據(jù)表3-1 所示的表結(jié)構(gòu),添加新列。表3-1 學生表列名數(shù)據(jù)類型長度是否允許為空學號Varchar10NVarchar20N性別Char2Y 出生日期Small
6、datetime4Y專業(yè)名Varchar20Y所在系Varchar20Y聯(lián)系電話Varchar20Y(3)點擊工具欄上的“保存”按鈕,在彈出的“選擇名稱”對話框中輸入表名“學生-表”,然后單擊“確定”按鈕,完成新表的創(chuàng)建。(4)同理,根據(jù)表3-2 建課程表,根據(jù)表3-3 建選課表表3-2 課程表列名數(shù)據(jù)類型長度是否允許為空課程號Char6N 課程名Char20 N學時Tinyint 1N學分Tinyint1N表3-3 選課表列名數(shù)據(jù)類型長度是否允許為空學號Char6N 課程號Char3N 成績Tinyint1Y3使用“SSMS”向數(shù)據(jù)庫表輸入數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù)。(1)打開“SSMS”,選
7、中服務器,展開數(shù)據(jù)庫文件夾,進一步展開“學生選課”數(shù)據(jù)庫。單擊表文件夾,找到“學生表”。(2)用鼠標右鍵單擊“學生表”,選擇“打開表”“返回全部行,(SQL2008中選擇“編輯前*行”)就會出現(xiàn)表更新對話框,如圖3-8所示。圖3-8 記錄輸入界面(3)參考表3-4 的內(nèi)容,為學生表輸入數(shù)據(jù)。(二)在查詢編輯器中創(chuàng)建數(shù)據(jù)庫、數(shù)據(jù)表和進行數(shù)據(jù)插入1在“SSMS”中,點擊工具欄中的第一個按鈕“新建查詢”,如圖3-9所示。圖3-9 查詢編輯器的打開打開查詢編輯器的窗口,如圖3-10所示。圖3-10 查詢編輯器2在查詢編輯器的右窗口中輸入T-SQL語句:create database student選中
8、該語句并執(zhí)行(單擊工具欄的“執(zhí)行”按鈕),出現(xiàn)命令已成功表示數(shù)據(jù)庫成功建立。3用T-SQL語句創(chuàng)建數(shù)據(jù)表STUD:USE STUDENT(表示student為當前數(shù)據(jù)庫)CREATE TABLE STUD(SNO VARCHAR(10) NOT NULL, SNAME VARCHAR(20) NOT NULL, SEX CHAR(2), BIRTHDAY DATETIME)選中上述語句并執(zhí)行,出現(xiàn)命令已成功完成表示數(shù)據(jù)表已經(jīng)建立好??梢栽凇皩ο筚Y源管理器”中的STUDENT數(shù)據(jù)庫上右擊鼠標,并單擊“刷新”,然后展開“用戶表”,可以看到STUD數(shù)據(jù)表。4向STUD數(shù)據(jù)表中插入數(shù)據(jù)記錄。INSER
9、T INTO STUD VALUES(200512,Josephine,F,1980-12-20)選中上述語句并執(zhí)行,出現(xiàn)所影響的行數(shù)為1行表示數(shù)據(jù)已經(jīng)插入到數(shù)據(jù)表中。七、設計性實驗(注意:設計性實驗的題目用T-SQL命令完成)1實驗要求(1)創(chuàng)建一個XSDA數(shù)據(jù)庫,該數(shù)據(jù)庫的主文件邏輯名稱為 xsda_data,物理文件名為D:SQLxsda.mdf,初始大小為20MB,無上限,增長速度為20%;數(shù)據(jù)庫的日志文件邏輯名稱為xsda_log,物理文件名為D:SQLxsda.ldf,初始大小為3MB,最大尺寸為10MB,增長速度為1MB。(2)在XSDA數(shù)據(jù)庫中創(chuàng)建三個數(shù)據(jù)表:S(SNO VAR
10、CHAR (10) NOT NULL ,SNAME VARCHAR(20),DEPA VARCHAR(20), AGE INT, SEX CHAR(4) )C(CNO VARCHAR(10) NOT NULL, CNAME VARCHAR(20),cpno varchar(10),credit int)SC(SNO VARCHAR(10) NOT NULL, CNAME VARCHAR(10) NOT NULL, GRADE DECIMAL(4,1))(3)在3個表中輸入如下數(shù)據(jù)。(參考以下表中內(nèi)容,每個表至少輸入4-6個記錄)表3-4 學生表學號系部年齡性別200512李勇計算機系20男20
11、0518劉晨計算機系19女200018王敏數(shù)學系18女200511楊揚物理系20男200510張立信息系19男200513張立物理系19男200514王點點信息系19女200012歐陽雨數(shù)學系20男200515劉依依數(shù)學系23女表3-5課程表課程號課程名前修課程學分c01數(shù)據(jù)庫原理c034c02信息系統(tǒng)C014c03數(shù)據(jù)結(jié)構(gòu)null6c04DB_設計co13表3-6 成績表學號課程號成績200512c0270200512c0355200512c04null200515c0180200518c0395200018c0180200518c0245200511c0278200511c0145(4)修
12、改S表結(jié)構(gòu),增加一個入校時間,列名為RXTIME,日期型。(5)刪除SC表中成績不及格的記錄。(6)把S表中學號為“200512”的學生的年齡改為19。2思考題(1)SQL Server 2005/2008提供了哪些基本數(shù)據(jù)類型.(2)數(shù)據(jù)庫創(chuàng)建后怎樣修改數(shù)據(jù)庫操縱文件和數(shù)據(jù)庫日志文件分配的空間大小.(3)用數(shù)據(jù)的導入、導出實現(xiàn)SQL數(shù)據(jù)庫之間;SQL與EXCEL之間的數(shù)據(jù)傳遞。實驗D002: 單表查詢實驗一、實驗名稱和性質(zhì)所屬課程數(shù)據(jù)庫原理 實驗名稱單表查詢實驗學時2實驗性質(zhì)驗證 綜合 設計必做/選做必做 選做二、實驗目的1掌握數(shù)據(jù)的基本檢索方法。2掌握數(shù)據(jù)查詢的Group by和Order
13、 by子句的使用。3 掌握聚集函數(shù)的使用方法。三、實驗的軟硬件環(huán)境要求硬件環(huán)境要求:PC機(單機)。使用的軟件名稱、版本號以及模塊:Windows XP下的SQL Server 2005(或 SQL Server 2008)。四、知識準備前期要求掌握的知識:數(shù)據(jù)檢索的語句格式:SELECT ALL|DISTINCT <目標列表達式列表> FROM <表名或視圖名列表> WHERE <條件表達式> GROUP BY <列名1> HAVING <條件表達式> ORDER BY <列名2> ASC|DESC 其中,SELECT后
14、的目標列表達式可以是列名、表達式或函數(shù)。GROUP BY子句:對查詢結(jié)果按指定列的值分組,該屬性列值相等的元組為一個組。通常會在每組中作用集函數(shù)。HAVING短語:篩選出只有滿足指定條件的組ORDER BY子句:對查詢結(jié)果表按指定列值的升序或降序排序注意:T-SQL語句中關(guān)鍵字不區(qū)分大小寫五、實驗內(nèi)容1對數(shù)據(jù)表進行簡單檢索。2對數(shù)據(jù)表進行排序檢索。3在檢索中使用聚集函數(shù)。六、驗證性實驗(首先把精品課程網(wǎng)站-上機實驗數(shù)據(jù)庫腳本中的代碼復制到新建查詢窗口執(zhí)行(注意,只執(zhí)行一次。為避免重復,執(zhí)行后把這段代碼刪除。)先選擇要操作的數(shù)據(jù)庫,用T-SQL命令:USE STUDENT或在工具欄的當前數(shù)據(jù)庫中
15、選擇STUDENT, 如圖3-11所示。工作數(shù)據(jù)庫圖3-11 查詢編輯器界面以下查詢要求在逐個語句執(zhí)行,執(zhí)行后將執(zhí)行結(jié)果記錄下來。1條件查詢?nèi)繑?shù)據(jù)USE STUDENTSELECT * FROM S2在SELECT關(guān)鍵字后指明要檢索的列名(1) 查詢S表的學生學號和姓名SELECT SNO,SNAME FROM S(2) 查詢S表中的系部名SELECT DEPA FROM S (3)查詢S表中不重復的系部名SELECT DISTINCT DEPA FROM S3改變列標題的檢索(1)使用 空格 形式: 列名 新標題SELECT SNO 學號 , SNAME FROM S(2)使用“AS”形式
16、,列名 AS 新標題SELECT SNO AS 學號, SNAME AS FROM S3有條件選擇的查詢(1)在S表檢索“信息系”的學生信息SELECT * FROM S WHERE DEPA=信息系(2)在S表中檢索姓“王”的學生信息SELECT * FROM SWHERE sname like 王%(3)在SC表檢索C01選修課成績?yōu)榭盏倪x課記錄SELECT SNO, CNO FROM SCWHERE o=C01 and grade is null(4)檢索年齡為21,18,22的學生學號、SELECT SNO,SNAME FROM SWHERE age in (21,18,22)Age
17、IN 21,18,22表示某條記錄的AGE字段值是否是集合21,18,22中的元素,如是,則選擇。它等價于下面語句:SELECT SNO,SNAME FROM SWHERE age=18 or age=21 or age=224使用聚集函數(shù)(1)查詢選課表中最高分、平均分、最低分SELECT MAX(GRADE), AVG(GRADE),MIN(GRADE)FROM SC(2)查詢“C01”課程的最高分、平均分和最小成績。SELECT MAX(GRADE), AVG(GRADE),MIN(GRADE)FROM SCWHERE CNO=C015對檢索結(jié)果進行排序SELECT * FROM SCW
18、HERE GRADE IS NULLORDER BY SNO,CNO DESC6進行分組統(tǒng)計:(1)查詢各學生的選課數(shù)SELECT SNO,COUNT(*)FROM SCGROUP BY SNO(2)使用HAVING 字句:“選課表”中查詢選修了3 門以上課程的學生學號。SELECT SNO ,COUNT(*)FROM SCGROUP BY SNOHAVING COUNT(*)>=3(3)“選課表”中按學號分組匯總學生的平均分,并按平均分的降序排列。SELECT SNO 學號, AVG(GRADE)平均分 FROM SCGROUP BY SNOORDER BY平均分 DESC(4)分析下
19、面兩個SELECT語句執(zhí)行結(jié)果,說明有什么不同.SELECT SNO FROM SCORDER BY SNOGOSELECT SNO FROM SCGROUP BY SNO七、設計性實驗1實驗要求(1)查詢計算機系學生的學號和姓名。(2)查詢選修了課程的學生學號。(3)查詢選修“C01”課程的學生學號和成績,并要求對查詢結(jié)果按成績的降序排列,如果成績相同則按學號的升序排列。(4)查詢每門課程的平均分。(5)查詢學校開設的課程總數(shù)。(6)查詢選修兩門及兩門以上課程的學生學號。(此題除了代碼,執(zhí)行結(jié)果,還請寫出代碼的執(zhí)行過程。)(7)查詢年齡在20-22之間的男生的學號、系部。(8)查詢選修“C0
20、1”課程的學生人數(shù)。2實驗報告要求(見精品課程網(wǎng)站上機指導中實驗報告參考)3思考題(1)使用ORDER BY子句后SELECT后的數(shù)據(jù)列有什么限制嗎.使用GROUP BY 呢.(2)執(zhí)行select max(grade) from sc, 寫出執(zhí)行結(jié)果;執(zhí)行 select sno, max(grade) from sc group by sno,寫出執(zhí)行結(jié)果。思考:使用GROUP BY<分組條件>子句后,語句中的統(tǒng)計函數(shù)的運行結(jié)果有什么不同"實驗D003: 多表查詢實驗一、實驗名稱和性質(zhì)所屬課程數(shù)據(jù)庫原理 實驗名稱多表查詢實驗學時2實驗性質(zhì)驗證 綜合 設計必做/選做必做
21、選做二、實驗目的1掌握多表連接查詢方法。2掌握IN 子查詢的嵌套查詢。3了解EXISTS嵌套查詢方法。三、實驗的軟硬件環(huán)境要求硬件環(huán)境要求:PC機(單機)。使用的軟件名稱、版本號以及模塊:Windows XP下的SQL Server 2005(或 SQL Server 2008)。四、知識準備1多表的連接查詢(相當于做笛卡兒乘積)SELECT <目標列表達式列表> FROM 表名,表名2多表的等值連接查詢SELECT ALL|DISTINCT <表名.列名> FROM 表1,表2 WHERE 表1.列名=表2.列名注意:多表連接時要注意當某列名在兩張表中同時存在時,在列
22、名前要加表名以示區(qū)分。3表自身的連接SELECT 別名.列名,F(xiàn)ROM 表1 AS 別名1, 表1 AS 別名2WHERE 別名1.列名=別名2.列名注意:自身連接時因為是對同一張表操作,為區(qū)分開來對該表操作的順序,需要對表取兩個別名,以示區(qū)別。4IN嵌套子查詢SELECT <目標列表達式列表> FROM 表名WHERE 列名 IN (SELECT 字句)5 EXISTS嵌套子查詢帶有EXISTS謂詞的子查詢不返回任何數(shù)據(jù),只產(chǎn)生邏輯真值“true”或邏輯假值“false”。若內(nèi)層查詢結(jié)果非空,則返回真值若內(nèi)層查詢結(jié)果為空,則返回假值。由EXISTS引出的子查詢,其目標列表達式通常
23、都用* ,因為帶EXISTS的子查詢只返回真值或假值,給出列名無實際意義所以,EXISTS子查詢中一般是相關(guān)自查詢,即子查詢脫離父查詢后不能單獨執(zhí)行。思考:如果EXISTS子查詢中是不相關(guān)子查詢,會有什么結(jié)果.五、實驗內(nèi)容1多表等值連接查詢;2外連接查詢;3IN子查詢嵌套;4EXISTS嵌套查詢。六、驗證性實驗1多表的連接查詢(相當于做笛卡兒乘積)SELECT * FROM C,SC2表的等值連接查詢(1) 查詢各學生的選課信息(包括學號、課程名、成績)因為學號和成績在SC表中,而課程名在C表中,因此需要多表查詢。SELECT SNO,CNAME,GRADEFROM C,SCWHERE C.C
24、NO=SC.CNO(2) 查詢學生的選課記錄,顯示學生的學號、課程號、成績。SELECT S.SNO,SNAME,CNO,GRADEFROM S,SCWHERE S.SNO=SC.SNO(3) 查詢學生的選課記錄,顯示學生的學號、課程號、課程名、成績SELECT S.SNO,SNAME,SC.CNO,CNAME,GRADEFROM S,SC,CWHERE S.SNO=SC.SNO AND SC.CNO=C.CNO3左外連接查詢:當希望左表(第一張表)中所有記錄全部顯示出來時,需要用左外連接操作。INSERT INTO S (SNO,SNAME) VALUES(20000,Z*)SELECT S
25、.SNO,SNAME,CNO,GRADEFROM S LEFT OUTER JOIN SC ON S.SNO=SC.SNO說明與下面等值連接的執(zhí)行結(jié)果有何不同.SELECT S.SNO,SNAME,CNO,GRADEFROM S, SC WHERE S.SNO=SC.SNO4表自身的連接(1) 查詢與李勇同系的學生學號將學生表S與S本身進行等值連接(系部相等),因為S與S做連接操作時不能區(qū)分,所以,對表取一個別名。然后將第二張表S中名字為李勇的記錄選擇出就可。SELECT S1.SNOFROM S AS S1, S AS S2WHERE S1.DEPA=S2.DEPA AND S2.SNAME
26、=李勇(2)顯示每個學生的非最高分成績(學生自己的選課成績中,不是最高分的選課記錄顯示出來)SELECT SNO, CNO, GRADE FROM SC AS SC1 WHERE GRADE <(SELECT MAX(GRADE) FROM SC AS SC2 WHERE SC2.SNO=SC1.SNO)5IN嵌套子查詢(1) 不相關(guān)的IN 子查詢:子查詢可以單獨執(zhí)行,與被嵌套的查詢無關(guān)。如,查詢與李勇同系的學生學號可以先查詢出李勇所在的系,然后再到S表中查詢與上述結(jié)果相同的記錄。SELECT SNO FROM SWHERE DEPA IN (SELECT DEPA FROM S WHE
27、RE SNAME=李勇)查詢數(shù)據(jù)庫原理課程的選課人數(shù)SELECT COUNT(*) FROM SCWHERE CNO IN ( SELECT CNO FROM C WHERE CNAME=數(shù)據(jù)庫原理)(2) 相關(guān)的子查詢:子查詢中要用到父查詢表的信息,子查詢不能獨立執(zhí)行。如,查詢選修課程號為“C01”課程且成績至少高于選修課程號為“C02”的同學的Cno、Sno和GRADE。在子查詢中,因為要查找該同學C02課程的成績,所以,需要父查詢表中該學生的學號信息。SELECT CNO,SNO,GRADE FROM SC AS SC1WHERE CNO=C01 AND GRADE >(SELEC
28、T GRADE FROM SC AS SC 2 WHERE SC2.SNO=SC1.SNO AND SC2.CNO=C02)6 EXISTS嵌套子查詢(1) 執(zhí)行以下語句,觀察顯示的兩個查詢結(jié)果SELECT SNO,SNAME FROM SWHERE EXISTS(SELECT * FROM SC WHERE CNO=C03)-請寫出這段代碼的執(zhí)行過程。GO SELECT SNO,SNAME FROM S(從結(jié)果看,第一段代碼有沒有實際的意義.)(2)執(zhí)行以下語句,觀察顯示的兩個查詢結(jié)果INSERT INTO C VALUES(C06,數(shù)據(jù)庫安全,NULL,3)SELECT SNO,SNAME
29、 FROM SWHERE EXISTS(SELECT * FROM SC WHERE CNO=C06)(3)查詢數(shù)據(jù)庫原理課程的選課人數(shù)SELECT COUNT(*)FROM SCWHERE EXISTS( SELECT * FROM C WHERE C.CNO=SC.CNO AND CNAME= 數(shù)據(jù)庫原理)七、設計性實驗1實驗要求(1)查詢“計算機系”學生所學課程的成績表。(2)查詢成績比該課程平均成績低的同學的成績表。(提示:用相關(guān)子查詢。)(3)查詢選修“C01”課程的學生學號、課程名、成績,并要求對查詢結(jié)果按成績的降序排列,如果成績相同則按學號的升序排列。(4)查詢選修兩門及兩門以上
30、課程的學生學號及姓名。(5)查詢年齡在20-22之間的男生的選修的課程號。(6)查詢選修數(shù)據(jù)結(jié)構(gòu)課程的學生人數(shù)。(7)查詢每門選課成績在80分以上的學生學號、。(提示:每個學生選修的所有課程中如果其最低成績?yōu)?gt;=80即滿足條件)2思考題(1)多表的連接查詢是否都可以轉(zhuǎn)換成嵌套查詢.什么情況下連接查詢不能用嵌套查詢表示.(2)多表連接查詢和IN嵌套子查詢從查詢效率上來說,哪種查詢的效果更好.為什么"實驗D004: 數(shù)據(jù)完整性約束實驗一、實驗名稱和性質(zhì)所屬課程數(shù)據(jù)庫原理 實驗名稱數(shù)據(jù)完整性約束實驗學時2實驗性質(zhì)驗證 綜合 設計必做/選做必做 選做二、實驗目的1掌握數(shù)據(jù)完整性約束的類
31、型。2掌握SQL SERVER中的相關(guān)完整性約束。三、實驗的軟硬件環(huán)境要求硬件環(huán)境要求:PC機(單機)。使用的軟件名稱、版本號以及模塊:Windows XP下的SQL Server 2005(或 SQL Server 2008)。四、知識準備1SQL SERVER中的完整性約束(1)Primary key約束:利用表中的一列或多列來唯一標識一行數(shù)據(jù).能確保primary key 對應的數(shù)據(jù)列不為空,且數(shù)據(jù)不重復.(2)default約束:處理用戶不包含全部數(shù)據(jù)列的數(shù)據(jù)插入.(3)check約束通過檢查輸入數(shù)據(jù)的值來維護數(shù)據(jù)的完整性. (4)unique約束確保主鍵外的列數(shù)據(jù)的唯一性(5)For
32、eign key主要用來維護兩個表之間的數(shù)據(jù)一致性. 2使用規(guī)則規(guī)則的創(chuàng)建:Create rule 規(guī)則名As布爾表達式規(guī)則的綁定:Sp_bindrule rulename, table.columnSp_unbindrule talbe.column3創(chuàng)建數(shù)據(jù)表時指明完整性約束CREATE TABLE <表名>(<列名> <數(shù)據(jù)類型> <列級完整性約束條件> ,<列名> <數(shù)據(jù)類型> <列級完整性約束條件> ,<表級完整性約束條件> );<列級完整性約束條件>:涉及相應屬性列的完整性約
33、束條件<表級完整性約束條件>:涉及一個或多個屬性列的完整性約束條件4修改表結(jié)構(gòu)時可以添加或刪除完整性約束ALTER TABLE 表名ADD CONSTRAINT 完整性約束名 約束 如,在S表上添加主鍵約束ALTER TABLE S ADD CONSTRAINT priK PRIMARY KEY(SNO)五、實驗內(nèi)容1建立新表時增加完整性約束。2為已有表添加完整性約束。3為兩表建立關(guān)聯(lián),實現(xiàn)參照完整性。六、驗證性實驗每小題語句輸入好后執(zhí)行,觀察執(zhí)行后有什么結(jié)果.想想為什么.1PRIMARY KEY主鍵約束的建立(1)建立表時加主鍵約束CREATE TABLE ST(SNO VARC
34、HAR (10) PRIMARY KEY ,SNAME VARCHAR(20) NOT NULL,DEPA VARCHAR(20), AGE INT, SEX CHAR(4))GOINSERT INTO ST (SNO,SNAME,DEPA) VALUES(1001,Z*,NULL)GOINSERT INTO ST (SNO,SNAME) VALUES(1001,MID)GO INSERT INTO ST (SNO,SNAME) VALUES(NULL,Z*)(2)在已有的表上添加約束CREATE TABLE ST2(SNO VARCHAR (10) NOT NULL ,SNAME VARCH
35、AR(20) NOT NULL,DEPA VARCHAR(20), AGE INT, SEX CHAR(4))GOINSERT INTO ST2 SELECT * FROM SGOALTER TABLE ST2 ADD CONSTRAINT priKEY PRIMARY KEY(SNO)INSERT INTO ST2 (SNO,SNAME,DEPA) VALUES(200512,Beibei,NULL)運行后出現(xiàn)什么結(jié)果.分析原因。2DEFAULT約束CREATE TABLE CUST(NO VARCHAR(5) PRIMARY KEY, WEIGHT INT DEFAULT(10)GOINS
36、ERT INTO CUST(NO) VALUES(ZY01)INSERT INTO CUST(NO) VALUES(ZY03)INSERT INTO CUST VALUES(ZY02,20) GO SELECT * FROM CUST運行后出現(xiàn)什么結(jié)果.分析原因。3CHECK 約束CREATE TABLE CUSTOMER(CUSTNO CHAR(4) NOT NULL CHECK (CUSTNO LIKE A-Z0-9A-Z0-9A-Z0-9A-Z0-9),CUSTNAME VARCHAR(20)GOINSERT INTO CUSTOMER VALUES(BJ01,Beijing Grid
37、Corp.)GOINSERT INTO CUSTOMER VALUES(BJ1,Beijing Grid Corp.)GOINSERT INTO CUSTOMER VALUES(BJ*1,Beijing Grid Corp.)運行后出現(xiàn)什么結(jié)果.分析原因。4UNIQUE 唯一性約束的建立CREATE TABLE CUST1(CUSTNO CHAR(4)PRIMARY KEY,CUSTNAME VARCHAR(20) UNIQUE, COUNTRY VARCHAR(10)GO INSERT INTO CUST1(CUSTNO) VALUES(BJ01)GOINSERT INTO CUST1(CU
38、STNO) VALUES(BJ02)GOINSERT INTO CUST1(CUSTNO,CUSTNAME )VALUES(BJ03,Beijing Grid Corp.)GOINSERT INTO CUST1 (CUSTNO, CUSTNAME )VALUES(BJ04,Beijing Grid Corp.)運行后出現(xiàn)什么結(jié)果.分析原因。5FOREIGN KEY外鍵約束的建立ALTER TABLE C ADD CONSTRAINT CpriKEY PRIMARY KEY(CNO)GOALTER TABLE SC ADD CONSTRAINT scpriKEY PRIMARY KEY(SNO,
39、CNO)ALTER TABLE SC ADD CONSTRAINT scforKEY1 FOREIGN KEY (SNO) REFERENCES ST2(SNO)ALTER TABLE SC ADD CONSTRAINT scforKEY2 FOREIGN KEY (CNO) REFERENCES C(CNO)GOINSERT INTO SC (SNO,CNO) VALUES(890,C10)INSERT INTO SC (SNO,CNO) VALUES(200518,C01)INSERT INTO SC (SNO,CNO) VALUES(890,NULL)INSERT INTO SC (SN
40、O,CNO) VALUES(NULL,C10)運行后出現(xiàn)什么結(jié)果.分析原因。七、設計性實驗1實驗要求(1) 在S表中添加完整性約束:SNO設置為主鍵,SEX 的默認值為女,AGE 的有效值為16-25。(2)創(chuàng)建1張與S相同的表S1,在創(chuàng)建的同時將SNO設置為主鍵,SEX 的默認值為女,AGE 的有效值為16-25 ,并將S表中的數(shù)據(jù)插入到S1中,插入不同的記錄(用INSERT命令)來驗證設置的完整性。(3)創(chuàng)建1張與SC相同的表SC1,將(SNO,CNO)設置為主鍵,SNO和CNO設置為外鍵,并將SC表中的數(shù)據(jù)復制到SC1中,插入不同的記錄來驗證設置的完整性。(4)創(chuàng)建1張與C表相同的表C1
41、,將C中數(shù)據(jù)插入到C1后,在C1上添加完整性約束:將(CNO)設置為主鍵,CPNO 引用 CNO,CREDIT值為3-6。2思考題SQL Server 中有哪些完整性功能.保證數(shù)據(jù)完整性還需要注意哪些方面的問題.實驗D005: 數(shù)據(jù)操作與索引實驗一、實驗名稱和性質(zhì)所屬課程數(shù)據(jù)庫原理 實驗名稱數(shù)據(jù)操作與索引實驗學時2實驗性質(zhì)驗證 綜合 設計必做/選做必做 選做二、實驗目的1掌握數(shù)據(jù)操作-插入、刪除、修改。2掌握數(shù)據(jù)表的索引方法。3掌握視圖的創(chuàng)建機制及其上的操作。三、實驗的軟硬件環(huán)境要求硬件環(huán)境要求:PC機(單機)。使用的軟件名稱、版本號以及模塊:Windows XP下的SQL Server 20
42、05(或 SQL Server 2008)。四、知識準備1數(shù)據(jù)插入的兩種方式單記錄插入將數(shù)值列表所表示的記錄插入數(shù)據(jù)表INSERT INTO 表名<目標列表> VALUES(數(shù)值列表)多記錄插入將SELECT語句的查詢結(jié)果插入到數(shù)據(jù)表INSERT INTO表名<目標列表> SELECT 語句2數(shù)據(jù)刪除的語句格式:DELETE FROM 表名WHERE 字句3數(shù)據(jù)修改格式:UPDATE 表名SET 字段名=表達式WHERE 字句4索引提高數(shù)據(jù)效率的有效方法,建立索引的方法有兩種:非聚族索引:根據(jù)某些字段按次序建立索引表,但是不修改原來的數(shù)據(jù)表;1張數(shù)據(jù)表上可以建立多個非聚
43、族索引。聚族索引:根據(jù)某些字段進行排序建立索引,同時將原表根據(jù)該字段排序過。一張表上只能建立一個聚族索引。5根據(jù)索引看數(shù)據(jù)表SELECT * FROM 表名 (INDEX=該表上的索引名)五、實驗內(nèi)容1數(shù)據(jù)的插入操作。2數(shù)據(jù)的修改操作。3數(shù)據(jù)的查詢造作。4聚族索引、非聚族索引的建立。5視圖的建立及其上的操作。六、驗證性實驗1數(shù)據(jù)的插入(1)單記錄的插入USE STUDENTGOSELECT * FROM SINSERT INTO S(SNO,SNAME) VALUES(200300,Paulwen)SELECT * FROM S(2)多記錄的插入CREATE TABLE SBAK(SNO VA
44、RCHAR (10) NOT NULL ,SNAME VARCHAR(20),DEPA VARCHAR(20), AGE INT, SEX CHAR(4)GOSELECT * FROM SBAKINSERT INTO SBAK SELECT * FROM SSELECT * FROM SBAK2數(shù)據(jù)的刪除CREATE TABLE CBAK( CNO VARCHAR(10) NOT NULL, CNAME VARCHAR(20), CPNO VARCHAR(10),CREDIT INT)GOINSERT INTO CBAK SELECT * FROM CDELETE FROM CBAK WHER
45、E CREDIT<4SELECT * FROM CBAK3數(shù)據(jù)的修改SELECT * FROM SUPDATE S SET DEPA=CS WHERE DEPA=計算機系GOSELECT * FROM S4索引的建立(1) 建立非聚族索引SELECT * FROM CGOCREATE INDEX ICNAME ON C(CNAME)GOSELECT * FROM C /*看數(shù)據(jù)表 */SELECT * FROM C WITH(INDEX=ICNAME) /*按索引次序看數(shù)據(jù)表 */(2)建立聚族索引SELECT * FROM CGOCREATE CLUSTERED INDEX CICNO
46、 ON C(CNO)GOSELECT * FROM CSELECT * FROM C WITH(INDEX=CICNO)(3) 建立唯一索引CREATE UNIQUE INDEX UISNO ON SC (SNO)執(zhí)行后有什么結(jié)果.為什么會出現(xiàn)這個結(jié)果.CREATE UNIQUE INDEX UISNO ON SC (SNO, CNO DESC)執(zhí)行后有什么結(jié)果.為什么.(4)建立復合索引SELECT * FROM SGOCREATE INDEX IAGESNO ON S(AGE DESC,SNO)GO SELECT * FROM SSELECT * FROM S WITH(INDEX =IA
47、GESNO)(5)查看表中的索引SP_HELPINDEX S(6)刪除表中的索引DROP INDEX S.IAGESNOGOSP_HELPINDEX S5視圖及其操作(1)視圖的建立CREATE VIEW SHOWSNOASSELECT S.SNO,SNAME,AVG(GRADE ) AS 平均成績 FROM S,SCWHERE S.SNO=SC.SNOGROUP BY S.SNO,SNAMEGO SELECT * FROM SHOWSNO創(chuàng)建信息系學生的視圖CREATE VIEW VISDEPAASSELECT * FROM S WHERE DEPA= 信息系(2)在視圖上修改數(shù)據(jù)UPDAT
48、E VISDEPASET DEPA=ISGO SELECT * FROM VISDEPA視圖中還有數(shù)據(jù)嗎.為什么會這樣.CREATE VIEW S_SUMASSELECT SNO, SUM(GRADE) AS TOTALSCORE FROM SCGROUP BY SNOGOUPDATE S_SUMSET TOTALSCORE=60執(zhí)行語句,出現(xiàn)什么結(jié)果.分析為什么.(3)在視圖上刪除數(shù)據(jù)SELECT * FROM VISDEPADELETE FROM VISDEPA WHERE SEX=女SELECT * FROM VISDEPASELECT * FROM S七、設計性實驗1實驗要求(1)將S
49、表系部為“CS”學生對應的系部改為計算機系。(2)創(chuàng)建一個與SC表相同新數(shù)據(jù)表SCNEW,查詢SC表中成績?yōu)榭盏挠涗洸⑵鋸椭频絊CNEW表中。(3)刪除SC表中成績?yōu)榭盏倪x課記錄。(4)根據(jù)S表中姓名字段建立一個降序非簇索引。(5)建立S表上SNO的聚族索引。(6)建立SC表上根據(jù)SNO升序,CNO降序的復合索引。(7)建立每門課程的課程號、課程名、選課人數(shù)、平均分的視圖。2思考題(1)是否可以對任意的視圖進行修改.什么樣的視圖上不能進行修改操作.(2)如果表中某個字段重復值比較多,要不要在該字段上建立索引.為什么.實驗D006: SQL編程及存儲過程實驗一、實驗名稱和性質(zhì)所屬課程數(shù)據(jù)庫原理
50、 實驗名稱SQL編程及存儲過程實驗學時2實驗性質(zhì)驗證 綜合 設計必做/選做必做 選做二、實驗目的1了解T-SQL的基本數(shù)據(jù)類型、函數(shù);2掌握局部變量的定義和賦值;3掌握存儲過程的定義及調(diào)用三、實驗的軟硬件環(huán)境要求硬件環(huán)境要求:PC機(單機)使用的軟件名稱、版本號以及模塊:Windows XP下的SQL Server 2005(或 SQL Server 2008)四、知識準備1SQL中的基本數(shù)據(jù)類型:varchar:字符數(shù)據(jù)。datetime:(常量使用特定格式的字符日期值來表示,并使用單引號括起來。例如:'1976-05-28','May 28, 1976',&
51、#39;28 May, 1976','760528','05/28/76'。Integer:用一串數(shù)字來表示,不含小數(shù)點,不使用引號。例如,123,1896。Decimal:用一串數(shù)字來表示,可以包含小數(shù)點,不使用引號。例如,1893.1209,2.0。float和real:使用科學記數(shù)法表示。例如,101.5E5,0.5E-2。money:用一串數(shù)字,可以包含或不包含小數(shù)點,以一個貨幣符號($)作為前綴,不使用等等2SQL中的變量:SQL中變量用來存放臨時數(shù)據(jù),變量使用前一定要先進行定義,變量名必須以開頭。另外,SQL Server中還提供一些系統(tǒng)變量,系統(tǒng)變量是以開頭的。變量的定義: declare 變量名 數(shù)據(jù)類型如goDeclare name varchar(20)set name='王雨'Print nameGo3SQL中的基本函數(shù)(1) 字符串函數(shù):LEN()、UPPER()、LOWER()、RIGHT()、LEFT()、SUBSTRING()、CHARINDEX()、STR()、REPLACE()等(2)數(shù)學函數(shù):常用的數(shù)學函數(shù)通
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國外齒墊圈市場調(diào)查研究報告
- Starter Unit 2 Keep TidySection B 1a~1d教學設計 2024-2025學年人教版(2024)七年級英語上冊
- 2025年中國中灰醇酸甲板漆市場調(diào)查研究報告
- 2025年不銹鋼棒材合作協(xié)議書
- Unit 1 Cultural Heritage Listening and Talking 教學設計-2024-2025學年高中英語人教版(2019)必修第二冊
- 2024年春五年級語文下冊第五單元23鄭成功收復臺灣導學案無答案語文S版
- 2024年新教材高中物理課時素養(yǎng)評價四拋體運動的規(guī)律含解析新人教版必修2
- 關(guān)注你的視力與頸椎教學設計 高中一年級體育與健康教育課時教學設計
- 第二章 機械振動(大單元整體教學設計)高二物理同步備課系列(人教版2019選擇性必修第一冊)
- 口語交際:我們與環(huán)境 教學設計-2024-2025學年統(tǒng)編版語文四年級上冊
- 2025年2級注冊計量師專業(yè)實務真題附答案
- 果實品質(zhì)評價體系建立與應用-深度研究
- 服裝廠安全生產(chǎn)培訓
- 城市隧道工程施工質(zhì)量驗收規(guī)范
- 2025年湖南高速鐵路職業(yè)技術(shù)學院高職單招高職單招英語2016-2024年參考題庫含答案解析
- 北京市東城區(qū)2024-2025學年高一上學期期末統(tǒng)一檢測歷史試卷(含答案)
- 五 100以內(nèi)的筆算加、減法2.筆算減法 第1課時 筆算減法課件2024-2025人教版一年級數(shù)學下冊
- 2025年八省聯(lián)考陜西高考生物試卷真題答案詳解(精校打印)
- 2025脫貧攻堅工作計劃
- 借款人解除合同通知書(2024年版)
- 發(fā)展新質(zhì)生產(chǎn)力如何“因地制宜”
評論
0/150
提交評論