數(shù)據(jù)庫實驗報告_第1頁
數(shù)據(jù)庫實驗報告_第2頁
數(shù)據(jù)庫實驗報告_第3頁
數(shù)據(jù)庫實驗報告_第4頁
數(shù)據(jù)庫實驗報告_第5頁
免費預(yù)覽已結(jié)束,剩余15頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、實驗一創(chuàng)立數(shù)據(jù)庫及關(guān)系表一、實驗?zāi)康? .掌握SQLServer數(shù)據(jù)庫治理系統(tǒng)的使用,能夠中該環(huán)境中進行日常數(shù)據(jù)庫操作;2 .掌握在SQLServer中使用圖形化工具創(chuàng)立數(shù)據(jù)庫的方法;3 .掌握建立關(guān)系表的語句,掌握定義主碼約束及外碼約束的語句;4 .掌握修改表結(jié)構(gòu)的語句.二、實驗要求1 .了解SQLServer數(shù)據(jù)庫的組成,會使用圖形化工具創(chuàng)立數(shù)據(jù)庫.2 .編寫建立表及主、外碼約束的T-SQL語句,并執(zhí)行這些語句,在數(shù)據(jù)庫中建立符合要求的關(guān)系表.3 .編寫修改表結(jié)構(gòu)的語句.三、實驗內(nèi)容和步驟1 .創(chuàng)立符合如下條件的數(shù)據(jù)庫:數(shù)據(jù)庫的名字為:Students數(shù)據(jù)文件的邏輯文件名為:Student

2、s_dat,存放在D:Test錄下假設(shè)D:盤中無此子目錄,可先建立此目錄,然后再創(chuàng)立數(shù)據(jù)庫.;文件的初始大小為:5MB增長方式為自動增長,每次增加1MB日志文件的邏輯文件名字為:Students_log,也存放在D:Test目錄下;日志文件的初始大小為:2MB日志文件的增長方式為自動增長,每次增加10%2 .在已建立的Students數(shù)據(jù)庫中,寫出創(chuàng)立滿足下述條件的四張表的SQL語句,并查看執(zhí)行結(jié)果.Student表結(jié)構(gòu)列名說明數(shù)據(jù)類型約束Sno學(xué)號普通編碼定長字符串,長度為7主碼Sname姓名普通編碼定長字符串,長度為10非空Ssex性別普通編碼定長字符串,長度為2Sage年齡微整型tiny

3、intSdept所在系普通編碼不定長字符串,長度為20Spec專業(yè)普通編碼定長字符串,長度為10Course表結(jié)構(gòu)列名說明數(shù)據(jù)類型約束Cno課程號普通編碼定長字符串,長度為10主碼Cname課程名普通編碼不定長字符串,長度為20非空Credit學(xué)時數(shù)整型Semester學(xué)分小整型SC表結(jié)構(gòu)列名說明數(shù)據(jù)類型約束Sno學(xué)號普通編碼定長字符串,長度為7主碼,引用Student的外碼Cno課程號普通編碼定長字符串,長度為10主碼,引用Course的外碼Grade成績小整型Teacher表結(jié)構(gòu)列名說明數(shù)據(jù)類型約束Tno教師號普通編碼定長字符串,長度為8非空Tname教師名普通編碼定長字符串,長度為10非

