2014廣工數(shù)據(jù)庫實(shí)驗(yàn)報告_第1頁
2014廣工數(shù)據(jù)庫實(shí)驗(yàn)報告_第2頁
2014廣工數(shù)據(jù)庫實(shí)驗(yàn)報告_第3頁
2014廣工數(shù)據(jù)庫實(shí)驗(yàn)報告_第4頁
2014廣工數(shù)據(jù)庫實(shí)驗(yàn)報告_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)庫原理實(shí)驗(yàn)報告學(xué) 院 計算機(jī)學(xué)院 專 業(yè) 計算機(jī)科學(xué)與技術(shù) 班 級 學(xué) 號 姓 名 指導(dǎo)教師 胡欣如 2014年12月24日實(shí)驗(yàn)_一_題目_ 數(shù)據(jù)庫及基本表的建立 實(shí)驗(yàn)_二_題目_ 查詢數(shù)據(jù)庫 _ 實(shí)驗(yàn)_三_題目_創(chuàng)建和使用視圖、索引、存儲過程 實(shí)驗(yàn)_四_題目_ 小型數(shù)據(jù)庫規(guī)劃設(shè)計_ 實(shí)驗(yàn)平臺:MS SQL sever 2005實(shí)驗(yàn)一 數(shù)據(jù)庫及基本表的建立一、實(shí)驗(yàn)?zāi)康?、掌握SQL SERVER的查詢分析器和企業(yè)管理器的使用;2、掌握創(chuàng)建數(shù)據(jù)庫和表的操作;二、實(shí)驗(yàn)內(nèi)容和要求1、分別使用SQL語句、企業(yè)管理器(Enterprise Manager)創(chuàng)建數(shù)據(jù)庫;2、使用SQL語句、企業(yè)管理器(

2、Enterprise Manager)創(chuàng)建數(shù)據(jù)庫表;三、實(shí)驗(yàn)主要儀器設(shè)備和材料1計算機(jī)及操作系統(tǒng):PC機(jī),Windows 2000/xp;2數(shù)據(jù)庫管理系統(tǒng):SQL sever 2000/2005;四、實(shí)驗(yàn)方法、步驟及結(jié)果測試創(chuàng)建一個教學(xué)管理數(shù)據(jù)庫SC,其描述的信息有:學(xué)生信息、課程信息、教師信息、學(xué)生選課成績、授課信息、班級信息、系部信息、專業(yè)信息。創(chuàng)建:student表(學(xué)生信息表)、course表(課程信息表)、teacher表(教師信息表)、student _course表(學(xué)生選課成績表)、teacher_course表(教師上課課表)等。題目1、創(chuàng)建數(shù)據(jù)庫:1、創(chuàng)建數(shù)據(jù)庫:確定數(shù)據(jù)庫

