《數(shù)據(jù)庫原理及應(yīng)用實(shí)驗(yàn)》
《《數(shù)據(jù)庫原理及應(yīng)用實(shí)驗(yàn)》》由會(huì)員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫原理及應(yīng)用實(shí)驗(yàn)》(35頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 《數(shù)據(jù)庫原理與應(yīng)用實(shí)驗(yàn)》 實(shí)驗(yàn)報(bào)告冊(cè) 學(xué)年 第 學(xué)期 學(xué) 院: 專 業(yè): 年 級(jí): 姓 名: 學(xué) 號(hào): 任課教師: MySQL+Navicat安裝步驟與下載地址 百度地址: Navicat配置與簡單使用 百度地址: 本文檔所書寫的代碼,為本人純手工敲打,并且通過軟件測試成功,歡迎大家進(jìn)行學(xué)習(xí),如有錯(cuò)誤,可聯(lián)系本人郵箱2960223883@實(shí)驗(yàn)一 創(chuàng)建和維護(hù)數(shù)據(jù)庫 一、
2、實(shí)驗(yàn)?zāi)康? (1)掌握在Windows 平臺(tái)下安裝與配置MySQL 5.5 的方法。 (2)掌握啟動(dòng)服務(wù)并登錄MySQL 5.5 數(shù)據(jù)庫的方法和步驟。 (3)掌握MySQL 數(shù)據(jù)庫的相關(guān)概念。 (4)掌握使用Navicat 工具和SQL 語句創(chuàng)建數(shù)據(jù)庫的方法。 (5)掌握使用Navicat 工具和SQL 語句刪除數(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)在Windows 平臺(tái)下安裝與配置MySQL 5.5.36 版。 (2)在服務(wù)對(duì)話框中,手動(dòng)啟動(dòng)或者關(guān)閉
3、MySQL 服務(wù)。 (3)使用Net 命令啟動(dòng)或關(guān)閉MySQL 服務(wù)。 (4)分別用Navicat 工具和命令行方式登錄MySQL。 (5)在my.ini 文件中將數(shù)據(jù)庫的存儲(chǔ)位置改為D:\MYSQL\DATA。 (6)創(chuàng)建數(shù)據(jù)庫。 ① 使用Navicat 創(chuàng)建學(xué)生信息管理數(shù)據(jù)庫gradem。 ② 使用SQL 語句創(chuàng)建數(shù)據(jù)庫MyDB。 (7)刪除數(shù)據(jù)庫。 ① 使用Navicat 圖形工具刪除gradem 數(shù)據(jù)庫。 ② 使用SQL 語句刪除MyDB 數(shù)據(jù)庫。 四、思考題 常見的數(shù)據(jù)庫產(chǎn)品有哪些? 五、實(shí)驗(yàn)總結(jié)
4、 1、收獲 2、存在的問題 實(shí)驗(yàn)二 管理表 一、實(shí)驗(yàn)?zāi)康? (1) 掌握表的基礎(chǔ)知識(shí)。 (2) 掌握使用Navicat管理工具和SQL語句創(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ù)庫中創(chuàng)建表2.1~表2.5所示結(jié)構(gòu)的表。 表2.1 student表的表結(jié)構(gòu) 字段名稱 數(shù)據(jù)類型 長度 小數(shù)位數(shù) 是否允許NULL值 說明 sno char 10
5、 否 主碼 sname varchar 8 是 ssex char 2 是 sbirthday datetime 是 saddress varchar 50 是 sdept char 16 是 speciality varchar 20 是 表2.2 course表(課程名稱表)的表結(jié)構(gòu) 字段名稱 數(shù)據(jù)類型 長度 小數(shù)位數(shù) 是否允許NULL值 說明 cno char 5 否 主碼 cname varchar 20 否 表2.3 sc表(成績表
6、)的表結(jié)構(gòu) 字段名稱 數(shù)據(jù)類型 長度 小數(shù)位數(shù) 是否允許NULL值 說明 sno char 10 否 組合主碼、外碼 cno char 5 否 組合主碼、外碼 degree decimal 4 1 是 1~100 表2.4 teacher表(教師表)的表結(jié)構(gòu) 字段名稱 數(shù)據(jù)類型 長度 小數(shù)位數(shù) 是否允許NULL值 說明 tno char 3 否 主碼 tname varchar 8 是 tsex char 2 是 tbirthday date 是 tdept
7、 char 16 是 表2.5 teaching表(授課表)的表結(jié)構(gòu) 字段名稱 數(shù)據(jù)類型 長度 小數(shù)位數(shù) 是否允許NULL值 說明 cno char 5 否 組合主碼、外碼 tno char 3 否 組合主碼、外碼 cterm tinyint 1 0 是 1~10 (2) 向表2.1至表2.5輸入數(shù)據(jù)記錄,見表2.6~表2.10。 表2.6 學(xué)生關(guān)系表student sno sname ssex sbirthday saddress sdept speciality 20050101 李勇 男
8、 1987-01-12 山東濟(jì)南 計(jì)算機(jī)工程系 計(jì)算機(jī)應(yīng)用 20050201 劉晨 女 1988-06-04 山東青島 信息工程系 電子商務(wù) 20050301 王敏 女 1989-12-23 江蘇蘇州 數(shù)學(xué)系 數(shù)學(xué) 20050202 張立 男 1988-08-25 河北唐山 信息工程系 電子商務(wù) 表2.7 課程關(guān)系表course cno cname cno cname C01 數(shù)據(jù)庫 C03 信息系統(tǒng) C02 數(shù)學(xué) C04 操作系統(tǒng) 表2.8 成績表sc sno cno degree 20050101
9、 C01 92 20050101 C02 85 20050101 C03 88 20050201 C02 90 20050201 C03 80 表2.9 教師表teacher tno tname tsex tbirthday tdept 101 李新 男 1977-01-12 計(jì)算機(jī)工程系 102 錢軍 女 1968-06-04 計(jì)算機(jī)工程系 201 王小花 女 1979-12-23 信息工程系 202 張小青 男 1968-08-25 信息工程系 表2.10 授課表teaching cno tno
10、cterm C01 101 2 C02 102 1 C03 201 3 C04 202 4 (3)在navicat下修改表結(jié)構(gòu)。 ① 向student表中增加“入學(xué)時(shí)間”列,其數(shù)據(jù)類型為日期時(shí)間型。 ② 將student表中的sdept字段長度改為20。 ③ 將student表中的speciality字段刪除。 ④ 刪除student表。 (4) 利用SQL命令(create table、alter table、drop table)完成對(duì)表的操作 ①利用create talbe 命令完成student表和course表的定義。 ②利用alt
11、er table、drop table命令實(shí)現(xiàn)(3)中的所有任務(wù)。 四、思考題 (1) 在定義基本表語句時(shí),NOT NULL參數(shù)的作用是什么? (2) 主碼可以建立在“值可以為NULL”的列上嗎? 五、實(shí)驗(yàn)總結(jié): 1、收獲 2、存在的問題 實(shí)驗(yàn)三 簡單查詢——單表無條件和有條件查詢 一、實(shí)驗(yàn)?zāi)康? (1) 掌握SELECT語句的基本用法。 (2) 使用WHERE子句進(jìn)行有條件的查詢。 (3) 掌握使用IN和NOT IN,BETWEEN…AND和NOT BETWEEN
12、…AND來縮小查詢范圍的方法。 (4) 利用LIKE子句實(shí)現(xià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)容及步驟 在上次實(shí)驗(yàn)建立的Gradem或Gradem1數(shù)據(jù)庫中完成下面查詢: (1) 查詢所有學(xué)生的基本信息、所有課程的基本信息和所有學(xué)生的成績信息(用三條SQL語句)。 SELECT * FROM student; SELECT * FROM course; SELECT * FROM sc; (2) 查詢所有學(xué)生的學(xué)號(hào)、姓名、性別和出生日期。 SEL
13、ECT sno,sname,ssex,sbirthday FROM student; (3) 查詢所有課程的課程名稱。 SELECT cname FROM course (4) 查詢前10門課程的課號(hào)及課程名稱。 SELECT cno,cname FROM course WHERE cno<=10 (5) 查詢所有學(xué)生的姓名及年齡。 SELECT sname ,year(now())-year(sbirthday) FROM student; (6) 查詢所有年齡大于18歲的女生的學(xué)號(hào)和姓名。 SELECT sno,sname FROM stud
14、ent WHERE ssex=女a(chǎn)nd year(now())-year(sbirthday)>18 (7) 查詢所有男生的信息。 SELECT * FROM student,teacher WHERE ssex=男and tsex=男 (8) 查詢所有任課教師的姓名(Tname)和所在系別(Tdept)。 SELECT tname,tdept FROM teacher (9) 查詢“電子商務(wù)”專業(yè)的學(xué)生姓名、性別和出生日期。 SELECT sname,ssex,sbirthday FROM student WHERE sdept=電子商務(wù) (10) 查
15、詢Student表中的所有系名。 SELECT sdept FROM student (11) 查詢“C01”課程的開課學(xué)期。 SELECT cterm FROM teaching WHERE cno=c01 (12) 查詢成績?cè)?0~90分之間的學(xué)生學(xué)號(hào)及課號(hào)。 SELECT sno,cno FROM sc WHERE degree BETWEEN 80 and 90 (13) 查詢?cè)?970年1月1日之前出生的男教師信息。 SELECT * FROM teacher WHERE tbirthday<1970-01-01and tsex=’男’;
16、 (14) 輸出有成績的學(xué)生學(xué)號(hào)。 SELECT sno FROM sc WHERE degree is NOT NULL; (15) 查詢所有姓“劉”的學(xué)生信息。 SELECT * FROM student WHERE sname LIKE劉% (16) 查詢生源地不是山東省的學(xué)生信息。 SELECT * FROM student WHERE saddress NOT LIKE山東% (17) 查詢成績?yōu)?9分、89分或99分的記錄。 SELECT * FROM sc WHERE degree=79 or degree=89 or degree=99
17、 (18) 查詢名字中第二個(gè)字是“小”字的男生的學(xué)生姓名和地址。 SELECT sname,saddress FROM student WHERE ssex=男 and sname LIKE_小 (19) 查詢名稱以“計(jì)算機(jī)_”開頭的課程名稱。 SELECT cname FROM course WHERE cname LIKE計(jì)算機(jī)_ (20) 查詢計(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能用“=”來代替嗎? 不能 is是用來判斷null的,比如 remark is
19、null 或者remark is not null =是用來直接比較值的。 4、關(guān)鍵字ALL和DISTINCT有什么不同的含義? ALL表示所有的字段,有重復(fù)的2條,2 條都顯示, DISTINCT表示如果有重復(fù)的,只取一條。 五、實(shí)驗(yàn)總結(jié): 1、收獲 經(jīng)過這節(jié)數(shù)據(jù)庫課程的學(xué)習(xí),我基本上掌握了創(chuàng)建數(shù)據(jù)庫以及對(duì)數(shù)據(jù)庫的操作的基礎(chǔ)知識(shí)。學(xué)習(xí)了SQL數(shù)據(jù)庫中的增、刪、改、查等功能,數(shù)據(jù)庫這門課涉及到以前的知識(shí)不多,是一門從頭學(xué)起的課程,即使基礎(chǔ)不是很好,只要認(rèn)真聽講、復(fù)習(xí)功課,還是一門比較容易掌握的課。 2、存在的問題 不夠熟悉對(duì)數(shù)據(jù)庫系統(tǒng)的操作,不會(huì)運(yùn)用快捷鍵,需要更多的練習(xí)
20、和操作。 實(shí)驗(yàn)四 簡單查詢——分組與排序 一、實(shí)驗(yàn)?zāi)康模? (1) 利用GROUP BY子句對(duì)查詢結(jié)果分組。 (2) 利用ORDER BY子句對(duì)查詢結(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ù)庫中完成下面查詢: (1) 統(tǒng)計(jì)有學(xué)生選修的課程的門數(shù)。 SELECT COUNT(DISTINCT cno) FROM course (2) 計(jì)算“c01”課程的平均成績。 SELECT AVG(de
21、gree) FROM sc WHERE cno=c01; (3) 查詢選修了“c03”課程的學(xué)生的學(xué)號(hào)及其成績,查詢結(jié)果按分?jǐn)?shù)降序排列。 SELECT sno,degree FROM sc WHERE cno=c03 ORDER BY degree DESC; (4) 查詢各個(gè)課程號(hào)及相應(yīng)的選課人數(shù)。 SELECT cno,COUNT(sno) FROM sc GROUP BY cno (5) 統(tǒng)計(jì)每門課程的選課人數(shù)和最高分。 SELECT COUNT(sno),MAX(degree) FROM sc GROUP BY cno (6) 統(tǒng)計(jì)每個(gè)學(xué)生的選
22、課門數(shù)和考試總成績,并按選課門數(shù)降序排列。 SELECT COUNT(sno),sum(degree) FROM sc GROUP BY sno ORDER BY COUNT(sno) DESC; (7) 查詢選修了3門以上課程的學(xué)生學(xué)號(hào)。 SELECT sno FROM sc GROUP BY sno HAVING COUNT(cno)>3 (8) 查詢成績不及格的學(xué)生學(xué)號(hào)及課號(hào),并按成績降序排列。 SELECT sno,cno FROM sc WHERE degree<60 ORDER BY degree DESC (9) 查詢
23、至少選修一門課程的學(xué)生學(xué)號(hào)。 SELECT sno FROM 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
24、(*) From student Group by saddress ,ssex (13) 統(tǒng)計(jì)各系的老師人數(shù),并按人數(shù)升序排序。 SELECT tdept ,COUNT(*) FROM teacher GROUP BY tdept ORDER BY COUNT(*) DESC (14) 統(tǒng)計(jì)不及格人數(shù)超過10人的課程號(hào)。 SELECT cno FROM sc GROUP BY cno HAVING COUNT(degree<60)>10 (15)統(tǒng)計(jì)選修人數(shù)超過10人的課程號(hào)。 SELECT cno FROM sc GROUP BY cno HA
25、VING COUNT(*)>10 (16) 查詢軟件系的男生信息,查詢結(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、收獲
26、 2、存在的問題 實(shí)驗(yàn)五 多表查詢 一、實(shí)驗(yàn)?zāi)康? (1) 掌握SELECT語句在多表查詢中的應(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ù)庫中完成下面查詢: (1) 查詢計(jì)算機(jī)工程系女學(xué)生的學(xué)生學(xué)號(hào)、姓名及考試成績。 SELECT student.sno,sname,sc.degree FROM student,sc WHERE student.sno=sc.sno and st
27、udent.sdept=計(jì)算機(jī)工程系 and student.ssex=女; (2) 查詢“李勇”同學(xué)所選課程的成績。(不考慮重名) SELECT sc.degree FROM student,sc WHERE student.sno=sc.sno and student.sname=李勇 (3) 查詢“李新”老師所授課程的課程名稱。 SELECT ame FROM teacher,teaching,course WHERE teacher.tno=teaching.tno and o=o and teacher.tname=李新 (4) 查詢女教師所授課程的課程號(hào)及課程
28、名稱。 SELECT ame,o FROM teacher,teaching,course WHERE teacher.tno=teaching.tno and o=o and teacher.tsex=女 (5) 查詢至少選修一門課程的女學(xué)生姓名。 SELECT student.sname FROM student,sc WHERE student.sno=sc.sno AND student.ssex=女 GROUP BY student.sno HAVING COUNT(o)>1 (6) 查詢姓“王”的學(xué)生所學(xué)的課程名稱。 SELECT ame F
29、ROM student,sc,course WHERE student.sno=sc.sno AND o=o AND sname=王% (7) 查詢選修“數(shù)據(jù)庫”課程且成績?cè)?0~90分之間的學(xué)生學(xué)號(hào)及成績。 SELECT sc.degree,student.sno FROM student,sc,course WHERE student.sno=sc.sno AND o=o AND cname=數(shù)據(jù)庫 AND degree BETWEEN 80 AND 90 (8) 查詢課程成績及格的男同學(xué)的學(xué)生信息及課程號(hào)與成績。 SELECT student.*,o,sc.
30、degree FROM student,sc,course WHERE student.sno=sc.sno AND o=o AND degree>60 AND ssex=男 (9) 查詢選修“c04”課程的學(xué)生的平均年齡。 SELECT AVG(year(NOW())-YEAR(sbirthday)) FROM student,sc,course WHERE student.sno=sc.sno AND o=o AND o=c04 (10) 查詢學(xué)習(xí)課程名為“數(shù)學(xué)”的學(xué)生學(xué)號(hào)和姓名。 SELECT student.sno,sname FROM s
31、tudent,sc,course WHERE student.sno=sc.sno AND o=o AND cname=數(shù)學(xué) (11) 查詢“錢軍”教師任課的課程號(hào),選修其課程的學(xué)生的學(xué)號(hào)、姓名和成績。 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=錢軍 (12
32、) 查詢?cè)诘?學(xué)期所開課程的課程名稱及成績。 SELECT ame,sc.degree FROM course,sc,teaching WHERE o=o and o=o and cterm=3 (13) 查詢“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) 查詢軟件系成績?cè)?0分以上的學(xué)生姓名、性別和課程名稱。 SELECT student.
33、sname,ssex,ame FROM student,sc,course WHERE student.sno=sc.sno and o=o and sdept=軟件系 AND degree>90 (15) 查詢同時(shí)選修了“c04”和“c02”課程的學(xué)生姓名和成績。 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è)較短的別名有什么好處? 更容易辨識(shí)
34、 方便查看 (2) 內(nèi)連接與外連接有什么區(qū)別? 內(nèi)連接: 只有兩個(gè)表相匹配的行才能在結(jié)果集中出現(xiàn) 外連接: 包括 左外連接(左邊的表不加限制) 右外連接(右邊的表不加限制) 全外連接(左右兩表都不加限制) (3) “=”與IN在什么情況下作用相同? 選值只有一個(gè) 五、實(shí)驗(yàn)總結(jié) 1、收獲 經(jīng)過近一個(gè)小時(shí)的調(diào)試,編寫,最終得出結(jié)論,并進(jìn)行書寫。使我加深了對(duì)mysql進(jìn)一步學(xué)習(xí)和認(rèn)識(shí),更加熟練了對(duì)軟件的使用,收獲頗豐。 2、存在的問題 對(duì)于語句的使用略顯生疏,需要進(jìn)一步的練習(xí),加深認(rèn)識(shí)。 實(shí)驗(yàn)六 嵌套查詢 一、實(shí)驗(yàn)?zāi)康?
35、 (1) 掌握嵌套查詢的使用方法。 (2) 掌握相關(guān)子查詢與嵌套子查詢的區(qū)別。 (3) 掌握帶IN謂詞的子查詢的使用方法。 (4) 掌握帶比較運(yù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ù)庫中完成下面查詢: (1) 查詢計(jì)算機(jī)系(CS)學(xué)生的學(xué)生學(xué)號(hào)、姓名及考試成績。 SELECT student.sno,student.sname,SC.degree FROM student,sc WHERE student.sno=sc
36、.sno AND sdept=計(jì)算機(jī)系 ; (2) 查詢“李勇”同學(xué)所選課程的成績。 SELECT sc.degree FROM sc,student WHERE student.sno=sc.sno AND sname=李勇; (3) 查詢“李新”老師所授課程的課程名稱。 SELECT ame FROM course,teacher,teaching WHERE teacher.tno=teaching.tno AND o=o AND tname=李新; (4) 查詢女教師所授課程的課程號(hào)及課程名稱。 SELECT o,ame FROM
37、teaching,teacher,course WHERE teacher.tno=teaching.tno AND o=o AND tsex=女; (5) 查詢姓“王”的學(xué)生所學(xué)的課程名稱。 SELECT ame FROM course,student,sc WHERE student.sno=sc.sno AND o=o AND sname LIKE 王%; (6) 查詢選修“數(shù)據(jù)庫”課程且成績?cè)?0~90分之間的學(xué)生學(xué)號(hào)及成績。 SELECT sc.sno,sc.degree FROM course,sc WHERE o=o AND ame=
38、數(shù)據(jù)庫 AND degree BETWEEN 80 AND 90; (7) 查詢選修“C04”課程的學(xué)生的平均年齡。 SELECT AVG((YEAR(CURDATE())-YEAR(student.sbirthday))) AS 選修C04課程的學(xué)生平均年齡 FROM student,sc WHERE student.sno=sc.sno AND o=c04 (8) 查詢學(xué)習(xí)課程名為“數(shù)學(xué)”的學(xué)生學(xué)號(hào)和姓名。 SELECT student.sno,student.sname FROM student,course,sc WHERE student.sno=
39、sc.sno AND o=o AND ame=數(shù)學(xué) (9) 查詢“錢軍”教師任課的課程號(hào),選修其課程的學(xué)生的學(xué)號(hào)和成績。 SELECT cno,sno,degree FROM sc WHERE cno in(SELECT cno FROM teaching,teacher WHERE teacher.tno=teaching.tno AND tname=錢軍) (10) 查詢?cè)诘?學(xué)期所開課程的課程號(hào)及成績。 SELECT cno,degree FROM sc WHERE cno in(SELECT cno FROM teaching WHERE cter
40、m=3)
(11) 查詢與“李勇”同一個(gè)系的同學(xué)姓名。
SELECT sname
from student
WHERE sdept in( SELECT sdept FROM student WHERE sname=李勇)
(12) 查詢學(xué)號(hào)比“劉晨”同學(xué)大,而出生日期比他小的學(xué)生姓名。
SELECT sname
from student
WHERE sno
41、udent WHERE sname=劉晨) (13) 查詢出生日期大于所有女同學(xué)出生日期的男同學(xué)的姓名及系別。 select sname,sdept from student where year(sbirthday)>all(select year(sbirthday)from student where ssex=女 ) and ssex=男 (14) 查詢成績比該課程平均成績高的學(xué)生的學(xué)號(hào)及成績。 select sno,degree from sc where degree >=(select avg(degree) from student,sc whe
42、re student.sno=sc.sno) (15) 查詢不講授“C01”課的教師姓名。 select tname from teacher ,teaching where teacher.tno=teaching.tno and cno !=c01 (16) 查詢沒有選修“C02”課程的學(xué)生學(xué)號(hào)及姓名。 select student.sno,sname from student,sc where student.sno=sc.sno and cno!=C02 (17) 查詢選修了“數(shù)據(jù)庫”課程的學(xué)生學(xué)號(hào)、姓名及系別。 select sname,s
43、tudent.sno,sdept from student,sc,course where student.sno=sc.sno and o=o and cname=數(shù)據(jù)庫 (18) 查詢“C02”號(hào)課程不及格的學(xué)生信息。 select * from student,sc where student.sno=sc.sno and cno=c02 and degree<60 四、思考題 (1) 子查詢一般分為幾種? 4種 (2) 相關(guān)子查詢的執(zhí)行過程是什么? 依賴于父查詢的查詢 五、實(shí)驗(yàn)總結(jié) 1、收獲 進(jìn)一步的練習(xí)了嵌套查詢和
44、奪標(biāo)連接,學(xué)到更多的知識(shí),受益良多。 2、 存在的問題 還是不夠熟悉,需要進(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數(shù)據(jù)庫中完成下面操作: 注意:利用SELECT INTO…命令備份Student、SC、Co
45、urse這3個(gè)表,備份表名自定。 (1) 向Student表中插入記錄("20050203","張靜","1981-3-21","女","CS","電子商務(wù)")。 INSERT INTO student(sno,sname,sbirthday,ssex,sdept,speciality) VALUES(20050203,張靜,1982-3-21,女,CS,電子商務(wù)); (2) 插入學(xué)號(hào)為“20050302”、姓名為“李四”的學(xué)生信息。 INSERT INTO student(sno,sname) VALUES(20050202,李四); (3) 把計(jì)算機(jī)系的學(xué)
46、生記錄保存到表TS中(TS表已存在,表結(jié)構(gòu)與Student表相同)。 INSERT INTO ts SELECT * FROM student WHERE sdept=計(jì)算機(jī) (4) 將學(xué)號(hào)為“20050202”的學(xué)生姓名改為“張華”,系別改為“CS”,專業(yè)改為“多媒體技術(shù)”。 UPDATE student SET sname=張華,sdept=cs,speciality=多媒體技術(shù) WHERE sno=20050202; (5) 將“李勇”同學(xué)的專業(yè)改為“計(jì)算機(jī)信息管理”。 UPDATE student SET speciality=計(jì)算機(jī)管理 WHERE
47、sname=李勇; (6) 把選修了“數(shù)據(jù)庫”課程而成績不及格的學(xué)生的成績?nèi)臑榭罩?NULL)。 UPDATE SC SET degree=NULL WHERE cno in(SELECT cno from course WHERE cname=數(shù)據(jù)庫) AND degree<60 (7) 刪除學(xué)號(hào)為“20050302”的學(xué)生記錄。 DELETE FROM student WHERE sno=20050302 (8) 刪除“計(jì)算機(jī)系”所有學(xué)生的選課記錄。 DELETE FROM sc WHERE sno in(SELECT sno from stu
48、dent WHERE sdept=計(jì)算機(jī)系) (9) 刪除SC表中尚無成績的選課記錄。 DELETE FROM sc WHERE degree=NULL (10) 把“張晨”同學(xué)的成績記錄全部刪除。 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) 利用INSERT、UPDATE和DELETE命令可以同時(shí)對(duì)多
49、個(gè)表進(jìn)行操作嗎? 不能,只能單個(gè)表 五、實(shí)驗(yàn)總結(jié): 1、收獲 進(jìn)一步的熟悉了mysql的運(yùn)用,記住了很多插入,修改,刪除的語句。 2、存在的問題 不夠熟練,需要背語句結(jié)構(gòu)。 實(shí)驗(yàn)八 視圖 一、實(shí)驗(yàn)?zāi)康模? (1) 理解視圖的概念。 (2) 掌握創(chuàng)建、更改、刪除視圖的方法。 (3) 掌握使用視圖來訪問數(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語句創(chuàng)建、管理視圖 (1) 創(chuàng)建視圖。 ① 創(chuàng)建一個(gè)名為sc_view1的
50、視圖,從數(shù)據(jù)庫gradem的sc表中查詢出成績大于90分的所有學(xué)生選修成績的信息。 ② 創(chuàng)建一個(gè)名為sc_view2的視圖,從數(shù)據(jù)庫gradem的sc表中查詢出成績小于80分的所有學(xué)生的學(xué)號(hào)、課程號(hào)、成績等信息。 ③ 創(chuàng)建一個(gè)名為sc_view3的視圖,由數(shù)據(jù)庫gradem的student、course、sc表創(chuàng)建一個(gè)顯示“20070303”班學(xué)生選修課程(包括學(xué)生姓名、課程名稱、成績等信息)的視圖。 ④ 創(chuàng)建一個(gè)從視圖sc_view1中查詢出課程號(hào)“c01”的所有學(xué)生的視圖。 (2) 修改視圖的定義。 修改視圖sc_
51、view1,使其從數(shù)據(jù)庫gradem的sc表中查詢出成績大于90分且第3學(xué)期的所有學(xué)生選修成績的信息。 (3) 視圖的刪除。 ① 將視圖sc_view1刪除。 (4) 管理視圖中的數(shù)據(jù)。 ① 從視圖sc_view2中查詢出學(xué)號(hào)為“2007030125”、課程號(hào)為“a01”的學(xué)生選修成績的信息。 ② 將視圖sc_view2中學(xué)號(hào)為“2007030122”、課程號(hào)為“c02”的成績改為87。 ③ 從視圖sc_view2中將學(xué)號(hào)為“2007030123”、課程號(hào)為“a01”的學(xué)生信息刪除。 四、思考題 向視圖中插入的數(shù)據(jù)能進(jìn)入到
52、基本表中去嗎?修改基本表的數(shù)據(jù)會(huì)自動(dòng)反映到相應(yīng)的視圖中去嗎? 五、實(shí)驗(yàn)總結(jié) 1、收獲 2、存在的問題 實(shí)驗(yàn)九 數(shù)據(jù)庫的安全性 一、實(shí)驗(yàn)?zāi)康模? (1) 理解My SQL的權(quán)限系統(tǒng)的工作原理。 (2) 理解My SQL賬戶及權(quán)限的概念。 (3) 掌握管理My SQL賬戶和權(quán)限的方法。 (4) 學(xué)會(huì)創(chuàng)建和刪除普通用戶的方法和密碼管理的方法。 (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)下列操
53、作: ① 使用root用戶創(chuàng)建aric用戶,初始密碼設(shè)置為abcdef。讓該用戶對(duì)gradem數(shù)據(jù)庫擁有SELECT、UPDATE、DROP權(quán)限。 ②用aric用戶登錄,利用aric用戶來驗(yàn)證自己是否有GRANT權(quán)限和CREATE權(quán)限。 ③用root用戶登錄,收回aric用戶的刪除權(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)建用戶u1+學(xué)號(hào)后四位,u2+學(xué)號(hào)后四位,u3+學(xué)號(hào)后四位,u4+學(xué)號(hào)后四位。 2.用戶root把查詢
54、Student表權(quán)限授給用戶u1+學(xué)號(hào)后四位,驗(yàn)證u1能夠執(zhí)行相應(yīng)的查詢。 1) 查詢所有姓劉的學(xué)生的姓名、學(xué)號(hào)和性別。 2) 查詢名字中第二字為“勇”字的學(xué)生的姓名和學(xué)號(hào)。 3. 用戶root授予用戶u4+學(xué)號(hào)后四位對(duì)student表的insert權(quán)限,并允許此權(quán)限傳播。 4. 用戶u4+學(xué)號(hào)后四位將對(duì)表student的insert權(quán)限授予u3+學(xué)號(hào)后四位,并允許將權(quán)限轉(zhuǎn)授給其他用戶(例如:u3+學(xué)號(hào)后四位),描述過程及操作。 (二) 回收權(quán)限 1. 收回所有用戶對(duì)表sc的查
55、詢權(quán)限 2. 收回用戶u4對(duì)student表的insert權(quán)限 3. 在回收權(quán)限之后驗(yàn)證用戶是否真正喪失了該權(quán)限(查詢表,插入記錄),描述過程及提示信息。 四、實(shí)驗(yàn)總結(jié) 1、收獲 2、 存在的問題 實(shí)驗(yàn)十 數(shù)據(jù)庫的完整性 一、實(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)容
56、; 三、 實(shí)驗(yàn)內(nèi)容及步驟 (一) 實(shí)體完整性 1.建立部門表DEPT(deptno,deptname),部門編號(hào)Deptno列為主碼。寫出兩種方式:一種在列級(jí)定義主碼,一種是在表級(jí)定義主碼。 2.建立成績表sc1(sno,cno,grade),將sno、cno屬性組定義為碼。 (二) 參照完整性 1. 建立成績表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(類似RESTRICT)、CASCADE和SET NULL四種行為,默認(rèn)是那種行為?在默認(rèn)情況下,對(duì)studen
58、t表中的sno=’1001’的記錄,執(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外鍵約束刪除,將外鍵約束的刪除
59、行為改為CASCADE。,并驗(yàn)證該刪除策略。 (三)自定義完整性 1.修改部門表DEPT,要求添加約束constraint c1:部門名稱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、存在的問題
- 溫馨提示:
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024《增值稅法》全文學(xué)習(xí)解讀(規(guī)范增值稅的征收和繳納保護(hù)納稅人的合法權(quán)益)
- 2024《文物保護(hù)法》全文解讀學(xué)習(xí)(加強(qiáng)對(duì)文物的保護(hù)促進(jìn)科學(xué)研究工作)
- 銷售技巧培訓(xùn)課件:接近客戶的套路總結(jié)
- 20種成交的銷售話術(shù)和技巧
- 銷售技巧:接近客戶的8種套路
- 銷售套路總結(jié)
- 房產(chǎn)銷售中的常見問題及解決方法
- 銷售技巧:值得默念的成交話術(shù)
- 銷售資料:讓人舒服的35種說話方式
- 汽車銷售績效管理規(guī)范
- 銷售技巧培訓(xùn)課件:絕對(duì)成交的銷售話術(shù)
- 頂尖銷售技巧總結(jié)
- 銷售技巧:電話營銷十大定律
- 銷售逼單最好的二十三種技巧
- 銷售最常遇到的10大麻煩