《數(shù)據(jù)庫(kù)原理及應(yīng)用實(shí)驗(yàn)》(共35頁(yè))
《《數(shù)據(jù)庫(kù)原理及應(yīng)用實(shí)驗(yàn)》(共35頁(yè))》由會(huì)員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫(kù)原理及應(yīng)用實(shí)驗(yàn)》(共35頁(yè))(35頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-----傾情為你奉上 《數(shù)據(jù)庫(kù)原理與應(yīng)用實(shí)驗(yàn)》 實(shí)驗(yàn)報(bào)告冊(cè) 學(xué)年 第 學(xué)期 學(xué) 院: 專(zhuān) 業(yè): 年 級(jí): 姓 名: 學(xué) 號(hào): 任課教師: MySQL+Navicat安裝步驟與下載地址 百度地址: Navicat配置與簡(jiǎn)單使用 百度地址: 本文檔所書(shū)寫(xiě)的代碼,為本人純手工敲打,并且通過(guò)軟件測(cè)試成功,歡迎大家進(jìn)行學(xué)習(xí),如有錯(cuò)誤,可聯(lián)系本人郵箱@實(shí)驗(yàn)一 創(chuàng)建和
2、維護(hù)數(shù)據(jù)庫(kù) 一、實(shí)驗(yàn)?zāi)康? (1)掌握在Windows 平臺(tái)下安裝與配置MySQL 5.5 的方法。 (2)掌握啟動(dòng)服務(wù)并登錄MySQL 5.5 數(shù)據(jù)庫(kù)的方法和步驟。 (3)掌握MySQL 數(shù)據(jù)庫(kù)的相關(guān)概念。 (4)掌握使用Navicat 工具和SQL 語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)的方法。 (5)掌握使用Navicat 工具和SQL 語(yǔ)句刪除數(shù)據(jù)庫(kù)的方法。 二、實(shí)驗(yàn)要求 (1)學(xué)生提前準(zhǔn)備好實(shí)驗(yàn)報(bào)告,預(yù)習(xí)并熟悉實(shí)驗(yàn)步驟; (2)遵守實(shí)驗(yàn)室紀(jì)律,在規(guī)定的時(shí)間內(nèi)完成要求的內(nèi)容; 三、實(shí)驗(yàn)內(nèi)容及步驟 (1)在Windows 平臺(tái)下安裝與配置MySQL 5.5.36 版。 (2)在服務(wù)對(duì)話框中
3、,手動(dòng)啟動(dòng)或者關(guān)閉MySQL 服務(wù)。 (3)使用Net 命令啟動(dòng)或關(guān)閉MySQL 服務(wù)。 (4)分別用Navicat 工具和命令行方式登錄MySQL。 (5)在my.ini 文件中將數(shù)據(jù)庫(kù)的存儲(chǔ)位置改為D:\MYSQL\DATA。 (6)創(chuàng)建數(shù)據(jù)庫(kù)。 ① 使用Navicat 創(chuàng)建學(xué)生信息管理數(shù)據(jù)庫(kù)gradem。 ② 使用SQL 語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)MyDB。 (7)刪除數(shù)據(jù)庫(kù)。 ① 使用Navicat 圖形工具刪除gradem 數(shù)據(jù)庫(kù)。 ② 使用SQL 語(yǔ)句刪除MyDB 數(shù)據(jù)庫(kù)。 四、思考題 常見(jiàn)的數(shù)據(jù)庫(kù)產(chǎn)品有哪些?
4、 五、實(shí)驗(yàn)總結(jié) 1、收獲 2、存在的問(wèn)題 實(shí)驗(yàn)二 管理表 一、實(shí)驗(yàn)?zāi)康? (1) 掌握表的基礎(chǔ)知識(shí)。 (2) 掌握使用Navicat管理工具和SQL語(yǔ)句創(chuàng)建表的方法。 (3) 掌握表的修改、查看、刪除等基本操作方法。 二、實(shí)驗(yàn)要求 (1)學(xué)生提前準(zhǔn)備好實(shí)驗(yàn)報(bào)告,預(yù)習(xí)并熟悉實(shí)驗(yàn)步驟; (2)遵守實(shí)驗(yàn)室紀(jì)律,在規(guī)定的時(shí)間內(nèi)完成要求的內(nèi)容; 三、實(shí)驗(yàn)內(nèi)容及步驟 (1)在gradem數(shù)據(jù)庫(kù)中創(chuàng)建表2.1~表2.5所示結(jié)構(gòu)的表。 表2.1 student表的表結(jié)構(gòu) 字段名稱(chēng) 數(shù)據(jù)類(lèi)型 長(zhǎng)度 小數(shù)位數(shù) 是否允許NULL值 說(shuō)明 sno
5、char 10 否 主碼 sname varchar 8 是 ssex char 2 是 sbirthday datetime 是 saddress varchar 50 是 sdept char 16 是 speciality varchar 20 是 表2.2 course表(課程名稱(chēng)表)的表結(jié)構(gòu) 字段名稱(chēng) 數(shù)據(jù)類(lèi)型 長(zhǎng)度 小數(shù)位數(shù) 是否允許NULL值 說(shuō)明 cno char 5 否 主碼 cname varchar 20 否 表2.3
6、 sc表(成績(jī)表)的表結(jié)構(gòu) 字段名稱(chēng) 數(shù)據(jù)類(lèi)型 長(zhǎng)度 小數(shù)位數(shù) 是否允許NULL值 說(shuō)明 sno char 10 否 組合主碼、外碼 cno char 5 否 組合主碼、外碼 degree decimal 4 1 是 1~100 表2.4 teacher表(教師表)的表結(jié)構(gòu) 字段名稱(chēng) 數(shù)據(jù)類(lèi)型 長(zhǎng)度 小數(shù)位數(shù) 是否允許NULL值 說(shuō)明 tno char 3 否 主碼 tname varchar 8 是 tsex char 2 是 tbirthday date 是
7、 tdept char 16 是 表2.5 teaching表(授課表)的表結(jié)構(gòu) 字段名稱(chēng) 數(shù)據(jù)類(lèi)型 長(zhǎng)度 小數(shù)位數(shù) 是否允許NULL值 說(shuō)明 cno char 5 否 組合主碼、外碼 tno char 3 否 組合主碼、外碼 cterm tinyint 1 0 是 1~10 (2) 向表2.1至表2.5輸入數(shù)據(jù)記錄,見(jiàn)表2.6~表2.10。 表2.6 學(xué)生關(guān)系表student sno sname ssex sbirthday saddress sdept speciality 李勇 男
8、 1987-01-12 山東濟(jì)南 計(jì)算機(jī)工程系 計(jì)算機(jī)應(yīng)用 劉晨 女 1988-06-04 山東青島 信息工程系 電子商務(wù) 王敏 女 1989-12-23 江蘇蘇州 數(shù)學(xué)系 數(shù)學(xué) 張立 男 1988-08-25 河北唐山 信息工程系 電子商務(wù) 表2.7 課程關(guān)系表course cno cname cno cname C01 數(shù)據(jù)庫(kù) C03 信息系統(tǒng) C02 數(shù)學(xué) C04 操作系統(tǒng) 表2.8 成績(jī)表sc sno cno degree C01 92 C02 85 C03 88
9、 C02 90 C03 80 表2.9 教師表teacher tno tname tsex tbirthday tdept 101 李新 男 1977-01-12 計(jì)算機(jī)工程系 102 錢(qián)軍 女 1968-06-04 計(jì)算機(jī)工程系 201 王小花 女 1979-12-23 信息工程系 202 張小青 男 1968-08-25 信息工程系 表2.10 授課表teaching cno tno cterm C01 101 2 C02 102 1 C03 201 3 C04 202 4 (3
10、)在navicat下修改表結(jié)構(gòu)。 ① 向student表中增加“入學(xué)時(shí)間”列,其數(shù)據(jù)類(lèi)型為日期時(shí)間型。 ② 將student表中的sdept字段長(zhǎng)度改為20。 ③ 將student表中的speciality字段刪除。 ④ 刪除student表。 (4) 利用SQL命令(create table、alter table、drop table)完成對(duì)表的操作 ①利用create talbe 命令完成student表和course表的定義。 ②利用alter table、drop table命令實(shí)現(xiàn)(3)中的所有任務(wù)。
11、 四、思考題 (1) 在定義基本表語(yǔ)句時(shí),NOT NULL參數(shù)的作用是什么? (2) 主碼可以建立在“值可以為NULL”的列上嗎? 五、實(shí)驗(yàn)總結(jié): 1、收獲 2、存在的問(wèn)題 實(shí)驗(yàn)三 簡(jiǎn)單查詢(xún)——單表無(wú)條件和有條件查詢(xún) 一、實(shí)驗(yàn)?zāi)康? (1) 掌握SELECT語(yǔ)句的基本用法。 (2) 使用WHERE子句進(jìn)行有條件的查詢(xún)。 (3) 掌握使用IN和NOT IN,BETWEEN…AND和NOT BETWEEN…AND來(lái)縮小查詢(xún)范圍的方法。 (4) 利用LIKE子句實(shí)現(xiàn)字符串匹配查詢(xún)。 二、實(shí)驗(yàn)要求 1、學(xué)生提前準(zhǔn)備好實(shí)驗(yàn)報(bào)告,
12、預(yù)習(xí)并熟悉實(shí)驗(yàn)步驟; 2、遵守實(shí)驗(yàn)室紀(jì)律,在規(guī)定的時(shí)間內(nèi)完成要求的內(nèi)容; 三、實(shí)驗(yàn)內(nèi)容及步驟 在上次實(shí)驗(yàn)建立的Gradem或Gradem1數(shù)據(jù)庫(kù)中完成下面查詢(xún): (1) 查詢(xún)所有學(xué)生的基本信息、所有課程的基本信息和所有學(xué)生的成績(jī)信息(用三條SQL語(yǔ)句)。 SELECT * FROM student; SELECT * FROM course; SELECT * FROM sc; (2) 查詢(xún)所有學(xué)生的學(xué)號(hào)、姓名、性別和出生日期。 SELECT sno,sname,ssex,sbirthday FROM student; (3) 查詢(xún)所有課程的課程名
13、稱(chēng)。 SELECT cname FROM course (4) 查詢(xún)前10門(mén)課程的課號(hào)及課程名稱(chēng)。 SELECT cno,cname FROM course WHERE cno<=10 (5) 查詢(xún)所有學(xué)生的姓名及年齡。 SELECT sname ,year(now())-year(sbirthday) FROM student; (6) 查詢(xún)所有年齡大于18歲的女生的學(xué)號(hào)和姓名。 SELECT sno,sname FROM student WHERE ssex='女'and year(now())-year(sbirthday)>18 (7) 查詢(xún)
14、所有男生的信息。 SELECT * FROM student,teacher WHERE ssex='男'and tsex='男' (8) 查詢(xún)所有任課教師的姓名(Tname)和所在系別(Tdept)。 SELECT tname,tdept FROM teacher (9) 查詢(xún)“電子商務(wù)”專(zhuān)業(yè)的學(xué)生姓名、性別和出生日期。 SELECT sname,ssex,sbirthday FROM student WHERE sdept='電子商務(wù)' (10) 查詢(xún)Student表中的所有系名。 SELECT sdept FROM student (11) 查詢(xún)
15、“C01”課程的開(kāi)課學(xué)期。 SELECT cterm FROM teaching WHERE cno='c01' (12) 查詢(xún)成績(jī)?cè)?0~90分之間的學(xué)生學(xué)號(hào)及課號(hào)。 SELECT sno,cno FROM sc WHERE degree BETWEEN 80 and 90 (13) 查詢(xún)?cè)?970年1月1日之前出生的男教師信息。 SELECT * FROM teacher WHERE tbirthday<'1970-01-01'and tsex=’男’; (14) 輸出有成績(jī)的學(xué)生學(xué)號(hào)。 SELECT sno FROM sc WHERE degre
16、e is NOT NULL; (15) 查詢(xún)所有姓“劉”的學(xué)生信息。 SELECT * FROM student WHERE sname LIKE'劉%' (16) 查詢(xún)生源地不是山東省的學(xué)生信息。 SELECT * FROM student WHERE saddress NOT LIKE'山東%' (17) 查詢(xún)成績(jī)?yōu)?9分、89分或99分的記錄。 SELECT * FROM sc WHERE degree='79' or degree='89' or degree='99' (18) 查詢(xún)名字中第二個(gè)字是“小”字的男生的學(xué)生姓名和地址。 SELE
17、CT sname,saddress FROM student WHERE ssex='男' and sname LIKE'_小' (19) 查詢(xún)名稱(chēng)以“計(jì)算機(jī)_”開(kāi)頭的課程名稱(chēng)。 SELECT cname FROM course WHERE cname LIKE'計(jì)算機(jī)_' (20) 查詢(xún)計(jì)算機(jī)工程系和軟件工程系的學(xué)生信息。 SELECT * FROM student WHERE sdept='計(jì)算機(jī)工程系' OR sdept='軟件工程系' 四、思考題 1、LIKE的通配符有哪些?分別代表什么含義? 通配符 含義 % 有零
18、個(gè)或更多個(gè)字符組成的任意字符串 _ 任意單個(gè)字符 [ ] 用于指定范圍,例如[A ~ F],表示A ~ F范圍內(nèi)的任何單個(gè)字符 [ ^ ] 表示指定范圍之外的,例如[ ^A ~ F ],表示A ~ F 范圍以外的任何單個(gè)字符。 2、知道學(xué)生的出生日期,如何求出其年齡? SELECT year(now())-year(sbirthday) FROM student; 3、IS能用“=”來(lái)代替嗎? 不能 is是用來(lái)判斷null的,比如 remark is null 或者remark is not null =是用來(lái)直
19、接比較值的。 4、關(guān)鍵字ALL和DISTINCT有什么不同的含義? ALL表示所有的字段,有重復(fù)的2條,2 條都顯示, DISTINCT表示如果有重復(fù)的,只取一條。 五、實(shí)驗(yàn)總結(jié): 1、收獲 經(jīng)過(guò)這節(jié)數(shù)據(jù)庫(kù)課程的學(xué)習(xí),我基本上掌握了創(chuàng)建數(shù)據(jù)庫(kù)以及對(duì)數(shù)據(jù)庫(kù)的操作的基礎(chǔ)知識(shí)。學(xué)習(xí)了SQL數(shù)據(jù)庫(kù)中的增、刪、改、查等功能,數(shù)據(jù)庫(kù)這門(mén)課涉及到以前的知識(shí)不多,是一門(mén)從頭學(xué)起的課程,即使基礎(chǔ)不是很好,只要認(rèn)真聽(tīng)講、復(fù)習(xí)功課,還是一門(mén)比較容易掌握的課。 2、存在的問(wèn)題 不夠熟悉對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的操作,不會(huì)運(yùn)用快捷鍵,需要更多的練習(xí)和操作。 實(shí)驗(yàn)四 簡(jiǎn)單查詢(xún)——分組與排序 一、實(shí)驗(yàn)?zāi)康模?
20、(1) 利用GROUP BY子句對(duì)查詢(xún)結(jié)果分組。 (2) 利用ORDER BY子句對(duì)查詢(xún)結(jié)果排序。 (3) 掌握聚集函數(shù)的使用方法。 二、實(shí)驗(yàn)要求 1、學(xué)生提前準(zhǔn)備好實(shí)驗(yàn)報(bào)告,預(yù)習(xí)并熟悉實(shí)驗(yàn)步驟; 2、遵守實(shí)驗(yàn)室紀(jì)律,在規(guī)定的時(shí)間內(nèi)完成要求的內(nèi)容; 三、實(shí)驗(yàn)內(nèi)容及步驟 在Gradem或Gradem1數(shù)據(jù)庫(kù)中完成下面查詢(xún): (1) 統(tǒng)計(jì)有學(xué)生選修的課程的門(mén)數(shù)。 SELECT COUNT(DISTINCT cno) FROM course (2) 計(jì)算“c01”課程的平均成績(jī)。 SELECT AVG(degree) FROM sc WHERE cno='c01';
21、 (3) 查詢(xún)選修了“c03”課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢(xún)結(jié)果按分?jǐn)?shù)降序排列。 SELECT sno,degree FROM sc WHERE cno='c03' ORDER BY degree DESC; (4) 查詢(xún)各個(gè)課程號(hào)及相應(yīng)的選課人數(shù)。 SELECT cno,COUNT(sno) FROM sc GROUP BY cno (5) 統(tǒng)計(jì)每門(mén)課程的選課人數(shù)和最高分。 SELECT COUNT(sno),MAX(degree) FROM sc GROUP BY cno (6) 統(tǒng)計(jì)每個(gè)學(xué)生的選課門(mén)數(shù)和考試總成績(jī),并按選課門(mén)數(shù)降序排列。 SELECT
22、 COUNT(sno),sum(degree) FROM sc GROUP BY sno ORDER BY COUNT(sno) DESC; (7) 查詢(xún)選修了3門(mén)以上課程的學(xué)生學(xué)號(hào)。 SELECT sno FROM sc GROUP BY sno HAVING COUNT(cno)>3 (8) 查詢(xún)成績(jī)不及格的學(xué)生學(xué)號(hào)及課號(hào),并按成績(jī)降序排列。 SELECT sno,cno FROM sc WHERE degree<60 ORDER BY degree DESC (9) 查詢(xún)至少選修一門(mén)課程的學(xué)生學(xué)號(hào)。 SELECT sno F
23、ROM sc GROUP BY sno HAVING COUNT(cno)>1 (10) 統(tǒng)計(jì)輸出各系學(xué)生的人數(shù) SELECT sdept ,COUNT(*) FROM student GROUP BY sdept (11) 統(tǒng)計(jì)各系的男、女生人數(shù)。(兩條命令) Select sdept,ssex,count(*) From student Group by sdept ,ssex (12) 統(tǒng)計(jì)籍貫的男、女生人數(shù)。(兩條命令) Select saddress,ssex,count(*) From student Group by s
24、address ,ssex (13) 統(tǒng)計(jì)各系的老師人數(shù),并按人數(shù)升序排序。 SELECT tdept ,COUNT(*) FROM teacher GROUP BY tdept ORDER BY COUNT(*) DESC (14) 統(tǒng)計(jì)不及格人數(shù)超過(guò)10人的課程號(hào)。 SELECT cno FROM sc GROUP BY cno HAVING COUNT(degree<60)>10 (15)統(tǒng)計(jì)選修人數(shù)超過(guò)10人的課程號(hào)。 SELECT cno FROM sc GROUP BY cno HAVING COUNT(*)>10 (16
25、) 查詢(xún)軟件系的男生信息,查詢(xún)結(jié)果按出生日期升序排序,出生日期相同的按地址降序排序。 SELECT * FROM student WHERE ssex='男' and sdept='信息工程系' ORDER BY sbirthday,saddress DESC 四、思考題 (1) 聚集函數(shù)能否直接使用在SELECT子句、HAVING子句、WHERE子句、GROUP BY子句中? (2) WHERE子句與HAVING子句有何不同? 五、實(shí)驗(yàn)總結(jié): 1、收獲 2、存在的問(wèn)題 實(shí)驗(yàn)五 多表查詢(xún)
26、 一、實(shí)驗(yàn)?zāi)康? (1) 掌握SELECT語(yǔ)句在多表查詢(xún)中的應(yīng)用。 (2) 掌握多表連接的幾種連接方式及應(yīng)用。 二、實(shí)驗(yàn)要求 1、學(xué)生提前準(zhǔn)備好實(shí)驗(yàn)報(bào)告,預(yù)習(xí)并熟悉實(shí)驗(yàn)步驟; 2、遵守實(shí)驗(yàn)室紀(jì)律,在規(guī)定的時(shí)間內(nèi)完成要求的內(nèi)容; 三、實(shí)驗(yàn)內(nèi)容及步驟: 在Gradem或Gradem1數(shù)據(jù)庫(kù)中完成下面查詢(xún): (1) 查詢(xún)計(jì)算機(jī)工程系女學(xué)生的學(xué)生學(xué)號(hào)、姓名及考試成績(jī)。 SELECT student.sno,sname,sc.degree FROM student,sc WHERE student.sno=sc.sno and student.sdept='計(jì)算機(jī)工程系' and
27、student.ssex='女'; (2) 查詢(xún)“李勇”同學(xué)所選課程的成績(jī)。(不考慮重名) SELECT sc.degree FROM student,sc WHERE student.sno=sc.sno and student.sname='李勇' (3) 查詢(xún)“李新”老師所授課程的課程名稱(chēng)。 SELECT ame FROM teacher,teaching,course WHERE teacher.tno=teaching.tno and o=o and teacher.tname='李新' (4) 查詢(xún)女教師所授課程的課程號(hào)及課程名稱(chēng)。 SELECT ame,o
28、 FROM teacher,teaching,course WHERE teacher.tno=teaching.tno and o=o and teacher.tsex='女' (5) 查詢(xún)至少選修一門(mén)課程的女學(xué)生姓名。 SELECT student.sname FROM student,sc WHERE student.sno=sc.sno AND student.ssex='女' GROUP BY student.sno HAVING COUNT(o)>1 (6) 查詢(xún)姓“王”的學(xué)生所學(xué)的課程名稱(chēng)。 SELECT ame FROM student,s
29、c,course WHERE student.sno=sc.sno AND o=o AND sname='王%' (7) 查詢(xún)選修“數(shù)據(jù)庫(kù)”課程且成績(jī)?cè)?0~90分之間的學(xué)生學(xué)號(hào)及成績(jī)。 SELECT sc.degree,student.sno FROM student,sc,course WHERE student.sno=sc.sno AND o=o AND cname='數(shù)據(jù)庫(kù)' AND degree BETWEEN 80 AND 90 (8) 查詢(xún)課程成績(jī)及格的男同學(xué)的學(xué)生信息及課程號(hào)與成績(jī)。 SELECT student.*,o,sc.degree F
30、ROM student,sc,course WHERE student.sno=sc.sno AND o=o AND degree>60 AND ssex='男' (9) 查詢(xún)選修“c04”課程的學(xué)生的平均年齡。 SELECT AVG(year(NOW())-YEAR(sbirthday)) FROM student,sc,course WHERE student.sno=sc.sno AND o=o AND o='c04' (10) 查詢(xún)學(xué)習(xí)課程名為“數(shù)學(xué)”的學(xué)生學(xué)號(hào)和姓名。 SELECT student.sno,sname FROM studen
31、t,sc,course WHERE student.sno=sc.sno AND o=o AND cname='數(shù)學(xué)' (11) 查詢(xún)“錢(qián)軍”教師任課的課程號(hào),選修其課程的學(xué)生的學(xué)號(hào)、姓名和成績(jī)。 SELECT o,student.sno,sname,sc.degree FROM teacher,teaching,course,student,sc WHERE teacher.tno=teaching.tno and o=o and o=o and sc.sno=student.sno and teacher.tname='錢(qián)軍' (12)
32、 查詢(xún)?cè)诘?學(xué)期所開(kāi)課程的課程名稱(chēng)及成績(jī)。 SELECT ame,sc.degree FROM course,sc,teaching WHERE o=o and o=o and cterm='3' (13) 查詢(xún)“c02”號(hào)課程不及格的學(xué)生信息。 SELECT student.* FROM student,sc WHERE student.sno=sc.sno and cno='c02' and degree<60 and degree IS NULL (14) 查詢(xún)軟件系成績(jī)?cè)?0分以上的學(xué)生姓名、性別和課程名稱(chēng)。 SELECT stude
33、nt.sname,ssex,ame FROM student,sc,course WHERE student.sno=sc.sno and o=o and sdept='軟件系' AND degree>90 (15) 查詢(xún)同時(shí)選修了“c04”和“c02”課程的學(xué)生姓名和成績(jī)。 SELECT student.sname,sc.degree FROM student,sc,course WHERE student.sno=sc.sno and o=o and o ='c04' AND o ='c02' 四、思考題 (1) 指定一個(gè)較短的別名有什么好處?
34、 更容易辨識(shí) 方便查看 (2) 內(nèi)連接與外連接有什么區(qū)別? 內(nèi)連接: 只有兩個(gè)表相匹配的行才能在結(jié)果集中出現(xiàn) 外連接: 包括 左外連接(左邊的表不加限制) 右外連接(右邊的表不加限制) 全外連接(左右兩表都不加限制) (3) “=”與IN在什么情況下作用相同? 選值只有一個(gè) 五、實(shí)驗(yàn)總結(jié) 1、收獲 經(jīng)過(guò)近一個(gè)小時(shí)的調(diào)試,編寫(xiě),最終得出結(jié)論,并進(jìn)行書(shū)寫(xiě)。使我加深了對(duì)mysql進(jìn)一步學(xué)習(xí)和認(rèn)識(shí),更加熟練了對(duì)軟件的使用,收獲頗豐。 2、存在的問(wèn)題 對(duì)于語(yǔ)句的使用略顯生疏,需要進(jìn)一步的練習(xí),加深認(rèn)識(shí)。 實(shí)驗(yàn)六 嵌套查詢(xún)
35、 一、實(shí)驗(yàn)?zāi)康? (1) 掌握嵌套查詢(xún)的使用方法。 (2) 掌握相關(guān)子查詢(xún)與嵌套子查詢(xún)的區(qū)別。 (3) 掌握帶IN謂詞的子查詢(xún)的使用方法。 (4) 掌握帶比較運(yùn)算符的子查詢(xún)的使用方法。 二、實(shí)驗(yàn)要求 1、學(xué)生提前準(zhǔn)備好實(shí)驗(yàn)報(bào)告,預(yù)習(xí)并熟悉實(shí)驗(yàn)步驟; 2、遵守實(shí)驗(yàn)室紀(jì)律,在規(guī)定的時(shí)間內(nèi)完成要求的內(nèi)容; 三、實(shí)驗(yàn)內(nèi)容及步驟 在Grademanager數(shù)據(jù)庫(kù)中完成下面查詢(xún): (1) 查詢(xún)計(jì)算機(jī)系(CS)學(xué)生的學(xué)生學(xué)號(hào)、姓名及考試成績(jī)。 SELECT student.sno,student.sname,SC.degree FROM student,sc WHERE stude
36、nt.sno=sc.sno AND sdept='計(jì)算機(jī)系' ; (2) 查詢(xún)“李勇”同學(xué)所選課程的成績(jī)。 SELECT sc.degree FROM sc,student WHERE student.sno=sc.sno AND sname='李勇'; (3) 查詢(xún)“李新”老師所授課程的課程名稱(chēng)。 SELECT ame FROM course,teacher,teaching WHERE teacher.tno=teaching.tno AND o=o AND tname='李新'; (4) 查詢(xún)女教師所授課程的課程號(hào)及課程名稱(chēng)。 SELE
37、CT o,ame FROM teaching,teacher,course WHERE teacher.tno=teaching.tno AND o=o AND tsex='女'; (5) 查詢(xún)姓“王”的學(xué)生所學(xué)的課程名稱(chēng)。 SELECT ame FROM course,student,sc WHERE student.sno=sc.sno AND o=o AND sname LIKE '王%'; (6) 查詢(xún)選修“數(shù)據(jù)庫(kù)”課程且成績(jī)?cè)?0~90分之間的學(xué)生學(xué)號(hào)及成績(jī)。 SELECT sc.sno,sc.degree FROM course,sc
38、 WHERE o=o AND ame='數(shù)據(jù)庫(kù)' AND degree BETWEEN 80 AND 90; (7) 查詢(xún)選修“C04”課程的學(xué)生的平均年齡。 SELECT AVG((YEAR(CURDATE())-YEAR(student.sbirthday))) AS 選修C04課程的學(xué)生平均年齡 FROM student,sc WHERE student.sno=sc.sno AND o='c04' (8) 查詢(xún)學(xué)習(xí)課程名為“數(shù)學(xué)”的學(xué)生學(xué)號(hào)和姓名。 SELECT student.sno,student.sname FROM student,course
39、,sc WHERE student.sno=sc.sno AND o=o AND ame='數(shù)學(xué)' (9) 查詢(xún)“錢(qián)軍”教師任課的課程號(hào),選修其課程的學(xué)生的學(xué)號(hào)和成績(jī)。 SELECT cno,sno,degree FROM sc WHERE cno in(SELECT cno FROM teaching,teacher WHERE teacher.tno=teaching.tno AND tname='錢(qián)軍') (10) 查詢(xún)?cè)诘?學(xué)期所開(kāi)課程的課程號(hào)及成績(jī)。 SELECT cno,degree FROM sc WHERE cno in(SELECT c
40、no FROM teaching WHERE cterm='3')
(11) 查詢(xún)與“李勇”同一個(gè)系的同學(xué)姓名。
SELECT sname
from student
WHERE sdept in( SELECT sdept FROM student WHERE sname='李勇')
(12) 查詢(xún)學(xué)號(hào)比“劉晨”同學(xué)大,而出生日期比他小的學(xué)生姓名。
SELECT sname
from student
WHERE sno
41、l (SELECT year(sbirthday) from student WHERE sname='劉晨') (13) 查詢(xún)出生日期大于所有女同學(xué)出生日期的男同學(xué)的姓名及系別。 select sname,sdept from student where year(sbirthday)>all(select year(sbirthday)from student where ssex='女' ) and ssex='男' (14) 查詢(xún)成績(jī)比該課程平均成績(jī)高的學(xué)生的學(xué)號(hào)及成績(jī)。 select sno,degree from sc where degree >=
42、(select avg(degree) from student,sc where student.sno=sc.sno) (15) 查詢(xún)不講授“C01”課的教師姓名。 select tname from teacher ,teaching where teacher.tno=teaching.tno and cno !='c01' (16) 查詢(xún)沒(méi)有選修“C02”課程的學(xué)生學(xué)號(hào)及姓名。 select student.sno,sname from student,sc where student.sno=sc.sno and cno!='C02' (1
43、7) 查詢(xún)選修了“數(shù)據(jù)庫(kù)”課程的學(xué)生學(xué)號(hào)、姓名及系別。 select sname,student.sno,sdept from student,sc,course where student.sno=sc.sno and o=o and cname='數(shù)據(jù)庫(kù)' (18) 查詢(xún)“C02”號(hào)課程不及格的學(xué)生信息。 select * from student,sc where student.sno=sc.sno and cno='c02' and degree<60 四、思考題 (1) 子查詢(xún)一般分為幾種? 4種 (2) 相關(guān)子查詢(xún)的執(zhí)行過(guò)程
44、是什么? 依賴(lài)于父查詢(xún)的查詢(xún) 五、實(shí)驗(yàn)總結(jié) 1、收獲 進(jìn)一步的練習(xí)了嵌套查詢(xún)和奪標(biāo)連接,學(xué)到更多的知識(shí),受益良多。 2、 存在的問(wèn)題 還是不夠熟悉,需要進(jìn)一步的學(xué)習(xí)和復(fù)習(xí) 實(shí)驗(yàn)七 數(shù)據(jù)更新 一、實(shí)驗(yàn)?zāi)康模? (1) 掌握利用INSERT命令實(shí)現(xiàn)對(duì)表數(shù)據(jù)的插入操作。 (2) 掌握利用UPDATE命令實(shí)現(xiàn)對(duì)表數(shù)據(jù)的修改操作。 (3) 掌握利用DELETE命令實(shí)現(xiàn)對(duì)表數(shù)據(jù)的刪除操作。 二、實(shí)驗(yàn)要求 1、學(xué)生提前準(zhǔn)備好實(shí)驗(yàn)報(bào)告,預(yù)習(xí)并熟悉實(shí)驗(yàn)步驟; 2、遵守實(shí)驗(yàn)室紀(jì)律,在規(guī)定的時(shí)間內(nèi)完成要求的內(nèi)容; 三、實(shí)驗(yàn)內(nèi)容及步驟 在Gradem或Gradem1
45、數(shù)據(jù)庫(kù)中完成下面操作: 注意:利用SELECT INTO…命令備份Student、SC、Course這3個(gè)表,備份表名自定。 (1) 向Student表中插入記錄("","張靜","1981-3-21","女","CS","電子商務(wù)")。 INSERT INTO student(sno,sname,sbirthday,ssex,sdept,speciality) VALUES('','張靜','1982-3-21','女','CS','電子商務(wù)'); (2) 插入學(xué)號(hào)為“”、姓名為“李四”的學(xué)生信息。 INSERT INTO student(sno,sname)
46、VALUES('','李四'); (3) 把計(jì)算機(jī)系的學(xué)生記錄保存到表TS中(TS表已存在,表結(jié)構(gòu)與Student表相同)。 INSERT INTO ts SELECT * FROM student WHERE sdept='計(jì)算機(jī)' (4) 將學(xué)號(hào)為“”的學(xué)生姓名改為“張華”,系別改為“CS”,專(zhuān)業(yè)改為“多媒體技術(shù)”。 UPDATE student SET sname='張華',sdept='cs',speciality='多媒體技術(shù)' WHERE sno=''; (5) 將“李勇”同學(xué)的專(zhuān)業(yè)改為“計(jì)算機(jī)信息管理”。 UPDATE student SET
47、 speciality='計(jì)算機(jī)管理' WHERE sname='李勇'; (6) 把選修了“數(shù)據(jù)庫(kù)”課程而成績(jī)不及格的學(xué)生的成績(jī)?nèi)臑榭罩?NULL)。 UPDATE SC SET degree='NULL' WHERE cno in(SELECT cno from course WHERE cname='數(shù)據(jù)庫(kù)') AND degree<60 (7) 刪除學(xué)號(hào)為“”的學(xué)生記錄。 DELETE FROM student WHERE sno='' (8) 刪除“計(jì)算機(jī)系”所有學(xué)生的選課記錄。 DELETE FROM sc WHERE sno in(S
48、ELECT sno from student WHERE sdept='計(jì)算機(jī)系') (9) 刪除SC表中尚無(wú)成績(jī)的選課記錄。 DELETE FROM sc WHERE degree='NULL' (10) 把“張晨”同學(xué)的成績(jī)記錄全部刪除。 DELETE FROM sc WHERE sno in(SELECT sno FROM student WHERE sname='張晨') 四、思考題 (1) DROP命令和DELETE命令的本質(zhì)區(qū)別是什么? DROP刪除整個(gè)表,表結(jié)構(gòu)和數(shù)據(jù) DELETE刪除表的某一行,不刪除表結(jié)構(gòu) (2) 利用INS
49、ERT、UPDATE和DELETE命令可以同時(shí)對(duì)多個(gè)表進(jìn)行操作嗎? 不能,只能單個(gè)表 五、實(shí)驗(yàn)總結(jié): 1、收獲 進(jìn)一步的熟悉了mysql的運(yùn)用,記住了很多插入,修改,刪除的語(yǔ)句。 2、存在的問(wèn)題 不夠熟練,需要背語(yǔ)句結(jié)構(gòu)。 實(shí)驗(yàn)八 視圖 一、實(shí)驗(yàn)?zāi)康模? (1) 理解視圖的概念。 (2) 掌握創(chuàng)建、更改、刪除視圖的方法。 (3) 掌握使用視圖來(lái)訪問(wèn)數(shù)據(jù)的方法。 二、實(shí)驗(yàn)要求 1、學(xué)生提前準(zhǔn)備好實(shí)驗(yàn)報(bào)告,預(yù)習(xí)并熟悉實(shí)驗(yàn)步驟; 2、遵守實(shí)驗(yàn)室紀(jì)律,在規(guī)定的時(shí)間內(nèi)完成要求的內(nèi)容; 三、實(shí)驗(yàn)內(nèi)容及步驟 1) 使用SQL語(yǔ)句創(chuàng)建、管理視圖 (1)
50、 創(chuàng)建視圖。 ① 創(chuàng)建一個(gè)名為sc_view1的視圖,從數(shù)據(jù)庫(kù)gradem的sc表中查詢(xún)出成績(jī)大于90分的所有學(xué)生選修成績(jī)的信息。 ② 創(chuàng)建一個(gè)名為sc_view2的視圖,從數(shù)據(jù)庫(kù)gradem的sc表中查詢(xún)出成績(jī)小于80分的所有學(xué)生的學(xué)號(hào)、課程號(hào)、成績(jī)等信息。 ③ 創(chuàng)建一個(gè)名為sc_view3的視圖,由數(shù)據(jù)庫(kù)gradem的student、course、sc表創(chuàng)建一個(gè)顯示“”班學(xué)生選修課程(包括學(xué)生姓名、課程名稱(chēng)、成績(jī)等信息)的視圖。 ④ 創(chuàng)建一個(gè)從視圖sc_view1中查詢(xún)出課程號(hào)“c01”的所有學(xué)生的視圖。 (2)
51、修改視圖的定義。 修改視圖sc_view1,使其從數(shù)據(jù)庫(kù)gradem的sc表中查詢(xún)出成績(jī)大于90分且第3學(xué)期的所有學(xué)生選修成績(jī)的信息。 (3) 視圖的刪除。 ① 將視圖sc_view1刪除。 (4) 管理視圖中的數(shù)據(jù)。 ① 從視圖sc_view2中查詢(xún)出學(xué)號(hào)為“”、課程號(hào)為“a01”的學(xué)生選修成績(jī)的信息。 ② 將視圖sc_view2中學(xué)號(hào)為“”、課程號(hào)為“c02”的成績(jī)改為87。 ③ 從視圖sc_view2中將學(xué)號(hào)為“”、課程號(hào)為“a01”的學(xué)生信息刪除。 四、思考題 向視圖中插入的數(shù)據(jù)能進(jìn)入到基本表中去嗎?修改基本表的
52、數(shù)據(jù)會(huì)自動(dòng)反映到相應(yīng)的視圖中去嗎? 五、實(shí)驗(yàn)總結(jié) 1、收獲 2、存在的問(wèn)題 實(shí)驗(yàn)九 數(shù)據(jù)庫(kù)的安全性 一、實(shí)驗(yàn)?zāi)康模? (1) 理解My SQL的權(quán)限系統(tǒng)的工作原理。 (2) 理解My SQL賬戶(hù)及權(quán)限的概念。 (3) 掌握管理My SQL賬戶(hù)和權(quán)限的方法。 (4) 學(xué)會(huì)創(chuàng)建和刪除普通用戶(hù)的方法和密碼管理的方法。 (5) 學(xué)會(huì)如何進(jìn)行權(quán)限管理。 二、實(shí)驗(yàn)要求 1、學(xué)生提前準(zhǔn)備好實(shí)驗(yàn)報(bào)告,預(yù)習(xí)并熟悉實(shí)驗(yàn)步驟; 2、遵守實(shí)驗(yàn)室紀(jì)律,在規(guī)定的時(shí)間內(nèi)完成要求的內(nèi)容; 三、實(shí)驗(yàn)內(nèi)容及步驟 1)利用Navicat圖形工具實(shí)現(xiàn)下列操作: ① 使用root用
53、戶(hù)創(chuàng)建aric用戶(hù),初始密碼設(shè)置為abcdef。讓該用戶(hù)對(duì)gradem數(shù)據(jù)庫(kù)擁有SELECT、UPDATE、DROP權(quán)限。 ②用aric用戶(hù)登錄,利用aric用戶(hù)來(lái)驗(yàn)證自己是否有GRANT權(quán)限和CREATE權(quán)限。 ③用root用戶(hù)登錄,收回aric用戶(hù)的刪除權(quán)限。 2) 利用命令實(shí)現(xiàn)下列操作: 進(jìn)行本實(shí)驗(yàn)的準(zhǔn)備工作是:以root的身份完成了表student、course、sc的創(chuàng)建。 (一) 授權(quán) 1.以root的身份登陸mysql,創(chuàng)建用戶(hù)u1+學(xué)號(hào)后四位,u2+學(xué)號(hào)后四位,u3+學(xué)號(hào)后四位,u4+學(xué)號(hào)后四位。 2.用戶(hù)root把查詢(xún)Student表權(quán)限授給用
54、戶(hù)u1+學(xué)號(hào)后四位,驗(yàn)證u1能夠執(zhí)行相應(yīng)的查詢(xún)。 1) 查詢(xún)所有姓劉的學(xué)生的姓名、學(xué)號(hào)和性別。 2) 查詢(xún)名字中第二字為“勇”字的學(xué)生的姓名和學(xué)號(hào)。 3. 用戶(hù)root授予用戶(hù)u4+學(xué)號(hào)后四位對(duì)student表的insert權(quán)限,并允許此權(quán)限傳播。 4. 用戶(hù)u4+學(xué)號(hào)后四位將對(duì)表student的insert權(quán)限授予u3+學(xué)號(hào)后四位,并允許將權(quán)限轉(zhuǎn)授給其他用戶(hù)(例如:u3+學(xué)號(hào)后四位),描述過(guò)程及操作。 (二) 回收權(quán)限 1. 收回所有用戶(hù)對(duì)表sc的查詢(xún)權(quán)限 2.
55、 收回用戶(hù)u4對(duì)student表的insert權(quán)限 3. 在回收權(quán)限之后驗(yàn)證用戶(hù)是否真正喪失了該權(quán)限(查詢(xún)表,插入記錄),描述過(guò)程及提示信息。 四、實(shí)驗(yàn)總結(jié) 1、收獲 2、 存在的問(wèn)題 實(shí)驗(yàn)十 數(shù)據(jù)庫(kù)的完整性 一、實(shí)驗(yàn)?zāi)康模? (1) 理解My SQL的實(shí)體完整性的定義。 (2) 理解My SQL的參照完整性的定義。 (3) 理解My SQL的自定義完整性的定義。 二、實(shí)驗(yàn)要求 1、學(xué)生提前準(zhǔn)備好實(shí)驗(yàn)報(bào)告,預(yù)習(xí)并熟悉實(shí)驗(yàn)步驟; 2、遵守實(shí)驗(yàn)室紀(jì)律,在規(guī)定的時(shí)間內(nèi)完成要求的內(nèi)容; 三、 實(shí)驗(yàn)內(nèi)容及步驟
56、 (一) 實(shí)體完整性 1.建立部門(mén)表DEPT(deptno,deptname),部門(mén)編號(hào)Deptno列為主碼。寫(xiě)出兩種方式:一種在列級(jí)定義主碼,一種是在表級(jí)定義主碼。 2.建立成績(jī)表sc1(sno,cno,grade),將sno、cno屬性組定義為碼。 (二) 參照完整性 1. 建立成績(jī)表sc2(sno,cno,grade),(sno、cno)是主碼,sno、cno分別參照引用student表上的sno和course表的cno主碼。
57、 2.insert操作驗(yàn)證外鍵約束 (1)在sc2中插入數(shù)據(jù)(’1001’,’01’,95),假設(shè)cno=’01’的數(shù)據(jù)存在,而sno=’1001’的數(shù)據(jù)不存在,執(zhí)行結(jié)果是什么? (2)在student表中添加sno=’1001’的數(shù)據(jù),然后繼續(xù)執(zhí)行(1)中的插入數(shù)據(jù)操作,執(zhí)行結(jié)果是什么? 3、delete操作驗(yàn)證外鍵約束 (1)MySQL在外鍵的刪除上有RESTRICT、NO ACTION(類(lèi)似RESTRICT)、CASCADE和SET NULL四種行為,默認(rèn)是那種行為?在默認(rèn)情況下,對(duì)student表中的sno=’1001
58、’的記錄,執(zhí)行刪除操作時(shí),執(zhí)行結(jié)果是什么?若執(zhí)意要?jiǎng)h除該條記錄,需要如何操作? (2)SET NULL指當(dāng)刪除主表中被引用列的數(shù)據(jù)時(shí),將子表中相應(yīng)引用列的值設(shè)置為NULL值。SET NULL有個(gè)前提就是外鍵引用列必須可以設(shè)置為NULL。 把sc表的sno外鍵約束刪除,將外鍵約束的刪除行為改為SET NULL,并驗(yàn)證該刪除策略。 (3)CASCADE指當(dāng)刪除主表中被引用列的數(shù)據(jù)時(shí),級(jí)聯(lián)刪除子表中相應(yīng)的數(shù)據(jù)行。 把sc表的sno外鍵約束刪除,將外鍵約束的刪除行為改為CASCADE。,
59、并驗(yàn)證該刪除策略。 (三)自定義完整性 1.修改部門(mén)表DEPT,要求添加約束constraint c1:部門(mén)名稱(chēng)Dname列取值唯一。 2.建立學(xué)生登記表Student2,要求學(xué)號(hào)在9000至9999之間(約束名默認(rèn)),年齡<29(約束名為a2),性別只能是’男’或’女’ (約束名默認(rèn)),姓名非空。 3.修改表Student的結(jié)構(gòu),由年齡小于29改為小于40。(先刪除原有的約束,再添加新約束) 四、實(shí)驗(yàn)總結(jié) 1、收獲 2、存在的問(wèn)題 專(zhuān)心---專(zhuān)注---專(zhuān)業(yè)
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案