3、名稱;數(shù)據(jù)庫用于學(xué)生管理,命名為SC確定數(shù)據(jù)庫的位置;要求:數(shù)據(jù)文件和日志文件分別存儲在E盤自己的目錄下。確定數(shù)據(jù)庫的大??;根據(jù)實(shí)際的數(shù)據(jù)量確定數(shù)據(jù)文件的初始大小為30MB,日志文件的初始大小為3MB。確定數(shù)據(jù)庫的增長;根據(jù)實(shí)際情況,確定數(shù)據(jù)文件按20%增長,日志文件按1MB增長。實(shí)現(xiàn)代碼及截圖:創(chuàng)建數(shù)據(jù)庫SQL語言CREATE DATABASE SC ON(NAME = NSC_Data,FILENAME = NG:/SC_Data.MDF,SIZE = 30,FILEGROWTH = 20%)LOG ON (NAME = NSC_Log,FILENAME = NG:/SC_Log.LDF,

4、SIZE = 3,FILEGROWTH = 1)實(shí)驗(yàn)結(jié)果截圖顯示題目2、創(chuàng)建基本表創(chuàng)建各表的實(shí)現(xiàn)代碼及截圖:查詢分析器執(zhí)行情況:SQL語句及執(zhí)行結(jié)果顯示創(chuàng)建student表CREATE TABLE student(s_no char(8)primary key,sname char(8)not null,sex char(2),sbirthdaysmalldatetime,dno char(6),spno char(8),class_no char(4),constraint fk_student_dno foreign key(dno) referencesdepartment(dno),c

5、onstraint fk_student_spnoforeign key(spno) referencesspeciality(spno)創(chuàng)建course表CREATE TABLE course(cno char(10) primary key,cname char(20) not null,spno char(8) ,ctno tinyint ,lecture tinyint ,experiment tinyint ,semester tinyint ,credit tinyint ,constraint fk_course_spno foreign key(spno) references

6、 speciality(spno)創(chuàng)建student_course表CREATE TABLE student_course(s_nochar(8) ,tcidsmallint,scoretinyint ,constraint pk_student_course primary key(s_no,tcid),constraint fk_student_course_s_no foreign key(s_no)references student(s_no) on delete cascade)創(chuàng)建teacher表CREATE TABLE teacher(t_no char(8) primary

7、key,t_name char(8) not null,t_sex char(2),t_birthday smalldatetime,dno char(6) ,tech_title char(10),constraint fk_teacher_dnoforeign key(dno) references department(dno)創(chuàng)建department表CREATE TABLE department (dno char(6) primary key,dept_name char(20) not null,header char(8)創(chuàng)建speciality表CREATE TABLE sp

8、eciality(spno char(8) primary key,dno char(6) not null ,spname char(20) not null,constraint fk_speciality_dno foreign key(dno) references department(dno)7.創(chuàng)建teacher_courseCREATE TABLE teacher_course(tcid smallint primary key,t_no char(8) ,spno char(8) ,class_no char(4) ,cno char(10),semester char(6)

9、 not null,shcoolyear char(10),constraint fk_teacher_course_t_no foreign key(t_no) references teacher(t_no),constraint fk_teacher_course_spno foreign key(spno) references speciality(spno),constraint fk_teacher_course_cno foreign key(cno) references course(cno)創(chuàng)建class表CREATE TABLE class(spno char(8) ,

10、class_no char(4) ,header char(8) , constraint pk_class primary key (spno,class_no),constraint fk_class_spno foreign key(spno) references speciality(spno)實(shí)驗(yàn)結(jié)果截圖顯示題目3、查看各數(shù)據(jù)表之間的關(guān)系,生成數(shù)據(jù)庫關(guān)系圖。題目4、利用查詢分析器修改上述各表。(1)、用INSERT語句向各個表中插入數(shù)據(jù)錄入5 條記錄。錄入時注意體會外鍵約束。實(shí)現(xiàn)代碼及截圖:查詢分析器執(zhí)行情況:SQL語句及執(zhí)行結(jié)果顯示插入department表數(shù)據(jù)INSERT IN

11、TOdepartment(dno,dept_name,header) values(xy01,計算機(jī)學(xué)院,張小輝)INSERT INTO department(dno,dept_name,header) values(xy02,機(jī)電學(xué)院,劉小華)INSERT INTO department(dno,dept_name,header)values(xy03,信息工程學(xué)院,梁小偉)INSERT INTO department(dno,dept_name,header) values(xy04,外國語學(xué)院,彭小彥)INSERT INTO department(dno,dept_name,header

12、) values(xy05,應(yīng)用數(shù)學(xué)學(xué)院,吳小祖)插入speciality表數(shù)據(jù)INSERT INTO speciality(spno,dno,spname)values(zy01001,xy01,網(wǎng)絡(luò)工程)INSERT INTO speciality(spno,dno,spname) values(zy01002,xy01,軟件工程)INSERT INTO speciality(spno,dno,spname) values(zy01003,xy01,計算機(jī)科學(xué)與技術(shù))INSERT INTO speciality(spno,dno,spname) values(zy03001,xy03,通信

13、工程)INSERT INTO speciality(spno,dno,spname) values(zy04001,xy04,國際商務(wù))插入class表數(shù)據(jù)INSERT INTO class(spno,class_no,header) values(zy01001,1001,黃小勃)INSERT INTO class(spno,class_no,header) values(zy01001,1002,周小倫)INSERT INTO class(spno,class_no,header) values(zy01002,1001,王小宏)INSERT INTO class(spno,class_n

14、o,header) values(zy03001,1001,陳小迅)INSERT INTO class(spno,class_no,header) values(zy04001,1001,蕭小騰)插入student表數(shù)據(jù)INSERT INTO student(s_no,sname,sex,sbirthday,dno,spno,class_no) values(3002001,王子昂,男,1994-08-04,xy01,zy01001,1001)INSERT INTO student(s_no,sname,sex,sbirthday,dno,spno,class_no) values(30020

15、02,成小龍,男,1994-11-08,xy01,zy01001,1002)INSERT INTO student(s_no,sname,sex,sbirthday,dno,spno,class_no) values(3002003,樸小惠,女,1995-08-16,xy01,zy01002,1001)INSERT INTO student(s_no,sname,sex,sbirthday,dno,spno,class_no) values(3002004,李小鎬,男,1995-12-12,xy03,zy03001,1001)INSERT INTO student(s_no,sname,sex

16、,sbirthday,dno,spno,class_no) values(3002005,金小賢,女,1993-06-10,xy04,zy04001,1001)插入course表數(shù)據(jù)INSERT INTO course(cno,cname,spno,ctno,lecture,experiment,semester,credit) values(kc001,數(shù)據(jù)結(jié)構(gòu),zy01001,10,45,10,1,4)INSERT INTO course(cno,cname,spno,ctno,lecture,experiment,semester,credit) values(kc002,數(shù)據(jù)庫原理,z

17、y01001,14,48,12,2,4)INSERT INTO course(cno,cname,spno,ctno,lecture,experiment,semester,credit) values(kc003,計算機(jī)組成原理,zy01001,16,36,8,2,3)INSERT INTO course(cno,cname,spno,ctno,lecture,experiment,semester,credit) values(kc009,信號與系統(tǒng),zy03001,15,40,12,1,5)INSERT INTO course(cno,cname,spno,ctno,lecture,ex

18、periment,semester,credit) values(kc015,商務(wù)翻譯,zy04001,18,28,10,2,2)插入student_course表數(shù)據(jù)INSERT INTO student_course(s_no,tcid,score) values(3002001,101 , 80)INSERT INTO student_course(s_no,tcid,score) values(3002002,102 , 90)INSERT INTO student_course(s_no,tcid,score) values(3002003,101 , 85)INSERT INTO

19、student_course(s_no,tcid,score) values(3002004,102 , 75)INSERT INTO student_course(s_no,tcid,score) values(3002005,101 , 88)7.插入teacher表數(shù)據(jù)INSERT INTO teacher(t_no,t_name,t_sex,t_birthday,dno,tech_title) values(2002001,郭小潔,男,1976-05-10,xy01,教授)INSERT INTO teacher(t_no,t_name,t_sex,t_birthday,dno,tech

20、_title) values(2002002,楊小米,男,1968-11-17,xy01,副教授)INSERT INTO teacher(t_no,t_name,t_sex,t_birthday,dno,tech_title) values(2002003,柯小騰,男,1965-08-15,xy01,博士)INSERT INTO teacher(t_no,t_name,t_sex,t_birthday,dno,tech_title) values(2002004,余小樂,女,1978-10-10,xy02,副教授)INSERT INTO teacher(t_no,t_name,t_sex,t_

21、birthday,dno,tech_title) values(2002005,鄭小紅,女,1990-04-18,xy03,講師)8.插入teacher_course表數(shù)據(jù)INSERT INTO teacher_course(tcid,t_no,spno,class_no,cno,semester,shcoolyear) values(101,2002001,zy01001,1001,kc001,5,3)INSERT INTO teacher_course(tcid,t_no,spno,class_no,cno,semester,shcoolyear) values(102,2002001,z

22、y01001,1001,kc002,3,2)INSERT INTO teacher_course(tcid,t_no,spno,class_no,cno,semester,shcoolyear) values(103,2002002,zy01002,1001,kc002,3,2)INSERT INTO teacher_course(tcid,t_no,spno,class_no,cno,semester,shcoolyear) values(104,2002003,zy01003,1002,kc003,6,3)INSERT INTO teacher_course(tcid,t_no,spno,

23、class_no,cno,semester,shcoolyear) values(105,2002004,zy03001,1001,kc009,2,1)實(shí)驗(yàn)結(jié)果截圖顯示(插入數(shù)據(jù)的表格)共8組(共8個表)(2)、用UPDATE語句更改student表中數(shù)據(jù);實(shí)現(xiàn)代碼:查詢分析器執(zhí)行情況:SQL語句及執(zhí)行結(jié)果顯示UPDATE student SET sex=男 WHERE s_no=3002005student表更改前后的內(nèi)容截圖顯示(3)、用DELETE語句刪除student表中數(shù)據(jù);實(shí)現(xiàn)代碼:查詢分析器執(zhí)行情況:SQL語句及執(zhí)行結(jié)果顯示INSERT INTO student(s_no,sna

24、me,sex,sbirthday,dno,spno,class_no) values(3002008,王小昂,男,1994-08-04,xy01,zy01001,1001)DELETE FROM student WHERE s_no=3002008student表更改前后的內(nèi)容截圖顯示實(shí)驗(yàn)中出現(xiàn)的問題及解決方案插入數(shù)據(jù)時沒有注意到數(shù)據(jù)的長度,導(dǎo)致報錯。解決方法:認(rèn)真核對數(shù)據(jù),重新建立數(shù)據(jù)庫,重新插入數(shù)據(jù)。建這8個表的先后順序問題。由于主外鍵的約束,建表的順序不能隨便調(diào)亂,要先理清了各表的關(guān)系后,再按照順序建表。六、思考題說明數(shù)據(jù)庫中的表和數(shù)據(jù)文件的關(guān)系。答:表(table)為數(shù)據(jù)庫中數(shù)據(jù)存儲的

25、基本單位,其數(shù)據(jù)按行、列存儲。每個表具有一表名和列的集合。每一列有一個列名、數(shù)據(jù)類型、寬度或精度、比例。一行是對應(yīng)單個記錄的列信息的集合。數(shù)據(jù)文件存放著在數(shù)據(jù)庫中存儲的數(shù)據(jù),且一個數(shù)據(jù)庫只有一個數(shù)據(jù)文件。表作為數(shù)據(jù)庫中的數(shù)據(jù)存儲單位,存儲在數(shù)據(jù)文件中。數(shù)據(jù)庫中的日志文件能否單獨(dú)修改?答:不能,因?yàn)槿罩疚募涗浟藬?shù)據(jù)庫,單獨(dú)修改可能會造成日志文件與數(shù)據(jù)庫的不一致性,影響工作。在實(shí)驗(yàn)中創(chuàng)建表時,應(yīng)該注意什么?你是如何解決的?答:應(yīng)該注意主鍵與外鍵的關(guān)系,按照順序建表。實(shí)驗(yàn)中創(chuàng)建表時,當(dāng)實(shí)驗(yàn)中有多個表且表間存在外鍵約束時,應(yīng)該注意創(chuàng)建時先建立被依賴的表,或者最后再添加各表間的外鍵約束。表間有外鍵約束

26、時,注意外鍵之間的數(shù)據(jù)類型應(yīng)該是一致的。在向表中插入數(shù)據(jù)時,應(yīng)該注意什么?你是如何解決的?答:應(yīng)注意每一個數(shù)據(jù)的類型,長度。按照建表時每個數(shù)據(jù)的類型來插入數(shù)據(jù)。實(shí)驗(yàn)向表中插入數(shù)據(jù)時,當(dāng)實(shí)驗(yàn)中有多個表且表間存在外鍵約束時,應(yīng)該注意先對被依賴的表進(jìn)行數(shù)據(jù)插入。注意表中各個屬性的約束,例如主鍵、非空、唯一等約束。數(shù)據(jù)表中數(shù)據(jù)的完整性如何控制?答:為了數(shù)據(jù)表中的屬性添加列級或表級約束條件,例如主鍵、非空、唯一等。如果發(fā)現(xiàn)違約行為就拒絕插入數(shù)據(jù)。實(shí)驗(yàn)向表中插入數(shù)據(jù)時,當(dāng)實(shí)驗(yàn)中有多個表且表間存在外鍵約束時,應(yīng)該注意先對被依賴的表進(jìn)行數(shù)據(jù)插入。如何對專業(yè)表speciality的spname建立唯一性約束,并

27、對新建的約束進(jìn)行檢查。如何對student_course表的score列設(shè)置檢查約束?如何通過插入新的記錄來檢驗(yàn)檢查約束?怎樣來實(shí)現(xiàn)“允許空值”?設(shè)置“允許空值”時應(yīng)注意哪些問題?答:SQL sever 2005默認(rèn)為允許空值,可以通過NOT NULL語句來設(shè)定不為空實(shí)驗(yàn)二、查詢數(shù)據(jù)庫實(shí)驗(yàn)項目名稱:使用SQL語言查詢管理數(shù)據(jù)實(shí)驗(yàn)項目性質(zhì):基礎(chǔ)型所屬課程名稱:數(shù)據(jù)庫原理實(shí)驗(yàn)計劃學(xué)時:2一、實(shí)驗(yàn)?zāi)康氖煜QL語句的基本使用方法,學(xué)習(xí)如何編寫SQL語句來實(shí)現(xiàn)查詢1、掌握基本的SELECT查詢及其相關(guān)子句的使用;2、掌握復(fù)雜的SELECT查詢,如多表查詢、子查詢、連接查詢和嵌套查詢。二、實(shí)驗(yàn)內(nèi)容和要求

28、使用SQL查詢分析器查詢數(shù)據(jù),練習(xí)查詢語句的使用,掌握SELECT 語句的完整結(jié)構(gòu),包括簡單查詢、嵌套查詢、連接查詢等基本實(shí)現(xiàn)方法,掌握存儲查詢結(jié)果的方法,體會各種查詢的異同及相互之間的轉(zhuǎn)換,體會各種查詢的執(zhí)行過程,為簡單綜合應(yīng)用打下良好的基礎(chǔ)。三、實(shí)驗(yàn)主要儀器設(shè)備和材料1計算機(jī)及操作系統(tǒng):PC機(jī),Windows 2000/xp;2數(shù)據(jù)庫管理系統(tǒng):SQL sever 2000/2003/2005;四、實(shí)驗(yàn)方法、步驟及結(jié)果測試要求用SELECT完成以下查詢, 1、對實(shí)驗(yàn)一建立的數(shù)據(jù)庫表進(jìn)行查詢簡單查詢:(1)、查詢?nèi)繉W(xué)生的學(xué)號、姓名、性別和出身年月日。實(shí)現(xiàn)代碼及查詢結(jié)果截圖:格式如下查詢分析器

29、執(zhí)行情況:SQL語句及執(zhí)行結(jié)果顯示SELECT s_no 學(xué)號,sname 姓名,sbirthday 出身年月FROM student查詢結(jié)果截圖顯示(2)、查詢?nèi)w學(xué)生的學(xué)號、姓名和年齡實(shí)現(xiàn)代碼及查詢結(jié)果截圖:查詢分析器執(zhí)行情況:SQL語句及執(zhí)行結(jié)果顯示SELECT s_no 學(xué)號,sname 姓名,year(getdate()-year(sbirthday) 年齡FROM student查詢結(jié)果截圖顯示 (3)、查詢院系編號為 xy01(計算機(jī)學(xué)院)的全部學(xué)生的學(xué)號、姓名、性別和出身年月日。實(shí)現(xiàn)代碼及查詢結(jié)果截圖:查詢分析器執(zhí)行情況:SQL語句及執(zhí)行結(jié)果顯示SELECT s_no 學(xué)號,s

30、name 姓名,sex 性別,sbirthday 出身年月FROM studentWHERE dno=xy01查詢結(jié)果截圖顯示(4)、查詢“網(wǎng)絡(luò)工程”專業(yè)(專業(yè)代碼為zy01001)并且班級代碼為1001的學(xué)生的學(xué)號、姓名和出生日期。實(shí)現(xiàn)代碼及查詢結(jié)果截圖:查詢分析器執(zhí)行情況:SQL語句及執(zhí)行結(jié)果顯示SELECT s_no 學(xué)號,sname 姓名,sbirthday 出身年月FROM studentWHERE spno=zy01001查詢結(jié)果截圖顯示(5)、查詢在1988-05-09以后出生的計算機(jī)學(xué)院(院系編號為100001)學(xué)生的學(xué)號、姓名、性別和出身年月日。實(shí)現(xiàn)代碼及查詢結(jié)果截圖:查詢分

31、析器執(zhí)行情況:SQL語句及執(zhí)行結(jié)果顯示SELECT s_no 學(xué)號,sname 姓名,sex 性別,sbirthday 出身年月FROM studentWHERE dno=xy01AND sbirthday 1988-05-09查詢結(jié)果截圖顯示(6)、查詢?nèi)繉W(xué)生的學(xué)號、姓名、性別和出身日期結(jié)果按照出生日期的升序排列。實(shí)現(xiàn)代碼及查詢結(jié)果截圖:查詢分析器執(zhí)行情況:SQL語句及執(zhí)行結(jié)果顯示SELECT s_no 學(xué)號,sname 姓名,sex 性別,sbirthday 出身年月FROM studentorder by sbirthday查詢結(jié)果截圖顯示連接查詢:(1)、查詢?nèi)繉W(xué)生的學(xué)號、姓名、性

32、別、所在院系名稱和專業(yè)名稱實(shí)現(xiàn)代碼及查詢結(jié)果截圖:查詢分析器執(zhí)行情況:SQL語句及執(zhí)行結(jié)果顯示SELECT s_no 學(xué)號,sname 姓名,sex 性別,department.dept_name 院校, speciality.spname 專業(yè)FROM student,department,specialityWHERE student.dno = department.dnoAND student.spno = speciality.spno;查詢結(jié)果截圖顯示(2)、查詢選修了課程101(上課編號)的學(xué)生的學(xué)號、姓名、專業(yè)名稱和這門課的成績實(shí)現(xiàn)代碼及查詢結(jié)果截圖:查詢分析器執(zhí)行情況:SQL

33、語句及執(zhí)行結(jié)果顯示SELECT student.s_no 學(xué)號,sname 姓名,speciality.spname 專業(yè), score 成績FROM student,student_course,specialityWHERE student.s_no = student_course.s_noAND student.spno = speciality.spno AND student_course.tcid = 101;查詢結(jié)果截圖顯示(3)、查詢學(xué)生不及格的情況列出不及格學(xué)生的學(xué)號、姓名和不及格的課程名稱。實(shí)現(xiàn)代碼及查詢結(jié)果截圖:查詢分析器執(zhí)行情況:SQL語句及執(zhí)行結(jié)果顯示SELECT

34、student.s_no 學(xué)號,student.sname 姓名,ame 不及格課程FROM student,student_course,course,teacher_courseWHERE student.s_no = student_course.s_no AND teacher_course.tcid=student_course.tcid AND o=teacher_o AND score60;查詢結(jié)果截圖顯示沒有不及格課程嵌套查詢:(1)、查詢沒有選修了課程102的學(xué)生,列出學(xué)生的學(xué)號和姓名。實(shí)現(xiàn)代碼及查詢結(jié)果截圖:查詢分析器執(zhí)行情況:SQL語句及執(zhí)行結(jié)果顯示SELECT s_no

35、 學(xué)號,sname 姓名FROM studentWHERE s_no not in(SELECT s_noFROM student_courseWHERE tcid = 102)查詢結(jié)果截圖顯示(2)、查詢每門課都是80分以上的學(xué)生的學(xué)號與姓名。實(shí)現(xiàn)代碼及查詢結(jié)果截圖:查詢分析器執(zhí)行情況:SQL語句及執(zhí)行結(jié)果顯示SELECT s_no 學(xué)號,sname 姓名FROM studentWHERE s_no not in(SELECT s_noFROM student_courseWHERE score = 80)查詢結(jié)果截圖顯示2、選用Northwind數(shù)據(jù)庫進(jìn)行查詢(1)、對NothWind.

36、Products表進(jìn)行簡單查詢;在查詢分析器在窗口下用SELECT語句完成單表查詢:查詢所有Products的詳細(xì)記錄;實(shí)現(xiàn)代碼及查詢結(jié)果截圖:查詢分析器執(zhí)行情況:SQL語句及執(zhí)行結(jié)果顯示SELECT * FROM Products查詢結(jié)果截圖顯示(有所省略)查詢單價(UnitPrice)小于20的Products;實(shí)現(xiàn)代碼及查詢結(jié)果截圖:查詢分析器執(zhí)行情況:SQL語句及執(zhí)行結(jié)果顯示SELECT * FROM Products WHERE UnitPrice =20;查詢結(jié)果截圖顯示查詢Products中單價(UnitPrice)最高的Products的資料;實(shí)現(xiàn)代碼及查詢結(jié)果截圖:查詢分析器

37、執(zhí)行情況:SQL語句及執(zhí)行結(jié)果顯示SELECT * FROM ProductsWHERE UnitPrice = (SELECT MAX(UnitPrice)FROM Products );查詢結(jié)果截圖顯示五、實(shí)驗(yàn)中出現(xiàn)的問題及解決方案六、思考題1、連接查詢分哪幾類?各有什么特點(diǎn)?答:連接查詢:等值與非等值連接查詢,自身連接,外連接,復(fù)合條件連接等值與非等值連接:連接條件中的各連接字段類型必須是可比的。自身連接:是指一個表與其自身進(jìn)行連接,要為表取兩個不同的別名。外連接:在連接中把舍棄的元組也保存在結(jié)果關(guān)系中,而其他屬性上填上空值。復(fù)合條件連接:WHERE子句中含有多個連接條件。2、進(jìn)行連接查

38、詢時應(yīng)注意哪些問題?答:注意所使用的連接查詢是否符合要求。連接雙方的屬性類型要一樣。進(jìn)行多表連接時,特別注意不要忘記查詢條件,特別是連接多個表且記錄數(shù)目較多時。因?yàn)槿绻恢该鬟B接條件,系統(tǒng)將對多表進(jìn)行笛卡爾連接,會產(chǎn)生巨大的記錄。根據(jù)不同的應(yīng)用需求,要注意連接方式的選擇。實(shí)驗(yàn)三、創(chuàng)建和使用視圖、索引、存儲過程一、實(shí)驗(yàn)?zāi)康?、掌握視圖、索引、存儲過程的定義、索引、存儲過程的工作原理;2、掌握創(chuàng)建視圖、索引、存儲過程的SQL語句的用法;并能夠熟練利用視圖向表中插入、刪除和修改數(shù)據(jù)。3、掌握使用視圖來查詢數(shù)據(jù)。二、實(shí)驗(yàn)主要儀器設(shè)備和材料1計算機(jī)及操作系統(tǒng):PC機(jī),Windows;2數(shù)據(jù)庫管理系統(tǒng):S