4、空Dept所在部門普通編碼不定長字符串,長度為20Salary工資定點小數(shù),小數(shù)點前4位,小數(shù)點后2位Birthday出生日期小日期時間型(smallldatetime)Createtablestudent(Snochar(7)primarykey,Snamenchar(10)notnull,Ssexnchar(2),Sagetinyint,Sdeptnvarchar(20),Specchar(10)createtablecourse(Cnochar(10),Cnamenvarchar(20)notnull,Creditint,Semestertinyint,Primarykey(Cno)cr

5、eatetablesc(Snochar(7)notnull,Cnochar(10)notnull,Gradetinyint,primarykey(Sno,Cn0,foreignkey(Sno)referencesStudent(Snc),foreignkey(Cno)referencesCourse(Cno),)createtableteacher(Tnochar(8)notnull,Tnamechar(10)notnull,Deptnvarchar(20),Salarynumeric(6,2),Birtherysmalldatetime)執(zhí)行結(jié)果:2.寫出實現(xiàn)如下操作的SQL®句,

6、并查看執(zhí)行結(jié)果:(1)在SC表中添加一個新的修課類別列:列名為:XKLB類型為chaK4).altertablescaddXKLBchar(4)(2)將Course表中的Credit列的類型改為:tinyint(微整型,取值范圍在0255).altertablecoursealtercolumnCredittinyint(3)刪除Student表的spec列.altertablestudentdropcolumnspec(4)為Teacher表添加主碼約束,其主碼列為:Tno.altertableteacheraddconstrainty_sprimarykey(Tno)3.執(zhí)行以下語句,能否

7、成功為什么INSERTINTOSCVALUES(S001','C0T,88,'必修)答:不成功,由于錯誤顯示sc表的sno學(xué)號列有外鍵約束,它是引用的student學(xué)生表里面的學(xué)號,所以執(zhí)行前面的語句時s001'不存在于學(xué)生表中,所以執(zhí)行不成功.假設(shè)在student學(xué)生表中插入學(xué)號s001'的學(xué)生信息,如:insertintostudentvalues('s001',王盼,'女,19,'數(shù)學(xué)系')那么再執(zhí)行該語句時成功.四.實驗小結(jié):通過這次實驗,學(xué)習(xí)了SQLServer數(shù)據(jù)庫治理系統(tǒng)的使用的方法,通過自己創(chuàng)立數(shù)據(jù)

8、庫和表,熟悉了上課中講到的相關(guān)知識,在完成實驗的同時對自己所編寫的代碼進行調(diào)試和查錯,并且自己發(fā)現(xiàn)錯誤并改正,對知識的理解和掌握都有很大的幫助.實驗二數(shù)據(jù)操作語句一、實驗?zāi)康睦斫鈹?shù)據(jù)操作語句的功能.二、實驗要求1 .根據(jù)實驗一建立的數(shù)據(jù)庫和關(guān)系表,導(dǎo)入局部數(shù)據(jù);2 .編寫實現(xiàn)數(shù)據(jù)操作功能的SQL語句.三、實驗內(nèi)容及步驟1 .查詢計算機系年齡最大的三個學(xué)生的姓名和年齡.selecttop3sname,sage,sdeptfromstudentwheresdept='計算機系'orderbysagedesc2 .統(tǒng)計每個學(xué)生的選課門數(shù),并按選課門數(shù)的遞增順序顯示結(jié)果.selects

9、no,count(*)fromscgroupbysnoorderbycount(*)3 .列出總成績超過200分的學(xué)生,要求列出學(xué)號、總成績.selectsno,sum(grade)總成績fromscgroupbysnohavingsum(grade)>2004 .查詢成績80分以上的學(xué)生的姓名、課程號和成績,并將結(jié)果按成績的降序排列.selectSname,cno,Gradefromscjoinstudentson=wheregrade>80orderbygradedesc5,查詢學(xué)生的選課情況,要求列出每位學(xué)生的選課情況(包括未選課的學(xué)生),并列出學(xué)生的學(xué)號、姓名、課程號和測試

10、成績.select,SnameCno,Gradefromstudentleftouterjoinscon=6 .列出“VET課程測試成績前三名的學(xué)生的學(xué)號、姓名、所在系和測試成績.selecttop3,snamesdept,gradefromstudentsjoinscon=joincoursecon=wherecname='VB'orderbygradedesc7,查詢哪些課程沒有人選,要求列出課程號和課程名.select,CnamefromCoursecleftjoinscon=whereisnull8 .查詢計算機系學(xué)生測試成績高于全體學(xué)生的總平均成績的學(xué)生的姓名、測試的

11、課程名和測試成績.selectsname,cname,gradefromstudentsjoinscon=joincoursecon=wheregrade>all(selectavg(grade)fromsc)andsdept='計算機系9 .查詢VB測試成績最低的學(xué)生的姓名、所在系和VB成績.selecttop1sname,sdept,gradefromstudentsjoinscon=joincoursecon=wherecname='VB'orderbygrade10 .查詢VB課程測試成績高于VB平均成績的學(xué)生的姓名.selectsnamefromstud

12、entsjoinscon=joincoursecon=wherecname='VB'andgrade>all(selectavg(grade)fromscjoincoursecon=wherecname='VB')11 .查詢平均成績大于80分的課程的名字和學(xué)分.selectcname,semesterfromcoursecwherecnoin(selectfromscgroupbyhavingavg(grade)>80)12 .統(tǒng)計每門課程的選課人數(shù),包括有人選的課程和沒有人選的課程,列出課程號,選課人數(shù)及選課情況,其中選課情況為:如果此門課程的選

13、課人數(shù)超過100人,那么顯示“人多;如果此門課程的選課人數(shù)在40100,那么顯示“一般;如果此門課程的選課人數(shù)在140,那么顯示“人少;如果此門課程沒有人選,那么顯示“無人選select,count選課人數(shù),casewhencount(*)>100then'人多'whencount(*)between40and100then'一般'whencount(*)between1and40then'人少'whencount(*)=0then'無人選'endas選課情況fromscgroupby13 .查詢至少選修了“9512102號

