版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
計(jì)算機(jī)與信息學(xué)院數(shù)據(jù)庫實(shí)驗(yàn)報(bào)告專業(yè)班級(jí)學(xué)生姓名及學(xué)號(hào)課程教學(xué)班號(hào)任課教師實(shí)驗(yàn)指導(dǎo)教師實(shí)驗(yàn)地點(diǎn)2012~2013學(xué)年第二學(xué)期實(shí)驗(yàn)1使用向?qū)?chuàng)建和刪除數(shù)據(jù)庫實(shí)驗(yàn)?zāi)康氖煜QLServer中SQLServerManagementStudio的環(huán)境了解SQLServer數(shù)據(jù)庫的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)掌握使用向?qū)?chuàng)建和刪除數(shù)據(jù)庫的方法實(shí)驗(yàn)要求熟練使用SSMS進(jìn)行數(shù)據(jù)庫的創(chuàng)建和刪除操作。完成實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)內(nèi)容設(shè)有一學(xué)籍管理系統(tǒng),其數(shù)據(jù)庫名為“EDUC”。初始大小為10MB,最大為50MB,數(shù)據(jù)庫自動(dòng)增長(zhǎng),增長(zhǎng)方式是按5%比例增長(zhǎng);日志文件初始為2MB,最大可增長(zhǎng)到5MB,按1MB增長(zhǎng)。數(shù)據(jù)庫的邏輯文件名為“student_data”,物理文件名為“student_data.mdf,存放路徑為“E:\sql_data”。日志文件的邏輯文件名為“student_log”,物理文件名為“student_log.ldf”,存放路徑為“E:\sql_data”。四、實(shí)驗(yàn)步驟1.使用SQLServerManagementStudio(簡(jiǎn)稱SSMS)創(chuàng)建數(shù)據(jù)庫。(1)啟動(dòng)SSMS在開始菜單中:所有程序-SQLServer2005-SQLServerManagementStudio單擊“連接”按鈕,便可以進(jìn)入【SQLServerManagementStudio】窗口。如果身份驗(yàn)證選擇的是“混合模式”,則要輸入sa的密碼。(2)建立數(shù)據(jù)庫在“對(duì)象資源管理器”窗口,建立上述數(shù)據(jù)庫EDUC。在數(shù)據(jù)庫節(jié)點(diǎn)上右擊選擇新建。同時(shí)建立一個(gè)同樣屬性的數(shù)據(jù)庫EDUC1。2.使用向?qū)h除上面建立的數(shù)據(jù)庫。用SSMS刪除建立的數(shù)據(jù)庫EDUC。實(shí)驗(yàn)總結(jié)經(jīng)過本次試驗(yàn),對(duì)于SQLSERVER有了一個(gè)初步的認(rèn)識(shí),也對(duì)于在sqlserver上創(chuàng)建數(shù)據(jù)庫有了一定的了解。實(shí)驗(yàn)2使用SQL語句創(chuàng)建和刪除數(shù)據(jù)庫實(shí)驗(yàn)?zāi)康?.了解SQLServer2005數(shù)據(jù)庫的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)。2.掌握使用SQL語句創(chuàng)建和刪除數(shù)據(jù)庫。二、實(shí)驗(yàn)要求1.熟練使用查詢分析器進(jìn)行數(shù)據(jù)庫的創(chuàng)建和刪除操作。2.完成實(shí)驗(yàn)報(bào)告。三、實(shí)驗(yàn)內(nèi)容用SQL語句去創(chuàng)建和刪除數(shù)據(jù)庫。實(shí)驗(yàn)步驟1.創(chuàng)建數(shù)據(jù)庫userdb1。根據(jù)步驟1的sql語句,寫出創(chuàng)建實(shí)驗(yàn)1中數(shù)據(jù)庫EDUC的sql語句,并建立數(shù)據(jù)庫EDUC.createdatabaseEDUCon(name=EDUC_data,--數(shù)據(jù)文件的邏輯名稱,注意不能與日志邏輯同名filename='E:\sql_data\student_data.mdf',--物理名稱,注意路徑必須存在size=10,--數(shù)據(jù)初始長(zhǎng)度為Mmaxsize=50,--最大長(zhǎng)度為Mfilegrowth=5%)--數(shù)據(jù)文件每次增長(zhǎng)Mlogon(name=EDUC_log,filename='E:\sql_data\student_log.ldf',size=2,maxsize=5,filegrowth=1)3.用SQL語句刪除步驟1建立的數(shù)據(jù)庫userdb1。dropdatabaseuserdb1;五、實(shí)驗(yàn)總結(jié)掌握了用SQL語句創(chuàng)建和刪除數(shù)據(jù)庫,對(duì)SQLServer都有了進(jìn)一步的認(rèn)識(shí)和了解,發(fā)現(xiàn)其實(shí)SQL語句還是挺好用的。實(shí)驗(yàn)三分別用向?qū)Ш蚐QL語句創(chuàng)建和刪除表實(shí)驗(yàn)?zāi)康?.了解表的結(jié)構(gòu)特點(diǎn)。2.了解SQLServer的基本數(shù)據(jù)類型。3.學(xué)會(huì)使用T-SQL語句創(chuàng)建表。二.實(shí)驗(yàn)要求完成SQL語句創(chuàng)建和刪除基本表。完成實(shí)驗(yàn)報(bào)告。三.實(shí)驗(yàn)內(nèi)容在數(shù)據(jù)庫EDUC中,創(chuàng)建如下幾個(gè)表:表3.1class表(班級(jí)信息表)字段名稱類型允許空值主鍵說明ClsNOChar(6)NOTNULL是班號(hào)ClsNameVarchar(16)NOTNULL班名DirectorVarchar(10)NULL輔導(dǎo)員SpecialtyVarchar(30)NULL專業(yè)表3.2student表(學(xué)生信息表)字段名稱類型允許空值主鍵說明SnoChar(8)NOTNULL是學(xué)號(hào)SnameVarchar(10)NOTNULL姓名SexChar(2)性別:男、女ClsNOChar(6)NULL班級(jí)的編號(hào),(外鍵)參照表ClassSaddrVarchar(20)住址Sagenumeric(3,0)年齡,大于10,但小于30歲HeightDecimal(4,2)身高表3.3course表(課程信息表)字段名稱類型允許空值主鍵說明CnoChar(4)NOTNULL是主鍵CnameVarchar(16)NOTNULL課程的名稱Cpnochar(4)NULL先修課程的課程號(hào)(外鍵),參照cnoCcreditTinyint學(xué)分表3.4sc表(學(xué)生選課成績(jī)表)字段名稱類型允許空值主鍵說明SnoChar(8)NOTNULL是學(xué)號(hào),參照Student,與Cno組成主鍵CNOChar(4)NOTNULL是課程號(hào),參照CoursegradeNumeric(4,1)NULL成績(jī)四.實(shí)驗(yàn)步驟打開查詢窗口,輸入創(chuàng)建基本表的sql語句。student表:createtablestudent(snochar(8)NOTNULLprimarykey,--學(xué)號(hào)snamevarchar(10)NOTNULL,--姓名sexchar(2)check(sex='女'orsex='男'),--性別:男、女clsnochar(6),--班級(jí)編號(hào),(外鍵)參照表classforeignkey(clsno)referencesclass(clsno),sadrrvarchar(20),--住址sagenumeric(3,0),--年齡,大于,但小于歲heightdecimal(4,2)--身高)class表createtableclass(clsnochar(6)NOTNULLprimarykey,--班號(hào)clsnamevarchar(16)NOTNULL,--班名directorvarchar(10)NULL,--輔導(dǎo)員specialtyvarchar(30)NULL--專業(yè))course表createtablecourse(cnochar(4)NOTNULLprimarykey,--主鍵cnamevarchar(16)NOTNULL,--課程名稱cpnochar(4),--先修課程的課程號(hào)(外鍵),參照cnoccredittinyint--學(xué)分)sc表createtablesc(snochar(8)NOTNULL,--學(xué)號(hào),參照Student,與Cno組成主鍵cnochar(4)NOTNULL,--課程號(hào),參照Coursegradenumeric(4,1)NULL,--成績(jī)primarykey(sno,cno),foreignkey(sno)referencesstudent(sno),foreignkey(cno)referencescourse(cno),)五、實(shí)驗(yàn)總結(jié)通過本次試驗(yàn),基本掌握了用sql語言創(chuàng)建數(shù)據(jù)庫表的基本方法。實(shí)驗(yàn)四數(shù)據(jù)更新操作一.實(shí)驗(yàn)?zāi)康?.熟悉使用UPDATE/INSERT/DELETE語句進(jìn)行表操作;2.能將這些更新操作應(yīng)用于實(shí)際操作中去;二.實(shí)驗(yàn)要求完成下面的實(shí)驗(yàn)內(nèi)容,并提交實(shí)驗(yàn)報(bào)告;在實(shí)驗(yàn)報(bào)告中附上相應(yīng)的代碼;三.實(shí)驗(yàn)內(nèi)容(1)向表(Student)中插入數(shù)據(jù)SnoSnameSsexClsNOSaddrSageHeight20090101王軍男CS01下關(guān)40#201.7620090102李杰男CS01江邊路96#221.7220090306王彤女MT04中央路94#191.6519940107吳杪女PH08蓮化小區(qū)74#181.60插入數(shù)據(jù)之后使用命令:Select*fromStudent;檢查插入數(shù)據(jù)的正確性insertintostudentvalues('20090101','王軍','男','cs01','下關(guān)#','20','1.76');insertintostudentvalues('20090102','李杰','男','cs01','江邊路#','22','1.72');insertintostudentvalues('20090306','王彤','女','MT04','中央路#','19','1.65');insertintostudentvalues('19940107','吳杪','女','PH08','蓮化小區(qū)#','18','1.60');select*fromstudent;(2)向表(Class)中插入數(shù)據(jù)ClsNOClsNameDirectorSpecialtyCS01計(jì)算機(jī)一班王寧計(jì)算機(jī)應(yīng)用CS02計(jì)算機(jī)二班王寧計(jì)算機(jī)應(yīng)用MT04數(shù)學(xué)四班陳晨數(shù)學(xué)PH08物理八班葛格物理插入數(shù)據(jù)之后使用命令:Select*fromClass;檢查插入數(shù)據(jù)的正確性insertintoclassvalues('cs01','計(jì)算機(jī)一班','王寧','計(jì)算機(jī)應(yīng)用');insertintoclassvalues('cs02','計(jì)算機(jī)二班','王寧','計(jì)算機(jī)應(yīng)用');insertintoclassvalues('MT04','數(shù)學(xué)四班','陳晨','數(shù)學(xué)');insertintoclassvalues('PH08','物理八班','葛格','物理');select*fromclass;(3)向表(Course)中插入數(shù)據(jù)CnoCnameCpnoCredit0001高等數(shù)學(xué)Null60003計(jì)算機(jī)基礎(chǔ)000130007物理00014插入數(shù)據(jù)之后使用命令:Select*fromCourse;檢查插入數(shù)據(jù)的正確性insertintocoursevalues('0001','高等數(shù)學(xué)',NULL,'6');insertintocoursevalues('0003','計(jì)算機(jī)基礎(chǔ)','0001','3');insertintocoursevalues('0007','物理','0001','4');select*fromcourse;(4)向表(SC)中插入數(shù)據(jù)SNOCNOGrade20090101000190200901010007862009010200018720090102000376200903060001872009030600039319940106000785insertintoscvalues('20090101','0001','90');insertintoscvalues('20090101','0007','86');insertintoscvalues('20090102','0001','87');insertintoscvalues('20090102','0003','76');insertintoscvalues('20090306','0001','87');insertintoscvalues('20090306','0003','93');insertintoscvalues('19940107','0007','85');select*fromsc;(5).對(duì)于student表,將所有班級(jí)號(hào)為‘CS01’的,并且年齡小于20歲的學(xué)生的班級(jí)號(hào)改為‘CS02’。updatestudentsetclsno='cs02'whereclsno='cs01'andsage<20;select*fromstudent;(6).對(duì)于student表,刪掉所有年齡大于20歲,并且專業(yè)號(hào)為‘CS02’的學(xué)生的記錄。對(duì)于student表,插入一條新記錄,它的具體信息為,學(xué)號(hào):20071101、姓名:張三、性別:男、年齡:19、班級(jí)編號(hào):‘CS01’。由于表student數(shù)據(jù)較少,因而添加數(shù)據(jù),用來滿足要求:insertintostudentvalues('20102702','黃磊','男','cs01','下關(guān)#','18','1.78');insertintostudentvalues('20102712','李超','男','cs01','江邊路#','19','1.72');insertintostudentvalues('20102708','陳明飛','男','cs02','中央路#','22','1.65');deletefromstudentwheresage>20andclsno='cs02';insertintostudent(sno,sname,ssex,sage,clsno)values('20071101','張三','男','19','cs01')(7).對(duì)于student表,將年齡最小的學(xué)生的家庭地址去掉。updatestudentsetsadrr=nullwheresage=(selectMIN(s.sage)fromstudents);(8).對(duì)于student表,將平均年齡最小的一個(gè)班級(jí)編號(hào)改為‘GL01’由于給定的class表中數(shù)據(jù)不足,因而添加數(shù)據(jù)以用來滿足要求。insertintoclassvalues('gl01','計(jì)算機(jī)班','王','計(jì)算應(yīng)用');updatestudentsetstudent.clsno='gl01'wherestudent.clsno=(selectt1.clsnofrom(selects1.clsno,avg(s1.sage)afromstudents1groupbys1.clsno)t1,(selectMIN(t2.a1)mfrom(selects.clsno,avg(s.sage)a1fromstudentsgroupbys.clsno)t2)t3wheret1.a=t3.m);五、實(shí)驗(yàn)總結(jié)通過本次試驗(yàn),懂得了用sql語言來插入數(shù)據(jù),以及一些簡(jiǎn)單的數(shù)據(jù)更新操作,也對(duì)sqlserver有了更多的了解。在實(shí)驗(yàn)的過程中,也遇到許多的問題,并在實(shí)驗(yàn)的過程中解決。比方說,在往表中插入數(shù)據(jù)時(shí),先插的student表的數(shù)據(jù),結(jié)果就發(fā)現(xiàn)出現(xiàn)錯(cuò)誤,原來是student表中的clsno是class表的外碼,需要先插入class表,student表內(nèi)容才能插進(jìn)去;還有在數(shù)據(jù)更新的過程中,比方說“對(duì)于student表,將平均年齡最小的一個(gè)班級(jí)編號(hào)改為‘GL01’”,由于class表中沒有班號(hào)位“gl01”,因而出錯(cuò),這是沒有違反完整性約束條件,在插入一組班號(hào)為“gl01”時(shí),該更新操作就能正確的運(yùn)行。實(shí)驗(yàn)五創(chuàng)建和刪除索引一.實(shí)驗(yàn)?zāi)康牧私馑饕念愋秃蛻?yīng)用。學(xué)會(huì)用SQL語句對(duì)表創(chuàng)建和刪除索引二.實(shí)驗(yàn)要求1.了解索引類型并比較各類索引的不同之處2.完成索引的創(chuàng)建和刪除,并提交實(shí)驗(yàn)報(bào)告。三.實(shí)驗(yàn)內(nèi)容1.用SQL語句分別建立以下索引(1)在student表的Sname列上建立普通降序索引Stusname。(2)在course表的Cname列上建立唯一索引Coucname。(3)在sc表的Sno(升序),Cno(升序)和grade(降序)三列上建立一個(gè)普通索引SCno。2.用SQL語句刪除索引Student表的Stusname索引。四、實(shí)驗(yàn)步驟1.用SQL語句分別建立以下索引(1)在student表的sname列上建立普通降序索引Stusname。createindexstusnameonstudent(snamedesc);(2)在course表的cname列上建立唯一索引Coucname。createuniqueindexcoucnameoncourse(cname);(3)在sc表的Sno(升序),Cno(升序)和grade(降序)三列上建立一個(gè)普通索引SCno。createindexscnoonsc(sno,cno,gradedesc)2.刪除索引刪除Student表的Stusname索引。dropindexstusnameonstudent;五、實(shí)驗(yàn)總結(jié)通過本次試驗(yàn),學(xué)會(huì)了用sql語言為基本表創(chuàng)建索引和刪除索引。實(shí)驗(yàn)六數(shù)據(jù)查詢實(shí)驗(yàn)?zāi)康?.觀察查詢結(jié)果,體會(huì)SELECT語句實(shí)際應(yīng)用;2.要求學(xué)生能夠在查詢分析器中使用SELECT語句進(jìn)行簡(jiǎn)單查詢。3.熟練掌握簡(jiǎn)單表的數(shù)據(jù)查詢、數(shù)據(jù)排序和數(shù)據(jù)連接查詢的操作方法。實(shí)驗(yàn)要求1.完成簡(jiǎn)單查詢和連接查詢操作,并驗(yàn)收實(shí)驗(yàn)結(jié)果提交實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)內(nèi)容所有的查詢?nèi)坑肨ransact-SQL語句實(shí)現(xiàn)。此部分查詢包括投影、選擇條件表達(dá)、數(shù)據(jù)排序、使用臨時(shí)表等。對(duì)EDUC數(shù)據(jù)庫實(shí)現(xiàn)以下查詢:查詢計(jì)算機(jī)應(yīng)用專業(yè)的學(xué)生學(xué)號(hào)和姓名;查詢選修了課程的學(xué)生學(xué)號(hào);查詢選修課程0001且成績(jī)?cè)?0-90之間的學(xué)生學(xué)號(hào)和成績(jī),并將成績(jī)乘以系數(shù)0.75輸出;查詢計(jì)算機(jī)應(yīng)用和數(shù)學(xué)專業(yè)的姓“張”的學(xué)生的信息。查詢“0001”課程的成績(jī)高于張三的學(xué)生學(xué)號(hào)和成績(jī);查詢沒有選修“0002”課程的學(xué)生姓名;實(shí)驗(yàn)步驟打開查詢窗口,輸入SQL查詢語句,點(diǎn)擊“執(zhí)行”按鈕,查看查詢結(jié)果。查詢計(jì)算機(jī)應(yīng)用專業(yè)的學(xué)生學(xué)號(hào)和姓名;selectsno,snamefromstudent,classwherestudent.clsno=class.clsnoandclass.specialty='計(jì)算機(jī)應(yīng)用';查詢選修了課程的學(xué)生學(xué)號(hào);selectsnofromscwheresnoisnotnull;查詢選修課程0001且成績(jī)?cè)?0-90之間的學(xué)生學(xué)號(hào)和成績(jī),并將成績(jī)乘以系數(shù)0.75輸出;selectsno,grade*0.75fromscwherecno='0001'andgradebetween80and90;查詢計(jì)算機(jī)應(yīng)用和數(shù)學(xué)專業(yè)的姓“張”的學(xué)生的信息。select*fromstudent,classwheresnamelike'張__'andstudent.clsno=class.clsnoand(specialty='計(jì)算機(jī)應(yīng)用'orspecialty='數(shù)學(xué)');查詢“0001”課程的成績(jī)高于張三的學(xué)生學(xué)號(hào)和成績(jī);selectstudent.sno,gradefromstudent,scwherecno='0001'andstudent.sno=sc.snoandgradein(selectgradefromstudent,scwheresname='王軍'andstudent.sno=sc.sno)查詢沒有選修“0002”課程的學(xué)生姓名;selectdistinctsnamefromstudent,scwherestudent.sno=sc.snoandcno!='0002五、實(shí)驗(yàn)總結(jié)通過本次試驗(yàn),復(fù)習(xí)用sql語言處理數(shù)據(jù)查詢的一些方法,更好的掌握數(shù)據(jù)的查詢。實(shí)驗(yàn)七使用聚集函數(shù)的SELECT語句實(shí)驗(yàn)?zāi)康?.熟練掌握數(shù)據(jù)查詢中的分組、統(tǒng)計(jì)、計(jì)算和組合的操作方法。2.進(jìn)一步掌握SQLServer查詢分析器的使用,加深對(duì)SQL語言的嵌套查詢語句的理解。實(shí)驗(yàn)要求1.在實(shí)驗(yàn)之前做好準(zhǔn)備。2.完成實(shí)驗(yàn),并驗(yàn)收實(shí)驗(yàn)結(jié)果提交實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)內(nèi)容在數(shù)據(jù)庫EDUC中用SQL語句實(shí)現(xiàn)如下查詢:1)求學(xué)生的總?cè)藬?shù)。2)求選修了課程的學(xué)生人數(shù)。3)求課程的課程號(hào)和選修該課程的人數(shù)。4)求選修課程超過2門課的學(xué)生學(xué)號(hào)。四.實(shí)驗(yàn)步驟1)求學(xué)生的總?cè)藬?shù).selectCOUNT(*)fromstudent;2)求選修了課程的學(xué)生人數(shù)。selectCOUNT(distinctsno)fromsc;求課程的課程號(hào)和選修該課程的人數(shù)。selectCOUNT(cno)fromscgroupbycno;4)求選修課程超過2門課的學(xué)生學(xué)號(hào)。selectsnofromscgroupbysnohavingCOUNT(*)>1;實(shí)驗(yàn)總結(jié)通過本次試驗(yàn)對(duì)聚集函數(shù)的SELECT語句使用更加熟悉。實(shí)驗(yàn)八視圖的定義與使用實(shí)驗(yàn)?zāi)康氖煜ず驼莆諏?duì)數(shù)據(jù)表中視圖的查詢操作和SQL命令的使用;熟悉和掌握對(duì)數(shù)據(jù)表中視圖的更新操作和SQL命令的使用,并注意視圖更新與基本表更新的區(qū)別與聯(lián)系;3.學(xué)習(xí)靈活熟練的進(jìn)行視圖的操作,認(rèn)識(shí)視圖的作用。二.實(shí)驗(yàn)要求在實(shí)驗(yàn)開始之前做好準(zhǔn)備工作。實(shí)驗(yàn)之后提交實(shí)驗(yàn)報(bào)告,思考視圖和基本表的區(qū)別三.實(shí)驗(yàn)內(nèi)容1.定義視圖在EDUC數(shù)據(jù)庫中,已Student、Course和SC表為基礎(chǔ)完成一下視圖定義:將Student,Course和SC表中學(xué)生的學(xué)號(hào),姓名,課程號(hào),課程名,成績(jī)定義為視圖V_SC_G;定義一個(gè)反映學(xué)生出生年份的視圖V_YEAR;將各位學(xué)生選修課程的門數(shù)及平均成績(jī)定義為視圖V_AVG_S_G;將各門課程的選修人數(shù)及平均成績(jī)定義為視圖V_AVG_C_G。2.使用視圖查詢以上所建的視圖結(jié)果。查詢平均成績(jī)?yōu)?0分及以上的學(xué)生學(xué)號(hào)、姓名和成績(jī);查詢課程成績(jī)大于平均成績(jī)的學(xué)生學(xué)號(hào)、課程號(hào)、成績(jī)和平均成績(jī);查詢1994年出生的學(xué)生學(xué)號(hào)和姓名。實(shí)驗(yàn)步驟1.定義視圖1)將Student,Course和SC表中學(xué)生的學(xué)號(hào),姓名,課程號(hào),課程名,成績(jī)定義為視圖V_SC_G.createviewv_sc_gasselectstudent.sno,sname,o,cname,gradefromsc,student,coursewheresc.sno=o=o;select*fromv_sc_g;dropviewv_sc_g;定義一個(gè)反映學(xué)生出生年份的視圖V_YEAR.createviewv_yearasselectsno,sname,2013-sageagefromstudent;select*fromv_year;3)將各位學(xué)生選修課程的門數(shù)及平均成績(jī)定義為視圖V_AVG_S_G.createviewv_avg_s_gasselectstudent.sno,COUNT(cno)cnum,avg(grade)avg_agefromsc,studentwheresc.sno=student.snogroupbystudent.sno;4)將各門課程的選修人數(shù)及平均成績(jī)定義為視圖V_AVG_C_G。createviewv_avg_c_gasselectcno,count(*)ascnum,avg(grade)avg_gradefromscgroupbycno;select*fromv_avg_c_g;2.使用視圖查詢以上所建的視圖結(jié)果。查詢平均成績(jī)?yōu)?0分及以上的學(xué)生學(xué)號(hào)、姓名和成績(jī);selectstudent.sno,sname,avg_agefromv_avg_s_gs,studentwheres.sno=student.snoands.avg_age>='90';.查詢科目成績(jī)大于平均成績(jī)的學(xué)生學(xué)號(hào)、課程號(hào)、成績(jī)和平均成績(jī);selectstudent.sno,sname,cno,grade,avg_agefromsca,student,v_avg_s_gwherea.sno=student.snoandStudent.sno=v_avg_s_g.snoandnotexists(select*fromscb,v_avg_c_gwherea.Grade<v_avg_c_g.avg_gradeanda.Cno=b.Cno)查詢1994年出生的學(xué)生學(xué)號(hào)和姓名。selectsname,snofromv_yearwhereage='1994';實(shí)驗(yàn)總結(jié)視圖的使用很簡(jiǎn)單,有時(shí)使查詢變得更加簡(jiǎn)單,和表的使用很像。視圖就是一種很特殊的表。實(shí)驗(yàn)九觸發(fā)器的創(chuàng)建與使用一、實(shí)驗(yàn)?zāi)康谋緦?shí)驗(yàn)的目的是使學(xué)生進(jìn)一步掌握SQLServer觸發(fā)器的創(chuàng)建及使用方法,加深SQL觸發(fā)器的理解。通過對(duì)數(shù)據(jù)的更新操作體會(huì)其觸發(fā)器的作用。二、實(shí)驗(yàn)要求1.在實(shí)驗(yàn)之前做好準(zhǔn)備2.試驗(yàn)之后提交實(shí)驗(yàn)報(bào)告,并驗(yàn)收實(shí)驗(yàn)結(jié)果三、實(shí)驗(yàn)內(nèi)容1.在班級(jí)表class中增加班級(jí)人數(shù)(c_total)字段2.創(chuàng)建INSERT觸發(fā)器t_inst_stu3.創(chuàng)建DELETE觸發(fā)器t_dele_stu:在學(xué)生表(student)中刪除一名學(xué)生,若其班級(jí)編號(hào)非空,則將班級(jí)表(class)中相應(yīng)班級(jí)的人數(shù)(c_total)自動(dòng)減1。4.創(chuàng)建UPDATE觸發(fā)器t_update_stu。5.體會(huì)觸發(fā)器的作用。四、實(shí)驗(yàn)步驟1.在班級(jí)表class中增加班級(jí)人數(shù)(c_total)字段,默認(rèn)值是0;并手動(dòng)統(tǒng)計(jì)人數(shù)作為該字段的值;altertableclassaddc_totalintNOTNULLDEFAULT0--altertableclassdropcolumnc_total--刪除一個(gè)字段2.創(chuàng)建INSERT觸發(fā)器t_inst_stu:在學(xué)生表(student)中每新增一名學(xué)生,若其班級(jí)編號(hào)非空,則將班級(jí)表(class)中相應(yīng)班級(jí)的人數(shù)(c_total)自動(dòng)加1。createtrigger[dbo].[t_inst_stu]on[dbo].[student]forinsertasbegindeclare@clschar(6)select@cls=ClsNofrominsertedifexists(select*fromstudentwherestudent.ClsNo=@clsandstudent.ClsNoisnotnull)print'開始查找并將班級(jí)人數(shù)加1……..'updateclasssetc_total=c_total+1whereClsNo=@clsprint'班級(jí)人數(shù)已增加?。。?!'End3.創(chuàng)建DELETE觸發(fā)器t_dele_stu:在學(xué)生表(student)中刪除一名學(xué)生,若其班級(jí)編號(hào)非空,則將班級(jí)表(class)中相應(yīng)班級(jí)的人數(shù)(c_total)自動(dòng)減1。createtrigger[dbo].t_dele_stuon[dbo].studentfordeleteasbegindeclare@clschar(6)select@cls=clsnofromdeletedifexists(select*fromstudentwherestudent.clsno=@clsandstudent.clsnoisnotnull)print'開始查找并將班級(jí)人數(shù)減……..'updateclasssetc_total=c_total-1whereclass.clsno=@clsprint'班級(jí)人數(shù)已減少!?。?!'End4.創(chuàng)建UPDATE觸發(fā)器t_update_stu:當(dāng)某學(xué)生所在班號(hào)發(fā)生變化時(shí)(即調(diào)到另一班級(jí)后),將其原先所在班級(jí)的人數(shù)(c_total)減1,將新調(diào)入的班級(jí)班級(jí)的人數(shù)(c_total)加1。createtriggert_update_stuonstudentforupdateasbegindeclare@oldClsNOchar(8),@newClsNOchar(8);select@oldClsNOfromdeleted;select@newClsNOfrominserted;if@oldClsNOisnotnullupdateclasssetc_total=c_total+1whereClsNO=@oldClsNO;if@newClsNOisnotnullupdateclasssetc_total=c_total-1whereClsNO=@newClsNO;End5.觸發(fā)器的作用:1)查看班級(jí)表(class)2)對(duì)學(xué)生表(student)分別插入(INSERT)、刪除(DELETE)和修改(UPDATE)元組insertintostudentvalues('20102680','古鑫','男','cs01','合工大','20','1.70');deletefromstudentwheresname='古鑫';3)再次查看班級(jí)表(class),檢查其數(shù)據(jù)的變化情況,體會(huì)觸發(fā)器的作用。select*fromclass;
五.實(shí)驗(yàn)總結(jié)對(duì)觸發(fā)器的創(chuàng)建把握的不是太好,還是需要多加鍛煉。實(shí)驗(yàn)十存儲(chǔ)過程的創(chuàng)建與使用一、實(shí)驗(yàn)?zāi)康谋緦?shí)驗(yàn)的目的是使學(xué)生進(jìn)一步掌握SQLServer存儲(chǔ)過程的創(chuàng)建及使用方法,加深對(duì)SQL存儲(chǔ)過程的理解。通過對(duì)存儲(chǔ)過程的調(diào)用體會(huì)其作用。二、實(shí)驗(yàn)要求1.在實(shí)驗(yàn)之前做好準(zhǔn)備2.試驗(yàn)之后提交實(shí)驗(yàn)報(bào)告,并驗(yàn)收實(shí)驗(yàn)結(jié)果三、實(shí)驗(yàn)內(nèi)容1、創(chuàng)建一個(gè)不帶參數(shù)的存儲(chǔ)過程p_stu_info1,實(shí)現(xiàn)對(duì)滿足要求的學(xué)生基本信息的查詢。2、創(chuàng)建一個(gè)帶有參數(shù)的存儲(chǔ)過程p_stu_info2,實(shí)現(xiàn)對(duì)滿足要求的學(xué)生基本信息的查詢。3、創(chuàng)建一個(gè)存儲(chǔ)過程p_stu_info3,根據(jù)輸入的學(xué)號(hào),查詢某學(xué)生的基本信息。4、創(chuàng)建一個(gè)存儲(chǔ)過程p_stu_grade,根據(jù)輸入的學(xué)號(hào),返回其選課及其成績(jī)。5.使用SQL語句分別執(zhí)行p_stu_info1、p_stu_info2、p_stu_info3和p_stu_grade,并將結(jié)果顯示出來。四、實(shí)驗(yàn)步驟1.建立不帶參數(shù)的存儲(chǔ)過程p_stu_info1(選擇所有年齡<21歲的男同學(xué))。createprocedurep_stu_infolasbeginselectdistinct*fr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年舟山市志愿服務(wù)聯(lián)合會(huì)公開招聘工作人員的備考題庫完整答案詳解
- 公共交通乘客信息管理制度
- 伙房管理制度
- 2026年隆昌市住房征收和保障服務(wù)中心臨聘人員招聘?jìng)淇碱}庫帶答案詳解
- 中國科學(xué)院亞熱帶農(nóng)業(yè)生態(tài)研究所2026年特別研究助理(博士后)招聘?jìng)淇碱}庫及完整答案詳解1套
- 天津中醫(yī)藥大學(xué)第一附屬醫(yī)院招聘20人備考題庫及1套完整答案詳解
- 中共福鼎市委黨校關(guān)于2026年公開招聘緊缺急需人才有關(guān)事項(xiàng)的備考題庫及完整答案詳解一套
- 2026年耒陽市選聘一村一輔警18人備考題庫參考答案詳解
- 2026年綿陽市涪城區(qū)吳家中心衛(wèi)生院招聘?jìng)淇碱}庫及完整答案詳解1套
- 養(yǎng)老院入住老人健康監(jiān)測(cè)制度
- 2026年廣西出版?zhèn)髅郊瘓F(tuán)有限公司招聘(98人)考試備考題庫附答案
- 設(shè)備技術(shù)員轉(zhuǎn)正述職報(bào)告
- 2026年數(shù)據(jù)管理局考試題庫及實(shí)戰(zhàn)解答
- 2025年上海師范大學(xué)馬克思主義基本原理概論期末考試筆試真題匯編
- 智啟萬物:全球AI應(yīng)用平臺(tái)市場(chǎng)全景圖與趨勢(shì)洞察報(bào)告
- 2025年高職植物保護(hù)(植物檢疫技術(shù))試題及答案
- 2026年中國科學(xué)院心理研究所國民心理健康評(píng)估發(fā)展中心招聘?jìng)淇碱}庫及答案詳解(新)
- 藥物相互作用與不良反應(yīng)預(yù)防解析講座
- 江蘇省2024年普通高中學(xué)業(yè)水平合格性考試數(shù)學(xué)試卷+答案
- 文物建筑勘查設(shè)計(jì)取費(fèi)標(biāo)準(zhǔn)(2020年版)
- MSOP(測(cè)量標(biāo)準(zhǔn)作業(yè)規(guī)范)測(cè)量SOP
評(píng)論
0/150
提交評(píng)論