39、QL sever 2000/2005;三、實(shí)驗(yàn)方法、步驟及結(jié)果測試(一)、視圖實(shí)驗(yàn)題目:題目1:建立“計算機(jī)學(xué)院”的學(xué)生基本情況視圖ies_student_view,該視圖包括計算機(jī)學(xué)院所有學(xué)生的學(xué)號、姓名、性別、出生年月、專業(yè)名稱。執(zhí)行ies_student_view視圖并觀察結(jié)果。創(chuàng)建視圖的SQL語句及執(zhí)行結(jié)果顯示CREATE VIEW ies_student_viewASSELECT DISTINCT S.s_no 學(xué)號,S.sname 姓名,S.sex 性別,S.sbirthday 出生年月,SP.spname 專業(yè)名稱FROM student AS S,speciality AS S

40、P,department AS DWHERE S.dno=(SELECT dno FROM department WHERE dept_name=計算機(jī)學(xué)院) AND S.spno=SP.spno查詢視圖的SQL語句及執(zhí)行結(jié)果截圖SELECT * FROM ies_student_view題目2:建立課程101(上課編號)的學(xué)生名冊的視圖,該名冊包括學(xué)生的學(xué)號、姓名、專業(yè)名稱和這門課的成績;并查詢結(jié)果。創(chuàng)建視圖的SQL語句及執(zhí)行結(jié)果顯示CREATE VIEW iec_student_course1_viewASSELECT S.s_no 學(xué)號,S.sname 姓名,S.sex 性別,P.spn

