數(shù)據(jù)庫系統(tǒng)實(shí)驗(yàn)報(bào)告廣東工業(yè)大學(xué).doc
《數(shù)據(jù)庫系統(tǒng)實(shí)驗(yàn)報(bào)告廣東工業(yè)大學(xué).doc》由會員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)庫系統(tǒng)實(shí)驗(yàn)報(bào)告廣東工業(yè)大學(xué).doc(39頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
數(shù)據(jù)庫系統(tǒng)實(shí)驗(yàn)報(bào)告 學(xué) 院 計(jì)算機(jī)學(xué)院 專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 班 級 級 班 學(xué) 號 姓 名 指導(dǎo)教師 ( 2016 年 12 月) 實(shí)驗(yàn)__一__題目 數(shù)據(jù)庫及基本表的建立 實(shí)驗(yàn)__二__題目 查詢數(shù)據(jù)庫_ 實(shí)驗(yàn)__三__題目 創(chuàng)建和使用視圖、索引、存儲過程 實(shí)驗(yàn)__四 _題目 小型數(shù)據(jù)庫規(guī)劃設(shè)計(jì) 實(shí)驗(yàn)平臺:SQL Sever 2005 實(shí)驗(yàn)題目 實(shí)驗(yàn)一 數(shù)據(jù)庫及基本表的建立 一、實(shí)驗(yàn)?zāi)康? 1、掌握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è)管理器(Enterprise Manager)創(chuàng)建數(shù)據(jù)庫表; 三、實(shí)驗(yàn)主要儀器設(shè)備和材料 1.計(jì)算機(jī)及操作系統(tǒng):PC機(jī),Windows 2000/xp; 2.?dāng)?shù)據(jù)庫管理系統(tǒng):SQL sever 2000/2003/2005; 四、實(shí)驗(yàn)方法、步驟及結(jié)果測試 創(chuàng)建一個(gè)教學(xué)管理數(shù)據(jù)庫SC,其描述的信息有:學(xué)生信息、課程信息、教師信息、學(xué)生選課成績、授課信息、班級信息、系部信息、專業(yè)信息。 創(chuàng)建:student表(學(xué)生信息表)、course表(課程信息表)、teacher表(教師信息表)、student _course表(學(xué)生選課成績表)、teacher_course表(教師上課課表)等。 1、創(chuàng)建數(shù)據(jù)庫: 確定數(shù)據(jù)庫名稱;數(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增長。 (1)、利用查詢分析器(Query Analyzer),使用SQL語句指定參數(shù)創(chuàng)建數(shù)據(jù)庫; 實(shí)現(xiàn)代碼及截圖: SQL語句 CREATE DATABASE SC_3114006159 ON PRIMARY (NAME=SC_3114006159_DATA, FILENAME=E:\3114006159\SC_3114006159.mdf, SIZE=30, FILEGROWTH=20%) LOG ON (NAME=SC_3114006159_LOG, FILENAME=E:\3114006159\SC_3114006159.ldf, SIZE=3, FILEGROWTH=1) 查詢分析器執(zhí)行情況: SQL語句及執(zhí)行結(jié)果截圖顯示 2、創(chuàng)建基本表 利用查詢分析器,使用SQL語句方式創(chuàng)建方式將下面各表建立到教學(xué)管理數(shù)據(jù)庫中。 (1) 創(chuàng)建student表 字段名 代碼 類型 約束 學(xué)號 s_no char(8) 主鍵 姓名 sname char(8) 非空 性別 sex char(2) 出生日期 sbirthday Smalldatetime 學(xué)生所在院系編號 dno char(6) 外鍵 專業(yè)代碼 spno char(8) 外鍵 班級編碼 class_no char(4) (2)創(chuàng)建Course表 字段名 代碼 類型 約束 課程編號 cno char(10) 主鍵 課程名稱 cname char(20) 非空 專業(yè)代碼 spno char(8) 外鍵 課程類型編號 ctno tinyint 理論學(xué)時(shí) lecture tinyint 實(shí)驗(yàn)學(xué)時(shí) experiment tinyint 開課學(xué)期 semester tinyint 課程學(xué)分 credit tinyint (3)創(chuàng)建student _course表 字段名 代碼 類型 約束 學(xué)號 s_no char(8) 主鍵,與student表中s_no 外鍵關(guān)聯(lián),級聯(lián)刪除 上課編號 tcid smallint 主鍵 學(xué)生成績 score tinyint (4)創(chuàng)建teacher表 字段名 代碼 類型 約束 教師編號 t_no char(8) 主鍵 教師姓名 t_name char(8) 非空 性別 t_sex char(2) 出生日期 t_birthday smalldatetime 教師所在院系編號 dno char(6) 外鍵 職稱 tech_title char(10) (5)創(chuàng)建系部表(department) 字段名 代碼 類型 約束 院系編號 dno char(6) 主鍵 院系名稱 dept_name char(20) 非空 院系負(fù)責(zé)人 header char(8) (6)創(chuàng)建專業(yè)信息表(speciality) 字段名 代碼 類型 約束 專業(yè)代碼 spno char(8) 主鍵 院系編號 dno char(6) 外鍵,非空 專業(yè)名稱 spname char(20) 非空 (7)創(chuàng)建teacher_course表 字段名 代碼 類型 約束 上課編號 tcid smallint 主鍵 教師編號 t_no char(8) 外鍵 專業(yè)代碼 spno char(8) 外鍵 班級編碼 class_no char(4) 課程編號 cno char(10) 非空,外鍵 學(xué)期 semester Char(6) 學(xué)年 schoolyear Char(10) (8)創(chuàng)建班級表(class) 字段名 代碼 類型 約束 專業(yè)代碼 spno char(8) 主鍵,與 speciality 表中spno 外鍵關(guān)聯(lián), 班級編碼 class_no char(4) 主鍵, 班負(fù)責(zé)人 header char(8) 3、 查看各數(shù)據(jù)表之間的關(guān)系,生成數(shù)據(jù)庫關(guān)系圖。 生成數(shù)據(jù)庫關(guān)系圖截圖顯示 4、創(chuàng)建各表的實(shí)現(xiàn)代碼及截圖: SQL語句 USE SC_3114006159 GO CREATE TABLE student_3114006159 (s_no char(8)PRIMARY KEY, sname char(8) NOT NULL, sex char(2), sbirthday smalldatetime, dno char(6), spno char(8), class_no char(4) ); CREATE TABLE course_3114006159 (cno char(10) PRIMARY KEY, cname char(20) NOT NULL, spno char(8), ctno tinyint, lecture tinyint, experiment tinyint, semester tinyint, credit tinyint ); CREATE TABLE student_course_3114006159 (s_no char(8), tcid smallint, score tinyint, PRIMARY KEY(s_no,tcid) ); CREATE TABLE teacher_3114006159 (t_no char(8) PRIMARY KEY, t_name char(8) NOT NULL, t_sex char(2), t_birthday smalldatetime, dno char(6), tech_title char(10) ); CREATE TABLE deparment_3114006159 (dno char(6) PRIMARY KEY, dept_name char(20) NOT NULL, header char(8) ); CREATE TABLE speciality_3114006159 (spno char(8) PRIMARY KEY, dno char(6) NOT NULL, spname char(20) NOT NULL ); CREATE TABLE teacher_course_3114006159 (tcid smallint PRIMARY KEY, t_no char(8), spno char(8), class_no char(4), cno char(10) NOT NULL, semester char(6), schoolyear char(10) ); CREATE TABLE class_3114006159 (spno char(8), class_no char(4), header char(8), PRIMARY KEY(spno,class_no) ); ALTER TABLE student_3114006159 ADD FOREIGN KEY (dno) REFERENCES deparment_3114006159(dno); ALTER TABLE student_3114006159 ADD FOREIGN KEY (spno) REFERENCES speciality_3114006159(spno); ALTER TABLE course_3114006159 ADD FOREIGN KEY (spno) REFERENCES speciality_3114006159(spno); ALTER TABLE student_course_3114006159 ADD FOREIGN KEY (s_no) REFERENCES student_3114006159(s_no); ALTER TABLE teacher_3114006159 ADD FOREIGN KEY (dno) REFERENCES deparment_3114006159(dno); ALTER TABLE speciality_3114006159 ADD FOREIGN KEY (dno) REFERENCES deparment_3114006159 (dno); ALTER TABLE teacher_course_3114006159 ADD FOREIGN KEY (t_no) REFERENCES teacher_3114006159(t_no); ALTER TABLE teacher_course_3114006159 ADD FOREIGN KEY (spno) REFERENCES speciality_3114006159(spno); ALTER TABLE teacher_course_3114006159 ADD FOREIGN KEY (cno) REFERENCES course_3114006159(cno); ALTER TABLE class_3114006159 ADD FOREIGN KEY (spno) REFERENCES speciality_3114006159(spno); 查詢分析器執(zhí)行情況: SQL語句及執(zhí)行結(jié)果截圖顯示 5、利用查詢分析器修改上述各表。 (1)、用INSERT語句向各個(gè)表中插入數(shù)據(jù)錄入5 條記錄。錄入時(shí)注意體會外鍵約束。 實(shí)現(xiàn)代碼及截圖: 查詢分析器執(zhí)行情況: SQL語句及執(zhí)行結(jié)果顯示 insert into deparment_3114006159 values(659801,計(jì)算機(jī),周杰倫); insert into deparment_3114006159 values(659802,機(jī)電,陳奕迅); insert into deparment_3114006159 values(659803,外國語,章子怡); insert into deparment_3114006159 values(659804,土木,梁朝偉); insert into deparment_3114006159 values(659805,環(huán)境,張國榮); insert into teacher_3114006159 values(65980101,劉德華,男,1975-03-25,659801,高級); insert into teacher_3114006159 values(65980201,周潤發(fā),男,1964-09-24,659802,高級); insert into teacher_3114006159 values(65980301,張學(xué)友,男,1956-06-15,659803,高級); insert into teacher_3114006159 values(65980401,張曼玉,女,1965-04-21,659804,高級); insert into teacher_3114006159 values(65980501,陳坤,男,1988-03-02,659805,高級); insert into speciality_3114006159 values(65980110,659801,計(jì)算機(jī)科學(xué)與技術(shù)); insert into speciality_3114006159 values(65980210,659802,自動(dòng)化); insert into speciality_3114006159 values(65980310,659803,商務(wù)英語); insert into speciality_3114006159 values(65980410,659804,土木工程); insert into speciality_3114006159 values(65980510,659805,環(huán)境工程); insert into class_3114006159 values(65980110,1401,劉德華); insert into class_3114006159 values(65980210,1402,周潤發(fā)); insert into class_3114006159 values(65980310,1403,張學(xué)友); insert into class_3114006159 values(65980410,1404,張曼玉); insert into class_3114006159 values(65980510,1405,陳坤); insert into course_3114006159 values(6598011001,數(shù)據(jù)庫,65980110,1,48,12,1,2); insert into course_3114006159 values(6598021001,制圖,65980210,2,56,6,2,2); insert into course_3114006159 values(6598031001,口語,65980310,3,48,0,1,4); insert into course_3114006159 values(6598041001,建筑學(xué),65980410,4,48,12,1,2); insert into course_3114006159 values(6598051001,基礎(chǔ)化學(xué),65980510,5,48,12,1,2); insert into teacher_course_3114006159 values(1,65980101,65980110,1401,6598011001,一學(xué)期,第二學(xué)年); insert into teacher_course_3114006159 values(2,65980201,65980210,1402,6598021001,一學(xué)期,第二學(xué)年); insert into teacher_course_3114006159 values(3,65980301,65980310,1403,6598031001,一學(xué)期,第二學(xué)年); insert into teacher_course_3114006159 values(4,65980401,65980410,1404,6598041001,一學(xué)期,第二學(xué)年); insert into teacher_course_3114006159 values(5,65980501,65980510,1405,6598051001,一學(xué)期,第二學(xué)年); insert into student_3114006159 values(31140001,王小波,男,1997-01-03,659801,65980110,1401); insert into student_3114006159 values(31140002,韓寒,男,1992-03-23,659802,65980210,1402); insert into student_3114006159 values(31140003,莫言,男,1997-06-15,659803,65980310,1403); insert into student_3114006159 values(31140004,三毛,女,1994-05-30,659804,65980410,1404); insert into student_3114006159 values(31140005,郭敬明,男,1995-12-03,659805,65980510,1405); insert into student_course_3114006159 values(31140001,1,96); insert into student_course_3114006159 values(31140002,3,67); insert into student_course_3114006159 values(31140003,2,91); insert into student_course_3114006159 values(31140004,4,89); insert into student_course_3114006159 values(31140005,5,96); 實(shí)驗(yàn)結(jié)果截圖顯示(插入數(shù)據(jù)的表格) 共8組(共8個(gè)表) (2)、用UPDATE語句更改student表中數(shù)據(jù); 實(shí)現(xiàn)代碼: use SC_3114006159 update student_3114006159 set sname=村上春樹 where sname=莫言 student表更改前的內(nèi)容截圖顯示查詢分析 student表更改后的內(nèi)容截圖顯示 (3)、用DELETE語句刪除student表中數(shù)據(jù); 實(shí)現(xiàn)代碼: use SC_3114006159 delete from student_course_3114006159 where s_no in (select s_no from student_3114006159 where sname=郭敬明); delete from student_3114006159 where sname=郭敬明 student表更改前的內(nèi)容截圖顯示查詢分析 student表更改后的內(nèi)容截圖顯示 五、實(shí)驗(yàn)中出現(xiàn)的問題及解決方案 在插入數(shù)據(jù)時(shí)沒注意外鍵約束,結(jié)果導(dǎo)致插入失敗,于是根據(jù)數(shù)據(jù)表關(guān)系圖先插入沒有外鍵約束的表,再根據(jù)外鍵約束關(guān)系按照一定順序插入表。在刪除student的元組時(shí),因?yàn)槠渲麈I被student_course表外鍵所參照,所以無法刪除,于是先刪除student_course表中的元組,再刪除student中的元組。 六、思考題 1、 說明數(shù)據(jù)庫中的表和數(shù)據(jù)文件的關(guān)系。 答:表存儲于數(shù)據(jù)文件中,一個(gè)數(shù)據(jù)文件可以存儲多個(gè)表。 2、 數(shù)據(jù)庫中的日志文件能否單獨(dú)修改? 不能,SQL Server數(shù)據(jù)庫都有l(wèi)og日志文件,log日志文件記錄用戶對數(shù)據(jù)庫修改的操作,只有數(shù)據(jù)庫發(fā)生更改時(shí),日志文件才會發(fā)生更改,不能單獨(dú)更改。 3、 附加練習(xí)題.(代碼以及運(yùn)行結(jié)果采用截圖顯示) (1) 將計(jì)算機(jī)專業(yè)所有學(xué)生的數(shù)據(jù)庫原理的成績增加10分 代碼以及運(yùn)行結(jié)果: (2) 刪除計(jì)算機(jī)專業(yè)所有學(xué)生的數(shù)據(jù)庫原理的選修信息 代碼以及運(yùn)行結(jié)果: (3) 為speciality的spname添加唯一約束 代碼以及運(yùn)行結(jié)果: (4) 為student_course的score設(shè)置檢查約束 代碼以及運(yùn)行結(jié)果: 實(shí)驗(yàn)題目 實(shí)驗(yàn)二 查詢數(shù)據(jù)庫 一、實(shí)驗(yàn)?zāi)康? 熟悉SQL語句的基本使用方法,學(xué)習(xí)如何編寫SQL語句來實(shí)現(xiàn)查詢 1、掌握基本的SELECT查詢及其相關(guān)子句的使用; 2、掌握復(fù)雜的SELECT查詢,如多表查詢、子查詢、連接查詢和嵌套查詢。 二、實(shí)驗(yàn)內(nèi)容和要求 使用SQL查詢分析器查詢數(shù)據(jù),練習(xí)查詢語句的使用,掌握SELECT 語句的完整結(jié)構(gòu),包括簡單查詢、嵌套查詢、連接查詢等基本實(shí)現(xiàn)方法,掌握存儲查詢結(jié)果的方法,體會各種查詢的異同及相互之間的轉(zhuǎn)換,體會各種查詢的執(zhí)行過程,為簡單綜合應(yīng)用打下良好的基礎(chǔ)。 三、實(shí)驗(yàn)主要儀器設(shè)備和材料 1.計(jì)算機(jī)及操作系統(tǒng):PC機(jī),Windows 2000/xp; 2.?dāng)?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é)果截圖:格式如下 查詢分析器執(zhí)行情況: SQL語句及執(zhí)行結(jié)果顯示 use SC_3114006159 select s_no,sname,sex,sbirthday from student_3114006159 查詢結(jié)果截圖顯示 (2)、查詢?nèi)w學(xué)生的學(xué)號、姓名和年齡 實(shí)現(xiàn)代碼及查詢結(jié)果截圖: use SC_3114006159 select s_no,sname,sex,year(getdate())-year(sbirthday) from student_3114006159 (3)、查詢院系編號為‘510000’(計(jì)算機(jī)學(xué)院)的全部學(xué)生的學(xué)號、姓名、性別和出身年月日。 實(shí)現(xiàn)代碼及查詢結(jié)果截圖: use SC_3114006159 select s_no,sname,sex,sbirthday from student_3114006159 where dno=659801 (4)、查詢“計(jì)算機(jī)科學(xué)與技術(shù)”專業(yè)(專業(yè)代碼為‘080605’)并且班級代碼為‘0201’的學(xué)生的學(xué)號、姓名和出生日期。 實(shí)現(xiàn)代碼及查詢結(jié)果截圖: use SC_3114006159 select s_no,sname,sbirthday from student_3114006159 where spno=65980110 and class_no=1401 (5)、查詢在‘1983/01/10’以后出生的計(jì)算機(jī)學(xué)院(院系編號為‘510000’)學(xué)生的學(xué)號、姓名、性別和出身年月日。 實(shí)現(xiàn)代碼及查詢結(jié)果截圖: use SC_3114006159 select s_no,sname,sex,sbirthday from student_3114006159 where dno=659801and sbirthday>1983-01-10 (6)、查詢?nèi)繉W(xué)生的學(xué)號、姓名、性別和出身日期結(jié)果按照出生日期的升序排列。 實(shí)現(xiàn)代碼及查詢結(jié)果截圖: use SC_3114006159 select s_no,sname,sex,sbirthday from student_3114006159 order by sbirthday 連接查詢: (1)、查詢?nèi)繉W(xué)生的學(xué)號、姓名、性別、所在院系名稱和專業(yè)名稱 實(shí)現(xiàn)代碼及查詢結(jié)果截圖: use SC_3114006159 select s_no,sname,sex,dept_name,spname from student_3114006159,deparment_3114006159,speciality_3114006159 where student_3114006159.dno=deparment_3114006159.dno and deparment_3114006159.dno=speciality_3114006159.dno (2)、查詢選修了課程1(上課編號)的學(xué)生的學(xué)號、姓名、專業(yè)名稱和這門課的成績 實(shí)現(xiàn)代碼及查詢結(jié)果截圖: use SC_3114006159 select student_3114006159.s_no,sname,spname,score from student_3114006159,student_course_3114006159,speciality_3114006159 where student_3114006159.s_no=student_course_3114006159.s_no and student_3114006159.spno=speciality_3114006159.spno and tcid=1 (3)、查詢學(xué)生不及格的情況列出不及格學(xué)生的學(xué)號、姓名和不及格的課程名稱。 實(shí)現(xiàn)代碼及查詢結(jié)果截圖: use SC_3114006159 select student_3114006159.s_no,sname,cname from student_3114006159,student_course_3114006159,course_3114006159 where student_3114006159.s_no=student_course_3114006159.s_no and student_course_3114006159.tcid=course_3114006159.ctno and score<60 嵌套查詢: (1)、查詢沒有選修了課程1的學(xué)生,列出學(xué)生的學(xué)號和姓名。 實(shí)現(xiàn)代碼及查詢結(jié)果截圖: use SC_3114006159 select distinct student_3114006159.s_no,sname from student_3114006159,student_course_3114006159 where student_3114006159.s_no not in( select s_no from student_course_3114006159 where tcid=1) (2)、查詢每門課都是80分以上的學(xué)生的學(xué)號與姓名。 實(shí)現(xiàn)代碼及查詢結(jié)果截圖: use SC_3114006159 select distinct student_3114006159.s_no,sname from student_3114006159 where not exists( select * from student_course_3114006159 where student_3114006159.s_no=student_course_3114006159.s_no and score<80) 2、選用Northwind數(shù)據(jù)庫進(jìn)行查詢 (1)、對NothWind. Products表進(jìn)行簡單查詢;在查詢分析器在窗口下用SELECT語句 以下部分查詢結(jié)果截圖由于表格過長,所以只截取了部分表格內(nèi)容,無法完整截圖整個(gè)表格。 完成單表查詢: 查詢所有Products的詳細(xì)記錄; 實(shí)現(xiàn)代碼及查詢結(jié)果截圖: use Northwind select * from Products 查詢單價(jià)(UnitPrice)小于20的Products; 實(shí)現(xiàn)代碼及查詢結(jié)果截圖: use Northwind select * from Products where UnitPrice<20 查詢Products中最高單價(jià)(UnitPrice)是多少; 實(shí)現(xiàn)代碼及查詢結(jié)果截圖: use Northwind select max(UnitPrice) from Products (2)、在查詢分析器在窗口下用SELECT語句完成連接(嵌套)查詢: 查詢所有被訂購過得Products的ProductsID和ProductName; 實(shí)現(xiàn)代碼及查詢結(jié)果截圖: use Northwind select distinct Products.ProductID,Products.ProductName from Products,[Order Details] where Products.ProductID=[Order Details].ProductID 查詢所有被CustomerID為AROUT客和訂購過的ProductsID和ProductName; 實(shí)現(xiàn)代碼及查詢結(jié)果截圖: use Northwind select Products.ProductID,Products.ProductName from Products,[Order Details],Orders where Products.ProductID=[Order Details].ProductID and [Order Details].OrderID=Orders.OrderID and CustomerID=AROUT 查詢所有被CustomerID為AROUT客和訂購過,且單價(jià)在20 以上的ProductsID 和ProductName; 實(shí)現(xiàn)代碼及查詢結(jié)果截圖: use Northwind select Products.ProductID,Products.ProductName from Products,[Order Details],Orders where Products.ProductID=[Order Details].ProductID and [Order Details].OrderID=Orders.OrderID and CustomerID=AROUT and Products.UnitPrice>20 查詢Products中單價(jià)(UnitPrice)最高的Products的資料; 實(shí)現(xiàn)代碼及查詢結(jié)果截圖: use Northwind select * from Products where UnitPrice>=all (select UnitPrice from Products); 五、實(shí)驗(yàn)中出現(xiàn)的問題及解決方案 六、思考題 1、 連接查詢分哪幾類?各有什么特點(diǎn)? 答:連接查詢可分為: 1. 等值連接與非等值連接:當(dāng)where子句中的連接運(yùn)算符為=時(shí),稱為等值連接,使用其它運(yùn)算符為非等值連接。 2. 自然連接:在等值連接中把目標(biāo)列中重復(fù)的屬性列去掉則為自然連接。 3. 自身連接:一個(gè)表與自身連接,稱為表的自身連接。 4. 外連接:兩表連接時(shí)不存在公共屬性上值相等的元組也保存在結(jié)果關(guān)系中,而在其他屬性上填空值(NULL),那么連接就叫外連接。 5. 多表連接:兩個(gè)表以上連接為多表連接。 2、 進(jìn)行連接查詢時(shí)應(yīng)注意哪些問題? 答:連接查詢時(shí)應(yīng)注意選擇正確的連接謂詞。 實(shí)驗(yàn)題目 實(shí)驗(yàn)三 創(chuàng)建和使用視圖、索引、存儲過程 一、實(shí)驗(yàn)?zāi)康? 1、理解視圖、索引、存儲過程的定義、索引、存儲過程的優(yōu)點(diǎn)與、索引、存儲過程的工作原理; 2、掌握在查詢分析器和企業(yè)管理器中創(chuàng)建、修改及刪除視圖、索引、存儲過程; 3、掌握創(chuàng)建視圖、索引、存儲過程的SQL語句的用法;并能夠熟練利用視圖向表中插入、刪除和修改數(shù)據(jù)。 4、掌握使用視圖來查詢數(shù)據(jù)。 二、實(shí)驗(yàn)主要儀器設(shè)備和材料 1.計(jì)算機(jī)及操作系統(tǒng):PC機(jī),Windows; 2.?dāng)?shù)據(jù)庫管理系統(tǒng):SQL Server 2005; 三、實(shí)驗(yàn)方法、步驟及結(jié)果測試 (一)、視圖 1、建立“計(jì)算機(jī)學(xué)院”的學(xué)生基本情況視圖ies_student_view,該視圖包括計(jì)算機(jī)學(xué)院所有學(xué)生的學(xué)號、姓名、性別、出身年月、專業(yè)名稱。 2、執(zhí)行ies_student_view視圖并觀察結(jié)果。 3、建立課程1(上課編號)的學(xué)生名冊的視圖,該名冊包括學(xué)生的學(xué)號、姓名、專業(yè)名稱和這門課的成績;并查詢結(jié)果。 4、建立統(tǒng)計(jì)不及格情況的視圖,列出不及格學(xué)生的學(xué)號、姓名和不及格的課程代碼; 5、執(zhí)行視圖并觀察結(jié)果。 6、修改視圖ies_student_view,使該視圖包括所有學(xué)生的學(xué)號、姓名、性別、出身年月、學(xué)院名稱、專業(yè)名稱。 7、執(zhí)行ies_student_view視圖并觀察結(jié)果。 8、刪除視圖ies_student_view。并查詢結(jié)果。 記錄上述實(shí)驗(yàn)過程并截圖說明。 查詢分析器執(zhí)行情況: 創(chuàng)建視圖的SQL語句及執(zhí)行結(jié)果顯示 1 查詢視圖SQL語句及執(zhí)行結(jié)果截圖 2 查詢分析器執(zhí)行情況: 創(chuàng)建視圖的SQL語句及執(zhí)行結(jié)果顯示 3、 4、 查詢視圖SQL語句及執(zhí)行結(jié)果截圖 5、 查詢分析器執(zhí)行情況: 修改視圖的SQL語句及執(zhí)行結(jié)果顯示 6、 查詢視圖SQL語句及執(zhí)行結(jié)果截圖 7、 查詢分析器執(zhí)行情況: 刪除視圖的SQL語句及執(zhí)行結(jié)果顯示 8、 查詢視圖SQL語句及執(zhí)行結(jié)果截圖 (二)、索引 在student_course表(學(xué)生選課表)的學(xué)生學(xué)號(sno)列上創(chuàng)建索引sc_sno_index 查詢分析器執(zhí)行情況: 創(chuàng)建索引的SQL語句及執(zhí)行結(jié)果顯示 (三)、存儲過程 題目(1)創(chuàng)建存儲過程list_student_department,該存儲過程接收學(xué)院代碼作為輸入?yún)?shù),列出數(shù)據(jù)庫sc中某個(gè)院系學(xué)生的全部信息。 查詢分析器執(zhí)行情況: SQL語句 CREATE PROCEDURE list_student_department_3114006159 @indno char(6) AS SELECT * FROM student_3114006159 WHERE dno=@indno 執(zhí)行結(jié)果截圖顯示 題目(2)使用SQL語句執(zhí)行存儲過程list_student_department 查詢分析器執(zhí)行情況: SQL語句 EXEC list_student_department_3114006159 @indno=659801執(zhí)行結(jié)果截圖顯示 題目(3)編寫存儲過程將某班選修某門課程的所有學(xué)生的學(xué)號和上課編號插入到student_course表中 查詢分析器執(zhí)行情況: SQL語句 CREATE PROCEDURE insert_student_course_3114006159 (@cno char(8),@class_no char(4),@tcid integer) AS INSERT INTO student_course_3114006159(tcid,s_no) SELECT @tcid,s_no FROM student_3114006159,course_3114006159 WHERE cno=@cno AND class_no=@class_no AND s_no not IN(SELECT s_no FROM student_course_3114006159 WHERE tcid=@tcid) 執(zhí)行結(jié)果截圖顯示 題目(4)使用SQL語句執(zhí)行(3)創(chuàng)建的存儲過程 查詢分析器執(zhí)行情況: SQL語句 EXEC insert_student_course_3114006159 @cno=6598011001,@class_no=1401,@tcid=1 執(zhí)行結(jié)果截圖顯示 題目(5)使用SQL語句查看(3)創(chuàng)建的存儲過程代碼 查詢分析器執(zhí)行情況: SQL語句 EXEC sp_helptext list_student_department_3114006159 執(zhí)行結(jié)果截圖顯示 題目(6)使用SQL語句刪除一個(gè)前面建立的存儲過程 查詢分析器執(zhí)行情況: SQL語句 DROP PROCEDURE insert_student_course_3114006159 執(zhí)行結(jié)果截圖顯示 四、實(shí)驗(yàn)中出現(xiàn)的問題及解決方案 無 五、思考題 1、視圖更新的優(yōu)點(diǎn) 答:1.視圖可以簡化用戶的操作。 2.視圖能使用戶能以多種角度看待同一數(shù)據(jù)。 3.視圖對重構(gòu)數(shù)據(jù)提供了一定程度的邏輯獨(dú)立性。 4.視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù)。 5.適當(dāng)利用視圖可以更加清晰的表達(dá)查詢。 2、哪些視圖是可以更新的?哪些視圖是不可以更新的?針對實(shí)驗(yàn)舉例說明。 答:一般的,行列子集視圖時(shí)可更新的,除行列子集視圖外,理論上有些視圖也是可以更新的,但它們的確切特征還是尚待研究的課題。還有其他的視圖從理論上就是不可更新的,比如,視圖的屬性來自聚集函數(shù)、表達(dá)式,則該視圖肯定是不可更新的。在上述實(shí)驗(yàn)中 ies_student_view_3114006159視圖是可以更新的,其視圖更新既是對student_3114006159表的更新。 3、什么是存儲過程,什么是觸發(fā)器,兩者有什么區(qū)別? 答:觸發(fā)器與存儲過程可以說是非常相似,可以說是一種變種的存儲過程,觸發(fā)器和存儲過程一樣都是SQL語句集,通常通過創(chuàng)建觸發(fā)器來強(qiáng)制實(shí)現(xiàn)不同表中的邏輯相關(guān)數(shù)據(jù)的引用完整性和一致性。由于用戶不能繞過觸發(fā)器,所以可以用它來強(qiáng)制實(shí)施復(fù)雜的業(yè)務(wù)規(guī)則,以確保數(shù)據(jù)的完整性。觸發(fā)器不同于存儲過程,觸發(fā)器主要是通過事件執(zhí)行觸發(fā)而被執(zhí)行的,而存儲過程可以通過存儲過程名稱名字而直接調(diào)用 4、teacher_course表中的class_no是否是外碼?請說明判斷的理由。 答:不是外碼,因?yàn)閏lass_no并不是其它表的主鍵,也不包含外鍵,所以它不是外碼。 5、teacher_course表中的class_no應(yīng)該與class表中的class_no建立對應(yīng)關(guān)系,即 第一、當(dāng)向teacher_course表中插入一條元組時(shí),必須保證class_no是class表中的class_no; 第二、當(dāng)刪除或修改class表中的class_no時(shí),teacher_course表中的class_no也應(yīng)該隨之變化或不允許變化。 請用觸發(fā)器完成上述要求。 第一: 第二: 實(shí)驗(yàn)題目 實(shí)驗(yàn)四 小型數(shù)據(jù)庫規(guī)劃設(shè)計(jì) 一、 實(shí)驗(yàn)?zāi)康? 學(xué)習(xí)數(shù)據(jù)庫原理及應(yīng)用目的就是能創(chuàng)建和管理一個(gè)真實(shí)的數(shù)據(jù)庫,通過規(guī)劃設(shè)計(jì)一個(gè)小型數(shù)據(jù)庫系統(tǒng)。讓學(xué)生掌握數(shù)據(jù)庫規(guī)劃設(shè)計(jì)的基本技術(shù),熟悉數(shù)據(jù)庫的設(shè)計(jì)的基本方法和步驟,明白數(shù)據(jù)庫設(shè)計(jì)各階段的任務(wù),加深對數(shù)據(jù)庫系統(tǒng)概念和特點(diǎn)的理解。 二、 實(shí)驗(yàn)內(nèi)容和要求 根據(jù)你熟悉的實(shí)際情況,選一個(gè)小型的數(shù)據(jù)庫應(yīng)用項(xiàng)目,銷售管理系統(tǒng),進(jìn)行系統(tǒng)分析和數(shù)據(jù)庫設(shè)計(jì)。 要求: 1、規(guī)劃設(shè)計(jì)一個(gè)小型系統(tǒng)的數(shù)據(jù)庫,按照給定要求,對各設(shè)計(jì)階段進(jìn)行描述,要求給出數(shù)據(jù)庫設(shè)計(jì)的E-R圖,并將E-R圖轉(zhuǎn)換成相應(yīng)的模型,編制SQL命令腳本。 2、要求:數(shù)據(jù)庫結(jié)構(gòu)嚴(yán)謹(jǐn)、基本表及屬性合理、各種約束條件正確。 3、涉及的內(nèi)容或知識點(diǎn):數(shù)據(jù)庫設(shè)計(jì)的需求分析、數(shù)據(jù)模型、關(guān)系規(guī)范化理論。 4、采用的方法和手段:設(shè)計(jì)數(shù)據(jù)模型、進(jìn)行關(guān)系規(guī)范化處理和用軟件實(shí)現(xiàn)數(shù)據(jù)庫的構(gòu)建。 三、 實(shí)驗(yàn)主要儀器設(shè)備和材料 1.計(jì)算機(jī)及操作系統(tǒng):PC機(jī),Windows XP; 2.?dāng)?shù)據(jù)庫管理系統(tǒng):SQL sever 2000/2003/2005 四、 實(shí)驗(yàn)方法、步驟及結(jié)構(gòu)測試 (一)、數(shù)據(jù)庫設(shè)計(jì) 1、銷售管理系統(tǒng)數(shù)據(jù)庫包括客戶數(shù)據(jù)、商品數(shù)據(jù)和訂單數(shù)據(jù)。 2、確定銷售管理系統(tǒng)中的實(shí)體及其屬性 3、建立銷售管理系統(tǒng)的E-R圖 4、設(shè)計(jì)銷售管理系統(tǒng)數(shù)據(jù)庫 Sales 5、設(shè)計(jì)customer表(客戶表)、supplier表(供應(yīng)商表)、goods表(商品信息表)、orader表里(訂單表)、creditgrade表(信譽(yù)等級表)和goodstype表(商品類型表)的結(jié)構(gòu)。 6、確定以上各表的關(guān)鍵字及字段數(shù)據(jù)類型。 (二)、創(chuàng)建數(shù)據(jù)庫和表 1、創(chuàng)建Sales數(shù)據(jù)庫 2、創(chuàng)建customer表(客戶表)、supplier表(供應(yīng)商表)、goods表(商品信息表)、orader表里(訂單表)、creditgrade表(信譽(yù)等級表)和goodstype表(商品類型表) 3、分別向以上各表輸入入數(shù)據(jù) (三)、設(shè)計(jì)數(shù)據(jù)完整性 1、定義customer表(客戶表)、supplier表(供應(yīng)商表)、goods表(商品信息表)、order表里(訂單表)、creditgrade表(信譽(yù)等級表)和goodstype表(商品類型表)的主鍵 2、定義以上各表的外鍵約束 3、定義唯一性約束 (四)、創(chuàng)建和使用視圖 1、創(chuàng)建一個(gè)包含廣州客戶信息的視圖customer_guangzhou 2、創(chuàng)建一個(gè)視圖ordersum_goods,其中的內(nèi)容是每種商品的名稱和每種商品的訂單金額的總和。 (五)、創(chuàng)建和執(zhí)行存儲過程 1、創(chuàng)建一個(gè)存儲過程proc_hub,用來查看“hub”商品的所有訂貨情況 2、創(chuàng)建一個(gè)帶參數(shù)的存儲過程proc_gooods,參數(shù)為商品名稱,通過該存儲過程可查看任何指定商品訂單信息。 五、實(shí)驗(yàn)報(bào)告要求 1、 建立系統(tǒng)的E-R圖 2、列出設(shè)計(jì)的數(shù)據(jù)庫表 customer表: 字段名 代碼 類型 約束 姓名 cname char(8) 非空 客戶編號 cno char(6) 主鍵 地區(qū) cregion char(10) 非空 信譽(yù)等級 cgrade int 外鍵 supplier表: 字段名 代碼 類型 約束 供應(yīng)商名稱 sname char(10) 非空 供應(yīng)商編號 sno char(8) 主鍵 goods表: 字段名 代碼 類型 約束 商品名稱 gname char(20) 非空 商品編號 gno char(8) 主鍵 商品類型編號 gtype_no char(10) 外鍵 供應(yīng)商編號 sno char(8) 外鍵 價(jià)格 gprice int 大于0 order表: 字段名 代碼 類型 約束 訂單號 order_no char(10) 主鍵 客戶編號 cno char(6) 外鍵 order_goods表: 字段名 代碼 類型 約束 訂單號 order_no char(10) 主鍵,外鍵 商品編號 gno char(8) 主鍵,外鍵 商品數(shù)量 goods_num int 大于0 總金額 amount int 等于數(shù)量乘單價(jià) creditgrade表: 字段名 代碼 類型 約束 等級名稱 grade_name char(8) 非空 信譽(yù)等級 cgrade int 主鍵 goodstype表: 字段名 代碼 類型 約束 商品類型名 gtype_name char(10) 非空 類型編號 gtype_no char(10) 主鍵 2、 生成數(shù)據(jù)庫關(guān)系圖 3、 查詢customer_guangzhou視圖,獲得廣州客戶信息。(截圖顯示) 5、查詢ordersum_goods視圖,獲得每種商品的名稱和每種商品的訂單金額的總和。(截圖顯示) 6、執(zhí)行存儲過程并觀察結(jié)果。(截圖顯示) 7、代碼附錄(列出所有的SQL語句,并標(biāo)注每段代碼的功能,宋體五號字,分欄打?。? //創(chuàng)建數(shù)據(jù)庫 CREATE DATABASE SALES_3114006159 ON PRIMARY (NAME=- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 數(shù)據(jù)庫 系統(tǒng) 實(shí)驗(yàn) 報(bào)告 廣東工業(yè)大學(xué)
鏈接地址:http://www.3dchina-expo.com/p-6491122.html