14、學(xué)生選修的全部課程的學(xué)生,列出學(xué)號和所選的課程號.selectsno,cnofromscsc1wherenotexists(select*fromcoursecjoinscon=wheresno='9512102,andnotexists(select*fromscwhere=and=)14 .查詢至少選修了第2學(xué)期開設(shè)的全部課程的學(xué)生的姓名和所在系.selectsname,sdeptfromstudentswherenotexists(select*fromcoursecwhere=24分;andnotexists(select*fromscwhere=and=)15 .修改“VET

15、課程的測試成績,如果是計算機系的學(xué)生,那么增加如果是信息系的學(xué)生那么增加8分,其他系的學(xué)生增加10分cupdatescsetgrade=grade+casesdeptwhen'計算機系"then4when'信息系"then8else10endfromstudentsjoinscon=joincoursecon=16 .刪除修課成績小于50分的學(xué)生的修課記錄deletefromscwheregrade<5017 .刪除信息系修課成績小于50分的學(xué)生的修課紀(jì)錄,分別用子查詢和多表連接形式實現(xiàn).-子查詢deletefromscwheresnoin(selec

16、tsnofromstudentwheresdept='信息>系')andgrade<50-多表連接deletefromscfromscjoinstudentson=wheresdept='信息>系'andgrade<5018 .將所有選修了“c01課程的學(xué)生的成績加10分updatescsetgrade=grade+10fromscwherecno='c01'19 .將計算機系所有選修了計算機文化學(xué)課程的學(xué)生的成績加10分,分別用子查詢和多表連接形式實現(xiàn).-多表連接updatescsetgrade=grade+10from

17、scjoinstudentson=joincoursecon=wherecname='計算機文化學(xué)'andsdept='計算機系'-子查詢updatescsetgrade=grade+10wheresnoin(selectsnofromstudentwheresdept='計算機系'andcnoin(selectcnofromcoursewherecname='計算機文化學(xué)')20 .刪除“VB測試成績最低的學(xué)生的VB修課記錄.Deletefromscwherecno=(selectcnofromcoursewherecname=

18、'VB')Andgrade=(selectmin(grade)fromscwherecno=(selectcnofromcoursewherecname='VB')21 .修改高等數(shù)學(xué)的測試成績,修改規(guī)那么如下:如果是計算機系學(xué)生,那么加10分,如果是信息系學(xué)生那么加5分,如果是數(shù)學(xué)系學(xué)生那么分數(shù)不變.updatescsetgrade=grade+casesdeptwhen'計算機系'then10when'信息系'then5else0endfromstudentsjoinscon=joincoursecon=wherecname=

19、'高等數(shù)學(xué)'四.實驗小結(jié)這次上機實驗,主要對數(shù)據(jù)操作語句的根本運用和理解,在實驗中從簡單到復(fù)雜的問題中,一點點的掌握了SQL語言的功能,在實驗中通過自己對語句的檢驗分析,還有老師的指導(dǎo),根本掌握了數(shù)據(jù)庫語言的運用,課后會多多穩(wěn)固.實驗三數(shù)據(jù)完整性約束一、實驗?zāi)康睦斫鈹?shù)據(jù)完整性約束的功能.二、實驗要求1 .掌握建立聲明性數(shù)據(jù)完整性約束的SQL語句;2 .掌握建立過程完整性約束的SQL語句.三、實驗內(nèi)容1 .在實驗一建立的Students數(shù)據(jù)庫中,編寫建立滿足完整性要求的定義表的SQL語句,執(zhí)行并觀察執(zhí)行結(jié)果.(說明:表名、列名均用給出的中文)(1)圖書表,結(jié)構(gòu)如下:書號:統(tǒng)一字符