41、ame 專業(yè)名稱,SC.score 成績FROM student S,speciality P,department D,student_course SCWHERE S.dno=D.dno and P.dno=D.dno and S.s_no=SC.s_no and SC.tcid=101 and S.spno=P.spno查詢視圖的SQL語句及執(zhí)行結(jié)果截圖SELECT *FROM iec_student_course1_view題目3:建立統(tǒng)計不及格情況的視圖,列出不及格學(xué)生的學(xué)號、姓名和不及格的課程代碼創(chuàng)建視圖的SQL語句及執(zhí)行結(jié)果顯示 CREATE VIEW iec_student_f

42、ail_viewASSELECT S.s_no 學(xué)號,S.sname 姓名,P.spname 課程名稱,SC.score 成績,SC.tcid 課程號FROM student S,speciality P,department D,student_course SCWHERE S.dno=D.dno and P.dno=D.dno and S.s_no=SC.s_no and SC.score60 and S.spno=P.spno查詢視圖的SQL語句及執(zhí)行結(jié)果截圖SELECT *FROM iec_student_fail_view題目4:修改視圖ies_student_view,使該視圖包括

43、所有學(xué)生的學(xué)號、姓名、性別、出生年月、專業(yè)名稱、院系名稱。修改視圖的SQL語句及執(zhí)行結(jié)果顯示ALTER VIEW ies_student_viewASSELECT S.s_no 學(xué)號,S.sname 姓名,S.sex 性別,S.sbirthday 出生年月,D.dept_name 學(xué)院名稱,P.spname from student as S,department as D,speciality P where S.dno=D.dnoand S.spno=P.spno;1.查詢視圖的SQL語句2.修改前后的視圖執(zhí)行結(jié)果截圖顯示前:后:題目5:刪除視圖ies_student_view。并查詢結(jié)果

