數(shù)據(jù)查詢試驗(yàn)試驗(yàn)
1.1 實(shí)驗(yàn)?zāi)康腟QL查詢語言的了解,掌握相關(guān)查詢通過對實(shí)驗(yàn)二中建立的學(xué)生數(shù)據(jù)庫關(guān)系表和視圖的各種查詢的操作,加深對 語句的語法和使用方法.1.2 實(shí)驗(yàn)內(nèi)容1.2.1 數(shù)據(jù)庫關(guān)系表查詢1) 簡單的查詢操作,包括單表的查詢、選擇條件、結(jié)果排序等的練習(xí);2) 多表的連接查詢,包括等值連接、自然連接等;3) 復(fù)雜的查詢操作,包括使用分組函數(shù)等庫函數(shù)的查詢操作;(4) 練習(xí)帶有IN、比擬符的嵌套查詢.1.2.2 視圖查詢對實(shí)驗(yàn)二建立的視圖進(jìn)行相關(guān)的查詢操作,如:查詢選修了課程編號為“ C01的學(xué)生的學(xué)號和成績; 查詢所有學(xué)生的學(xué)號、姓名、選修的課程名稱和成績; 查詢選修了數(shù)據(jù)庫原理的學(xué)生的學(xué)號和姓名.1.3 實(shí)驗(yàn)要求(1) 用SQL語句完成以上操作(2) 要求學(xué)生獨(dú)立完成以上內(nèi)容.(3) 實(shí)驗(yàn)完成后完成要求的實(shí)驗(yàn)報告內(nèi)容.1.4 實(shí)驗(yàn)環(huán)境Windows8 pc 機(jī) Mysql 配置的環(huán)境 Mysql 命令行工具Workbench 可視化工具1.5 實(shí)驗(yàn)步驟及結(jié)果分析1.5.1 數(shù)據(jù)庫關(guān)系表查詢1.5.1.1 簡單查詢具體內(nèi)容包括:在簡單查詢實(shí)驗(yàn)中,在 sql 語句完成以下查詢操作:1. 查詢“數(shù)據(jù)庫原理課程的學(xué)分:Mysql 語言:select credit from course where cname=' 數(shù)據(jù)庫原理 '2. 查詢選修了課程編號為“ C01 的學(xué)生的學(xué)號和成績,并將成績按降序輸出:Mysql 語言:select sno,gradefrom scwhere cno='C01'order by grade desc;3.查詢學(xué)號為“ 31401的學(xué)生選修的課程編號和成績: Mysql 語言:select cno,grade from sc where sno=31401;4.查詢選修了課程編號為“ C01 且成績高于85分的學(xué)生的學(xué)號和成績:Mysql 語言:select sno,gradefrom scwhere cno='C01' and grade > 85;查詢“數(shù)據(jù)庫原理課程的學(xué)分查詢選修了課程編號為“ C01的學(xué)生 的學(xué)號和成績,將成績按降序輸出查詢學(xué)號為“ 31401 的學(xué)生選修的課程編號和成績查詢選修了課程編號為“ C01且成績高于85分的學(xué)生的學(xué)號和成績1.5.1.2 連接查詢在多表連接的查詢實(shí)驗(yàn)中,在SQL SERVER!供的交互式語言環(huán)境下用 Transact SQL語句完成以下查詢操作:1.查詢選修了課程編號為“C01 且成績高于85分的學(xué)生的學(xué)號、姓名和成績:Mysql 語言:select sno,sname,gradefrom student natural join scwhere cno='C01' and grade > 85;2.查詢所有學(xué)生的學(xué)號、姓名、選修的課程名稱和成績Mysql 語言:select sno,sname,cname,gradefrom student natural join sc natural join course;查詢選修了課程編號為“C01 且成績高于85分的學(xué)生的學(xué)號、姓名和成績查詢所有學(xué)生的學(xué)號、姓名、選修的課程名稱和成績1.5.1.3復(fù)雜查詢在復(fù)雜查詢實(shí)驗(yàn)中,用 SQL語句完成以下查詢操作:1. 查詢至少選修了三門課程的學(xué)生的學(xué)號和姓名:2.Mysql 語言:select sno,sname,count(cno)from student natural join scgroup by snohaving count(cno)>=3; 查詢所有學(xué)生的學(xué)號和他選修課程的最高成績,要求他的選修課程中沒有成績?yōu)榭盏? Mysql 語言:select sno,max(grade)from scwhere sno not in(select distinct sno from sc where grade is null) group by sno;查詢至少選修了三門課程的學(xué)生的學(xué)號和姓名查詢所有學(xué)生的學(xué)號和他選修課程的最高成績,要求他的選修課程中沒有成績?yōu)榭盏?.5.1.4 嵌套查詢在嵌套查詢實(shí)驗(yàn)中,在 kingbase 提供的交互式語言環(huán)境下用 iSQL 語句完成以下查詢操作,要求寫嵌套查詢語句:1. 查詢選修了數(shù)據(jù)庫原理的學(xué)生的學(xué)號和姓名:Mysql 語言:select sno,snamefrom (select sno,sname,cnamefrom student natural join sc natural join course)as awhere cname=' 數(shù)據(jù)庫原理 '2. 查詢沒有選修數(shù)據(jù)庫原理的學(xué)生的學(xué)號和姓名:Mysql 語言:select distinct(sno),snamefrom (select sno,sname,cnamefrom student natural join sc natural join course )as awhere cname<>' 數(shù)據(jù)庫原理 '3. 查詢至少選修了學(xué)號為“ 31401的學(xué)生所選修的所有課程的學(xué)生的學(xué)號和姓名: Mysql 語言:select sno,snamefrom studentwhere not exists(select * from (select cno from sc where sno=31401)as S where not exists(select * from sc where cno= and sno=);查詢選修了數(shù)據(jù)庫原理的學(xué)生的學(xué)號和姓名查詢沒有選修數(shù)據(jù)庫原理的學(xué)生的學(xué)號和姓名查詢至少選修了學(xué)號為“ 31401 的學(xué)生所選修的所有課程的學(xué)生的學(xué)號和姓名1.5.2 視圖查詢對實(shí)驗(yàn)二建立的視圖進(jìn)行相關(guān)的查詢操作,如:1. 查詢選修了課程編號為“C01的學(xué)生的學(xué)號和成績:Mysql 語言:select sno,grade from new_view where cno='C01'2. 查詢所有學(xué)生的學(xué)號、姓名、選修的課程名稱和成績:Mysql 語言:select sno,sname,cname,grade from new_view;3. 查詢選修了數(shù)據(jù)庫原理的學(xué)生的學(xué)號和姓名:Mysql 語言:select sno,sname from new_view where cname=' 數(shù)據(jù)庫原理 '查詢選修了課程編號為“ C01的學(xué)生的學(xué)號和成績查詢所有學(xué)生的學(xué)號、姓名、選修的課程名稱和成績查詢選修了數(shù)據(jù)庫原理的學(xué)生的學(xué)號和姓名1.6 實(shí)驗(yàn)總結(jié) 本次實(shí)驗(yàn)我們進(jìn)行了多種多樣的 mysql 查詢操作,在屢次的進(jìn)行查書,查網(wǎng)絡(luò)資料后,我完成了本次的實(shí)驗(yàn). 首先,我感覺本次實(shí)驗(yàn)最重要的便是本次實(shí)驗(yàn)的結(jié)構(gòu)性,針對簡單查詢、連接查詢、復(fù)雜查詢、嵌套查詢分 塊操作,毫無疑問讓我對查詢有了更深一步的了解,不同的查詢方式對應(yīng)著不同的特點(diǎn),不同的語句.exists同時,實(shí)驗(yàn)中,我遇到了各種語句的不熟悉等問題,在資料查詢過程中,讓我對各種語句有了更深一步的了 解,同時在使用過程中有了更多的熟練性.尤其是最后一個嵌套查詢,我查閱了很多網(wǎng)絡(luò)資料和例子,讓我對 和 not exists 語句有了更深一步的了解,同時再看解釋時也讓我對數(shù)據(jù)庫查詢的內(nèi)部過程有了一定的了解,即采用相 當(dāng)于高級語言的循環(huán)操作方式類似.毫無疑問,本次實(shí)驗(yàn)讓我對理論的應(yīng)用有了一定程度的適應(yīng),也大大增加了對實(shí)驗(yàn)過程的興趣.