20、編碼定長類型,長度為6,主碼,書名:統(tǒng)一字符編碼可變長類型,長度為30,非空,第一普通編碼定長字符類型,長度為10,非空,出版日期:小日期時間型,小于等于當(dāng)前系統(tǒng)日期,印刷數(shù)量:小整型,取值范圍:10005000,默認為4000,價格:定點小數(shù),小數(shù)局部一位,整數(shù)局部3位.(2)書店表,結(jié)構(gòu)如下:書店編號:統(tǒng)一字符編碼定長類型,長度為6,主碼,店名:統(tǒng)一字符編碼可變長類型,長度為30,非空,:普通編碼定長字符類型,12位長,取值形式:010-8位數(shù)字地址:普通編碼可變長字符類型,40位長.前兩個字符必須是:北京.(3)圖書銷售表(XSB,結(jié)構(gòu)如下:書號:統(tǒng)一字符編碼定長類型,長度為6,非空,書

21、店編號:統(tǒng)一字符編碼定長類型,長度為6,非空,銷售日期:小日期時間型,非空,默認值為系統(tǒng)當(dāng)前日期,銷售數(shù)量:微整型,取值大于0,主碼(書號,書店編號,銷售日期);書號為引用“圖書表的外碼;書店編號為引用“書店表的外碼.createtable圖書表(書號nchar(6)PRIMARYKEY書名nvarchar(30)notnull,第一作者char(10)notnull,出版日期smalldatetimecheck(出版日期<=getdate(),印刷數(shù)量smallintdefault4000,價格numeric(4,1),check(印刷數(shù)量between'1000'an

22、d'5000')createtable書店表(書店編號nchar(6)primarykey,店名nvarchar(30)notnull,char(12)check(like'010-0-90-90-90-90-90-90-90-9'),地址nvarchar(40)check(地址like'北京')createtable圖書銷售表(書號nchar(6)notnull,書店編號nchar(6)notnull,銷售日期smalldatetimedefaultgetdate()notnull,銷售數(shù)量tinyintcheck(銷售數(shù)量>0),pri

23、marykey(書號,書店編號,銷售日期),foreignkey(書號)references圖書表(書號),foreignkey(書店編號)references書店表(書店編號)2 .執(zhí)行以下兩條數(shù)據(jù)插入語句,是否都能執(zhí)行成功為什么INSERTINTO圖書表VALUES('T0001','數(shù)據(jù)庫系統(tǒng)根底,張三,2021-2-1,3000,成功INSERTINTO圖書表VALUES,T0002','計算機網(wǎng)絡(luò)',張三,'2021-1-1',500,不成功,由于印刷數(shù)量是500,不滿足規(guī)定的1000到50002 .執(zhí)行以下兩條數(shù)據(jù)插入

24、語句,是否執(zhí)行成功為什么INSERTINTO書店表VALUES('S001','新華書店,12345678','北京市海淀區(qū))不成功,不滿足格式.修改后的:3 .執(zhí)行以下兩條數(shù)據(jù)插入語句,是否執(zhí)行成功為什么INSERTINTO圖書銷售表(書號,書店編號,銷售數(shù)量)VALUES(0001,'S001',20)不成功,由于書號為引用“圖書表的外碼.4 .編寫實現(xiàn)如下功能的觸發(fā)器:(1)限制測試成績必須在0100分之間.createtriggertri_aonscafterinsert,updateasifexists(select*froms

25、cwheregradenotbetween0and100)rollback(2)限制不能將不及格的測試成績改為及格createtriggertri_bonscafterupdateasifexists(select*frominsertedjoindeletedon=and=where>=60and<=60)rollback(3)限制不能刪除選修課程測試成績不及格學(xué)生的該門課程的選課及測試記錄.createtriggertri_conscafterdeleteasifexists(select*fromdeletedwheregrade<60)rollback(4)限制每個學(xué)

26、生總的選課門數(shù)不能超過20門.createtriggertri_donscafterinsert,updateasifexists(selectcount(cno)fromscgroupbysnohavingcount(cno)>20)rollback(5)限制每個學(xué)期開設(shè)的課程總學(xué)分必須在2025之間.createtriggertri_eoncourseafterinsert,update,deleteasifexists(selectsum(credit)fromcoursegroupbysemesterhavingsum(credit)notbetween20and25)rollb

27、ack五.實驗小結(jié)通過這次上機實驗,把上課中所講的數(shù)據(jù)完整性約束的相關(guān)知識得到了復(fù)習(xí),通過上機更直觀的理解了完整性約束的功能,通過添加刪除約束的操作更好的掌握了有關(guān)知識,收獲很大.實驗四平安治理一、實驗?zāi)康?.掌握平安治理的過程.2,掌握在SQLServer環(huán)境中實現(xiàn)平安治理的操作.二、實驗要求1.能夠在SQLServer環(huán)境中建立SQLServer身份驗證的登錄賬戶.2,能夠建立數(shù)據(jù)庫用戶.3,編寫給用戶授權(quán)的SQL語句.4.驗證平安治理的效果.三、實驗內(nèi)容及步驟1 .建立SQLServer認證的登錄帳戶:u1、u2、u3,并將u1、u2、u3映射為實驗一建立的Students數(shù)據(jù)庫的用戶.2 .用u1建立一個新的連接,并在students數(shù)據(jù)庫中執(zhí)行下述語句,是否能成功為什么SELECT*FROMCourse不成功,由于u1沒有被授予對象'Course'的查詢權(quán)限.3

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論