44、。刪除視圖的SQL語句及執(zhí)行結(jié)果顯示DROP VIEW ies_student_view運(yùn)行后可看到?jīng)]有該視圖顯示查詢視圖SQL語句及執(zhí)行結(jié)果截圖(通過查詢語句檢查該視圖,系統(tǒng)會返回該視圖不存在的信息)(二)、索引題目1:在student_course表(學(xué)生選課表)的學(xué)生學(xué)號(sno)列上創(chuàng)建索引sc_sno_index創(chuàng)建索引的SQL語句及執(zhí)行結(jié)果顯示CREATE INDEX sc_sno_indexON student_course(s_no)SQL語句及運(yùn)行結(jié)果截圖示例:運(yùn)行結(jié)果可通過執(zhí)行系統(tǒng)的存儲過程查看:Sp_helpindex student_course題目2:在學(xué)生表的出生年

45、月列上創(chuàng)建索引stu_birthday_index創(chuàng)建索引的SQL語句及執(zhí)行結(jié)果顯示CREATE INDEX stu_birthday_indexON student(sbirthday)SQL語句及運(yùn)行結(jié)果截圖示例:運(yùn)行結(jié)果可通過執(zhí)行系統(tǒng)的存儲過程查看:Sp_helpindex stu_birthday_index(三)、存儲過程題目1:創(chuàng)建一個名稱為“StuInfo”的存儲過程,要求完成以下功能:在student表中查詢xxx班學(xué)生的學(xué)號、姓名、性別、出生日期四個字段的內(nèi)容。查詢分析器執(zhí)行情況:SQL語句if(object_id(StuInfo,p)is not null) drop pr

46、oc StuInfogoCREATE PROC StuInfoclass char(4)=nullASBEGINIF(class is null) print請輸入班級編號ELSESELECT s_no 學(xué)號,sname 姓名,sex 性別,sbirthday 出生年月FROM studentWHERE class_no=classEND執(zhí)行結(jié)果截圖顯示EXEC StuInfo 1001題目2:創(chuàng)建一個存儲過程StuScoreInfo,完成的功能是在表student、表course和表student_course中查詢以下字段:班級、學(xué)號、姓名、性別、課程名稱、學(xué)生成績。查詢分析器執(zhí)行情況:S

47、QL語句IF(object_id(StuScoreInfo,p)is not null) DROP PROC StuScoreInfoGOCREATE PROC StuScoreInfodepartment char(4)=nullASBEGINIF(department is null) print請輸入學(xué)院編號ELSESELECT DISTINCT S.class_no 班級,S.s_no 學(xué)號,S.sname 姓名,S.sex 性別,C.cname 課程名稱,SC.score 學(xué)生成績FROM student S,course C,student_course SCWHERE S.s_n

48、o=SC.s_no AND S.spno=C.spno AND dno=departmentEND執(zhí)行結(jié)果截圖顯示題目3:創(chuàng)建存儲過程list_famous_teachers,該存儲過程列出SC庫中所有年齡在35歲以下的教師的教師號、姓名、所在學(xué)院和年齡。查詢分析器執(zhí)行情況:SQL語句IF(object_id(list_famous_teachers,p)is not null) DROP PROC list_famous_teachersGOCREATE PROC list_famous_teachersASBEGINSELECT T.t_no 教師編號,T.t_name 姓名,D.dept

49、_name 學(xué)院名稱,year(getdate()-year(t_birthday) 年齡FROM teacher T,department DWHERE T.dno=D.dno and year(getdate()-year(t_birthday) 35END執(zhí)行結(jié)果截圖顯示題目4:創(chuàng)建存儲過程list_student_department,該存儲過程接收學(xué)院代碼作為輸入?yún)?shù),列出數(shù)據(jù)庫sc中某個院系學(xué)生的全部信息。查詢分析器執(zhí)行情況:SQL語句IF (object_id(list_student_department, P) is not null) DROP PROC list_stud

50、ent_departmentGOCREATE PROC list_student_departmentdept_name char(20)=nullASBEGINIF(dept_name is null)PRINT請輸入院系ELSE SELECT S.s_no 學(xué)號,S.sname 姓名,S.sex 性別,S.sbirthday 出生年月,P.spname 專業(yè)名稱,S.class_no 班級編號FROM student S,department D,speciality P WHERE S.dno = D.dno and S.spno=P.spno and D.dept_name=dept_

51、name;ENDGO執(zhí)行結(jié)果截圖顯示四、實(shí)驗(yàn)中出現(xiàn)的問題及解決方案在定義存儲過程中,為了避免重復(fù)定義,應(yīng)該在定義新的存儲過程之前,首先刪除之前的存儲過程。五、思考題視圖可以加快數(shù)據(jù)的查詢速度,這句話對嗎?為什么?答:不對。RDBMS執(zhí)行CREATE VIEW 語句的結(jié)果只是把視圖的定義存入數(shù)據(jù)字典,并不執(zhí)行其中的SELECT語句。只是在對視圖查詢時,才按視圖的定義從基本表中將數(shù)據(jù)查出。所以并不能加快數(shù)據(jù)的查詢速度。視圖可以簡化查詢,這句話對嗎?為什么?答:對的。在對視圖查詢時,按視圖的定義從基本表中將數(shù)據(jù)查出,再對查出的數(shù)據(jù)進(jìn)行查詢,減少查詢操作。視圖是一個虛表,數(shù)據(jù)庫中只存放視圖的定義,而不

52、存放視圖包含的數(shù)據(jù),這些數(shù)據(jù)仍存放在原來基本表中。這句話對嗎?答:對基本表中的數(shù)據(jù)如果發(fā)生變化,視圖中查詢出數(shù)據(jù)也隨之變化。這句話對嗎?答:視圖是一個虛表,數(shù)據(jù)庫中只存放視圖的定義,而不存放視圖包含的數(shù)據(jù),這些數(shù)據(jù)仍存放在原來基本表中。所以基本表的數(shù)據(jù)發(fā)生變化時,從視圖中查詢出的數(shù)據(jù)也會隨之改變。視圖的作用。視圖能夠簡化用戶的操作視圖使用戶能以多鐘角度看待同一數(shù)據(jù)視圖對重構(gòu)數(shù)據(jù)庫提供了一定程度的邏輯獨(dú)立性視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù)適當(dāng)?shù)睦靡晥D可以更清晰的表達(dá)查詢可更新視圖的限制。答:一般的,行列子集視圖時可更新的,視圖的屬性來自聚集函數(shù)、表達(dá)式,則該視圖是不可更新的。在上述實(shí)驗(yàn)中ies_

53、student_view視圖是可以更新的,其視圖更新既是對student表的更新。視圖tcid1_student_view和fail_student_view都是由兩個基本表組成的,此視圖不能更新。實(shí)驗(yàn)四 小型數(shù)據(jù)庫規(guī)劃設(shè)計實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)數(shù)據(jù)庫原理及應(yīng)用目的就是能創(chuàng)建和管理一個真實(shí)的數(shù)據(jù)庫,通過規(guī)劃設(shè)計一個小型數(shù)據(jù)庫系統(tǒng)。讓學(xué)生掌握數(shù)據(jù)庫規(guī)劃設(shè)計的基本技術(shù),熟悉數(shù)據(jù)庫的設(shè)計的基本方法和步驟,明白數(shù)據(jù)庫設(shè)計各階段的任務(wù),加深對數(shù)據(jù)庫系統(tǒng)概念和特點(diǎn)的理解。實(shí)驗(yàn)內(nèi)容和要求,根據(jù)你所熟悉的實(shí)際情況規(guī)劃一個小型的數(shù)據(jù)庫應(yīng)用項目,學(xué)生學(xué)籍管理系統(tǒng),進(jìn)行系統(tǒng)分析和數(shù)據(jù)庫設(shè)計。要求:1、規(guī)劃設(shè)計一個小型系統(tǒng)的數(shù)

54、據(jù)庫,按照給定要求,對各設(shè)計階段進(jìn)行描述,要求給出數(shù)據(jù)庫設(shè)計的E-R圖,并將E-R圖轉(zhuǎn)換成相應(yīng)的模型,編制SQL命令腳本。實(shí)驗(yàn)主要儀器設(shè)備和材料1計算機(jī)及操作系統(tǒng):PC機(jī),Windows 2000/xp;2數(shù)據(jù)庫管理系統(tǒng):SQL server 2000/2003/2005;實(shí)驗(yàn)方法、步驟及結(jié)構(gòu)測試簡要的需求分析報告;本系統(tǒng)設(shè)計一個學(xué)生學(xué)籍管理系統(tǒng),統(tǒng)計學(xué)生信息,對學(xué)生的在校情況進(jìn)行記錄。滿足學(xué)生查詢成績,進(jìn)行選課登記。滿足教師對學(xué)生的查詢,成績修改和評價。系統(tǒng)功能設(shè)計;本系統(tǒng)主要是對學(xué)生的在校情況進(jìn)行記錄存儲。學(xué)生學(xué)籍管理系統(tǒng)涉及數(shù)據(jù)信息有:院系信息、班級信息、任課教師信息、學(xué)生信息、學(xué)籍變更

55、信息、學(xué)生獎懲信息、課程信息、選課信息和成績等。建立系統(tǒng)的E-R圖列出設(shè)計的數(shù)據(jù)庫表Student表Department表Speciality表Change_code表Student_course表Class表Punishment表Reward表Coursetype表Teacher表Teacher_course表Plevels表Change表Profession表Rlevels表Course表5、生成數(shù)據(jù)庫關(guān)系圖創(chuàng)建視圖,并查詢結(jié)果。(截圖顯示相關(guān)代碼及實(shí)驗(yàn)結(jié)果)-建立計算機(jī)學(xué)院學(xué)生的視圖CREATE VIEW ies_student_viewASSELECT DISTINCT S.sno 學(xué)

56、號,S.sname 姓名,S.sex 性別,year(getdate()-year(birthday) 年齡,SP.spname 專業(yè)名稱,S.classno 班級FROM student AS S,speciality AS SP,department AS DWHERE S.dno=(SELECT dno FROM department WHERE dname=計算機(jī)學(xué)院) AND S.spno=SP.spno-建立獎勵學(xué)生視圖CREATE VIEW reward_VIEWASSELECT DISTINCT S.sno 學(xué)號,S.sname 姓名,RL.r_name 獲獎名稱,RL.r_m

57、oney 獲獎金額,R.r_rectime 時間FROM student S,rlevels RL,reward RWHERE S.sno=R.sno AND R.r_levels=RL.r_levels -建立懲罰學(xué)生視圖CREATE VIEW punishment_VIEWASSELECT DISTINCT S.sno 學(xué)號,S.sname 姓名,PL.p_name 違紀(jì)情況,PL.p_action 處分,P.p_rectime 時間FROM student S,plevels PL,punishment PWHERE S.sno=P.sno AND P.p_levels=PL.p_lev

58、els 創(chuàng)建索引并查看索引(截圖顯示相關(guān)代碼及實(shí)驗(yàn)結(jié)果)在student表的Sno屬性上建立索引在teacher表的t_no屬性上建立索引創(chuàng)建存儲過程,執(zhí)行相應(yīng)的存儲過程并觀察結(jié)果。(截圖顯示相關(guān)代碼及實(shí)驗(yàn)結(jié)果)創(chuàng)建存儲過程list_student_department該存儲過程接收學(xué)院代碼作為輸入?yún)?shù),列出某個院系的學(xué)生的所有信息IF (object_id(list_student_department, P) is not null) DROP PROC list_student_departmentGOCREATE PROC list_student_departmentdname ch

59、ar(20)=nullASBEGINIF(dname is null)PRINT請輸入院系ELSE SELECT S.sno 學(xué)號,S.sname 姓名,S.sex 性別,S.birthday 出生年月,P.spname 專業(yè)名稱,S.classno 班級編號FROM student S,department D,speciality P WHERE S.dno = D.dno and S.spno=P.spno and D.dname=dname;ENDGO創(chuàng)建存儲過程list_famous_teachers,該存儲過程列出SC庫中所有年齡在35歲以下的教師的教師號、姓名、所在學(xué)院和年齡。I

60、F(object_id(list_famous_teachers,p)is not null) DROP PROC list_famous_teachersGOCREATE PROC list_famous_teachersASBEGINSELECT T.t_no 教師編號,T.t_name 姓名,D.dname 學(xué)院名稱,year(getdate()-year(t_birthday) 年齡FROM teacher T,department DWHERE T.dno=D.dno and year(getdate()-year(t_birthday) 35END代碼:CREATE TABLE d

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論