第一篇:實(shí)驗(yàn)5 數(shù)據(jù)庫(kù)的嵌套查詢實(shí)驗(yàn)
實(shí)驗(yàn)五
數(shù)據(jù)庫(kù)的嵌套查詢實(shí)驗(yàn)
1、實(shí)驗(yàn)?zāi)康?/p>
本實(shí)驗(yàn)的目的是使學(xué)生進(jìn)一步掌握SQL Server查詢分析器的使用方法,加深SQL語(yǔ)言的嵌套查詢語(yǔ)句的理解
2、實(shí)驗(yàn)時(shí)數(shù)
2學(xué)時(shí)
3、實(shí)驗(yàn)內(nèi)容
本實(shí)驗(yàn)的主要內(nèi)容是:在SQL Server查詢分析器中使用IN、比較符、ANY或ALL和EXISTS操作符進(jìn)行嵌套查詢操作。
具體完成以下例題。將它們用SQL語(yǔ)句表示,在學(xué)生數(shù)據(jù)庫(kù)中實(shí)現(xiàn)其數(shù)據(jù)嵌套查詢操作。
1、查詢選修了高等數(shù)學(xué)的學(xué)生學(xué)號(hào)和姓名 select Sno,Sname from Student where Sno in(select Sno from SC,Course where SC.Cno=Course.Cno and Cname='數(shù)學(xué)')
2、查詢1號(hào)課程的成績(jī)高于劉晨的1號(hào)課程成績(jī)的學(xué)生學(xué)號(hào)和成績(jī) select SC.Sno,Grade from SC,Student where Cno='1' and SC.Sno=Student.Sno and Grade>all(select Grade from SC,Student where SC.Sno=Student.Sno and Sname='劉晨')
3、查詢其他系中比cs系某一學(xué)生年齡小的學(xué)生(即年齡小于計(jì)算機(jī)系年齡最大者的學(xué)生)select * from Student where Sdept!='cs' and Sage 4、查詢其他系中比cs系所有學(xué)生年齡都小的學(xué)生 select * from Student where Sdept!='cs' and Sage 5、查詢選修了2號(hào)課程的學(xué)生姓名 select Sname from Student where Sno in(select Student.Sno from SC,Student where SC.Sno=Student.Sno and Cno='2') 6、查詢沒(méi)有選修2號(hào)課程的學(xué)生姓名 elect Sname from Student where exists(select SC.Sno from SC,Student where Cno!='2' group by SC.Sno) 7、查詢選修了全部課程的學(xué)生姓名 Select * from SC where Cno=all(select Cno from Course) 8、求至少選修了學(xué)號(hào)為“00215122”的學(xué)生所選修全部課程的學(xué)生學(xué)號(hào)和姓名 select Sno,Sname from Student where Sno in(select Student.Sno from Student,SC where Student.Sno=SC.Sno and Cno=any(select Cno from SC where Sno='00215122')) 4、實(shí)驗(yàn)方法 將查詢需求用SQL語(yǔ)言表示:在SQL Server查詢分析器的輸入?yún)^(qū)中輸入SQL查詢語(yǔ)句:設(shè)置查詢分析器的結(jié)果區(qū)為Standard Execute(標(biāo)準(zhǔn)執(zhí)行)或Execute to Grid(網(wǎng)格執(zhí)行)方式;發(fā)布執(zhí)行命令,并在結(jié)果區(qū)中查看查詢結(jié)果;如果結(jié)果不正確,要進(jìn)行修改,直到正確為止。 5、實(shí)驗(yàn)心得體會(huì) 本次實(shí)驗(yàn)還是進(jìn)行查詢操作,只是在第四次試驗(yàn)的基礎(chǔ)上加入了嵌套,嵌套查詢是在我們以后進(jìn)行軟件開(kāi)發(fā)涉及數(shù)據(jù)庫(kù)常用的查詢操作,通過(guò)實(shí)驗(yàn)有助于我們對(duì)嵌套查詢的理解,對(duì)我們熟練的使用SQL查詢語(yǔ)句進(jìn)行查詢操作有很大幫助。 實(shí)驗(yàn)三 數(shù)據(jù)庫(kù)查詢實(shí)驗(yàn) (3)數(shù)據(jù)庫(kù)的組合查詢和統(tǒng)計(jì)查詢實(shí)驗(yàn) 課時(shí)安排:2課時(shí) 一、實(shí)驗(yàn)?zāi)康暮鸵?/p> 使學(xué)生熟練掌握SQL Server查詢分析器的使用方法.加深對(duì)SQL和Transact-SQL語(yǔ)言的查詢語(yǔ)句的理解。熟練掌握數(shù)據(jù)查詢中的分組、統(tǒng)計(jì)、計(jì)算和組合的操作方法。 二、實(shí)驗(yàn)內(nèi)容 分組查詢實(shí)驗(yàn)該實(shí)驗(yàn)包括分組條件表達(dá)、選擇組條件的表達(dá)方法。使用函數(shù)查詢的實(shí)驗(yàn)。該實(shí)驗(yàn)包括統(tǒng)計(jì)函數(shù)和分組統(tǒng)計(jì)函數(shù)的使用方法。 組合查詢實(shí)驗(yàn)。計(jì)算和分組計(jì)算查詢的實(shí)驗(yàn)。 三、實(shí)驗(yàn)方法 將查詢需求用 Transact-SQL語(yǔ)言表示;在 SQL Server查詢分析器的輸入?yún)^(qū)中輸入Transact-SQL查詢語(yǔ)句:設(shè)置查詢分析器的結(jié)果區(qū)為Standard Execute(標(biāo)準(zhǔn)執(zhí)行)或Executeto Grid(網(wǎng)格執(zhí)行)方式.發(fā)布執(zhí)行命令 并在結(jié)果區(qū)中查看查詢結(jié)果;如果結(jié)果不正確要進(jìn)行修改.直到正確為止。 四、實(shí)驗(yàn)步驟 基本操作實(shí)驗(yàn) 在圖書借閱庫(kù)中實(shí)現(xiàn)其查詢操作。 (1)查找這樣的圖書類別:要求類別中最高的圖書定價(jià)不低于全部按類別分組的圖書平均定價(jià)的2倍。 (2)求機(jī)械工業(yè)出版社出版的各類圖書的平均定價(jià),用GROUPBY表示。 (3)列出計(jì)算機(jī)類圖書的書號(hào)、名稱及價(jià)格.最后求出冊(cè)數(shù)和總價(jià)格。 (4)列出計(jì)算機(jī)類圖書的書號(hào)、名稱及價(jià)格 并求出各出版社這類書的總價(jià)格.最后求出全部?jī)?cè)數(shù)和總價(jià)格。 (5)查詢計(jì)算機(jī)類和機(jī)械工業(yè)出版社出版的圖書。 提高操作實(shí)驗(yàn) 將自設(shè)計(jì)的數(shù)據(jù)庫(kù)應(yīng)用項(xiàng)目中的分組、統(tǒng)計(jì)、計(jì)算和組合查詢用Transact-SQL語(yǔ)句表示.并通過(guò)SQL Server 查詢分析器實(shí)現(xiàn)其查詢操作。 五、實(shí)驗(yàn)報(bào)告要求 分別用SQL和Transact-SQLL寫出實(shí)驗(yàn)操作的查詢語(yǔ)句 對(duì)兩種語(yǔ)言進(jìn)行比較。 實(shí)驗(yàn)步驟和實(shí)驗(yàn)結(jié)果。實(shí)驗(yàn)中的問(wèn)題和提高。 六、注意事項(xiàng) 子句WHERE<條件>表示元組篩選條件,子句HAVING <條件>表示組選擇條件。組合查詢的子句間不能有語(yǔ)句結(jié)束符。子句HAVING<條件>必須和GROUP BY <分組字段>子句配合使用。 七、思考題 組合查詢語(yǔ)句是否可以用其他語(yǔ)句代替,有什么不同? 使用 GROUP BY <分組條件>子句后,語(yǔ)句中的統(tǒng)計(jì)函數(shù)的運(yùn)行結(jié)果有什么不同? 實(shí)驗(yàn)三:數(shù)據(jù)庫(kù)的嵌套查詢實(shí)驗(yàn) 實(shí)驗(yàn)?zāi)康?: 加深對(duì)嵌套查詢語(yǔ)句的理解。 實(shí)驗(yàn)內(nèi)容: 使用 IN、比較符、ANY 或 ALL 和 EXISTS 操作符進(jìn)行嵌套查詢操作。 實(shí)驗(yàn)步驟: 一.使用帶 N IN 謂詞的子查詢 1.查詢與’劉晨’在同一個(gè)系學(xué)習(xí)的學(xué)生的信息: 比較 select * from student where sdept in (select sdept from student where sname=“劉晨”)與: select * from student where sdept = (select sdept from student where sname=“劉晨”)的異同 比較: select * from student where sdept = (select sdept from student where sname=“劉晨”)and sname <> ‘劉晨’ 與: select S1.* from student S1, student S2 where S1.sdept=S2.sdept and S2.sname=“劉晨”的異同 2.查詢選修了課程名為’信息系統(tǒng)’ 的學(xué)生的學(xué)號(hào)和姓名: 比較 select sno, sname from student where sno in(select sno from sc where cno in (select cno from course where cname=“信息系統(tǒng)”))與: select sno, sname from student where sno in (select sno from sc, course where sc.cno=course.cno and cname=“信息系統(tǒng)”) 3.查詢選修了課程’1’和課程’2’的學(xué)生的學(xué)號(hào): select sno from student where sno in(select sno from sc where cno=“1”)and sno in(select sno from sc where cno=“2”) 比較: 查詢選修了課程’1’或課程’2’的學(xué)生的 sno: select sno from sc where cno=“1” or cno=“2” 比較連接查詢: select A.sno from sc A, sc B where A.sno=B.sno and A.cno=“1” and B.cno=“2” 二.使用帶比較運(yùn)算的子查詢 4.查詢比’劉晨’年齡小的所有學(xué)生的信息: select * from student where sage< (select sage from student where sname=“劉晨”) 三.使用帶 Any, All 謂詞的子查詢 5.查詢其他系中比信息系(IS)某一學(xué)生年齡小的學(xué)生姓名和年齡;select sname, sage from student where sage (select sage from student where sdept=“IS”)and sdept<>“IS” 6.查詢其他系中比信息系(IS)學(xué)生年齡都小的學(xué)生姓名和年齡: select sname, sage from student where sage 7.查詢與計(jì)算機(jī)系(CS)系所有學(xué)生的年齡均不同的學(xué)生學(xué)號(hào), 姓名和年齡: select sno,sname,sage from student where sage<>all(select sage from student where sdept=“CS”) 四.使用帶 s Exists 謂詞的子查詢和相關(guān)子查詢 8.查詢與其他所有學(xué)生年齡均不同的學(xué)生學(xué)號(hào), 姓名和年齡: select sno,sname,sage from student A where not exists(select * from student B where A.sage=B.sage and A.sno<>B.sno) 9.查詢所有選修了 1 號(hào)課程的學(xué)生姓名: select sname from student where exists(select * from sc where sno=student.sno and cno=“1”) 10.查詢沒(méi)有選修了 1 號(hào)課程的學(xué)生姓名: select sname from student where not exists(select * from sc where sno=student.sno and cno=“1”) 11.查詢選修了全部課程的學(xué)生姓名: SQL Server 中: select sname from student where not exists(select * from course where not exists(select * from sc where sno=student.sno and cno=course.cno)) 11.查詢至少選修了學(xué)生 95002 選修的全部課程的學(xué)生的學(xué)號(hào): SQL Server 中: select distinct sno from sc A where not exists (select * from sc B where sno=“95002”and not exists(select * from sc C where sno=A.sno and cno=B.cno)) 12.求沒(méi)有人選修的課程號(hào) cno 和 cnamecname: select cno,cname from course C where not exists(select * from sc where sc.cno=C.cno) 13*.查詢滿足條件的(sno,cno)對(duì), 其中該學(xué)號(hào)的學(xué)生沒(méi)有選修該課程號(hào) cno的課程 SQL Server 中: select sno,cno from student,course where not exists(select * from sc where cno=course.cno and sno=student.sno) 14*.查詢每個(gè)學(xué)生的課程成績(jī)最高的成績(jī)信息(sno,cno,grade): select * from sc A where grade=(select max(grade)from sc where sno=A.sno) 思考: 如何查詢所有學(xué)生都選修了的課程的課程號(hào) cno? select cno from sc group by cno having count(*)=(select count(*)from student) 廣東工業(yè)大學(xué)實(shí)驗(yàn)報(bào)告 自動(dòng)化學(xué)院 學(xué)院 網(wǎng)絡(luò)工程 專業(yè) 班 學(xué)號(hào) 3111001381 姓名 何宇航 成績(jī)?cè)u(píng)定_______ 教師簽名 黃永慧 實(shí)驗(yàn) 題目 數(shù)據(jù)查詢和連接查詢 課程名稱 數(shù)據(jù)庫(kù)原理及應(yīng)用實(shí)驗(yàn) 一.實(shí)驗(yàn)?zāi)康?/p> 使學(xué)生熟練掌握簡(jiǎn)單表的數(shù)據(jù)查詢、數(shù)據(jù)連接查詢以及數(shù)據(jù)排序的操作方法,并加深對(duì)Transact-SQL語(yǔ)言的查詢語(yǔ)句的理解。 二.實(shí)驗(yàn)軟件環(huán)境 SQL Server 2000 三.實(shí)驗(yàn)內(nèi)容 (一)實(shí)驗(yàn)要求: 使用SQL Server 2000查詢分析器,并用SELECT語(yǔ)句及WHERE查詢條件進(jìn)行簡(jiǎn)單查詢及連接查詢實(shí)驗(yàn),其次使用ORDER BY排序子句實(shí)現(xiàn)輸出結(jié)果的排序。主要內(nèi)容包括: 1)簡(jiǎn)單查詢操作 包括投影、選擇條件、數(shù)據(jù)排序等。 2)連接查詢操作 包括等值連接、自然連接、外連接、內(nèi)連接、左連接和右連接等。(二)要求完成以下查詢要求: 1)將計(jì)算機(jī)類的書存入永久計(jì)算機(jī)圖書表。 2)將借書日期在05年以前的借閱記錄存入臨時(shí)超期借閱表。3)查詢發(fā)生了借閱關(guān)系的借書證號(hào),并按借書證號(hào)降序排列。4)查詢“清華大學(xué)出版社”出版的圖書情況。 5)查詢目前被借出去的書籍的書號(hào)、借書證號(hào)以及借出日期,并按借出日期排序。6)查詢“程軍”老師所借閱的書籍的書名。 7)查詢借書者的編號(hào)、姓名、單位、所借書號(hào)、書名和借閱日期,并按讀者編號(hào)排序。 四.實(shí)驗(yàn)的結(jié)果及分析 1)將計(jì)算機(jī)類的書存入永久計(jì)算機(jī)圖書表 CREATE TABLE Computer_Book(bno char(8)NOT NULL PRIMARY KEY,category varchar(10),title varchar(40)NOT NULL,press varchar(30)NOT NULL,book_year Int NOT NULL,author varchar(20),price decimal(7,2)NOT NULL,book_total Int NOT NULL) INSERT INTO Computer_Book SELECT *FROM Book WHERE category='計(jì)算機(jī)' 廣東工業(yè)大學(xué)實(shí)驗(yàn)報(bào)告 自動(dòng)化學(xué)院 學(xué)院 網(wǎng)絡(luò)工程 專業(yè) 班 學(xué)號(hào) 3111001381 姓名 何宇航 成績(jī)?cè)u(píng)定_______ 教師簽名 黃永慧 實(shí)驗(yàn) 題目 數(shù)據(jù)查詢和連接查詢 課程名稱 數(shù)據(jù)庫(kù)原理及應(yīng)用實(shí)驗(yàn) 2)將借書日期在05年以前的借閱記錄存入臨時(shí)超期借閱表。CREATE TABLE Overdue_Borrow(cno char(7)NOT NULL FOREIGN KEY(CNO)REFERENCES Card(cno),bno char(8)NOT NULL FOREIGN KEY(BNO)REFERENCES Book(bno),borrow_date smalldaetime NOT NULL DEFAULT GETDATE(),CONSTRAINT CBB_PRIM PRIMARY KEY(cno,bno,borrow_date))INSERTINTO Overdue_Borrow SELECT *Borrow WHERE YEAR(borrow_date)<2005 3)查詢發(fā)生了借閱關(guān)系的借書證號(hào),并按借書證號(hào)降序排列。SELECT DISTINCT cno FROM Borrow ORDER BY cno DESC 4)查詢“清華大學(xué)出版社”出版的圖書情況。SELECT *FROM Book WHERE press='清華大學(xué)出版社' 5)查詢目前被借出去的書籍的書號(hào)、借書證號(hào)以及借出日期,并按借出日期排序。SELECT bno,cno,borrow_date FROM Borrow WHERE return_date IS NULL ORDER BY borrow_date 6)查詢“程軍”老師所借閱的書籍的書名。SELECT title FROM Book,Card,Borrow WHERE(Card.cno=Borrow.cno)and(Borrow.bno=Book.bno)and(name='程軍') 7)查詢借書者的編號(hào)、姓名、單位、所借書號(hào)、書名和借閱日期,并按讀者編號(hào)排序。SELECT Borrow.cno,name,department,Borrow.bno,title,borrow_date FROM Borrow,Card,Book WHERE(Card.cno=Borrow.cno)and(Borrow.bno=Book.bno)ORDER Borrow.cno 五.實(shí)驗(yàn)心得體會(huì) 通過(guò)本實(shí)驗(yàn)基本學(xué)會(huì)如何進(jìn)行簡(jiǎn)單表的數(shù)據(jù)查詢、數(shù)據(jù)聯(lián)接查詢以及數(shù)據(jù)排序,并加深對(duì)SQL和Transact-SQL語(yǔ)言的查詢語(yǔ)句的理解,這比光看書跟容易理解,能夠跟好的掌握書本上的知識(shí)。 實(shí)驗(yàn)1.1 使用SQL Server工具(Microsoft SQL Server Management Studio Express)管理數(shù)據(jù)庫(kù) 實(shí)驗(yàn)內(nèi)容: (1)使用SSMS(SQL Server Management Studio)加入實(shí)驗(yàn)數(shù)據(jù)庫(kù)。(2)使用SSMS可視化建立、修改和刪除數(shù)據(jù)庫(kù)、表。(3)使用SSMS對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份和恢復(fù)。 (4)使用SSMS對(duì)表進(jìn)行查詢、插入、修改、刪除。實(shí)驗(yàn)步驟: (1)加入School數(shù)據(jù)庫(kù)。(2)建立Test數(shù)據(jù)庫(kù)。 (3)在數(shù)據(jù)庫(kù)中建立人員表PERSON(P#,Pname,Page)。更改表設(shè)置P#為主鍵,增加屬性Ptype(類型是CHAR,長(zhǎng)度是10)。 (4)用SSMS的查詢功能(新建查詢)對(duì)PERSON表進(jìn)行查詢、插入、修改、刪除等操作:首先插入兩條記錄;修改第二條記錄;刪除第二條記錄。(5)備份Test數(shù)據(jù)庫(kù)。(6)刪除表PERSON。(7)恢復(fù)Test數(shù)據(jù)庫(kù)。(8)刪除Test數(shù)據(jù)庫(kù)。第二篇:3數(shù)據(jù)庫(kù)查詢實(shí)驗(yàn)
第三篇:年整理數(shù)據(jù)庫(kù)嵌套查詢實(shí)驗(yàn)報(bào)告
第四篇:數(shù)據(jù)庫(kù)實(shí)驗(yàn)5報(bào)告
第五篇:數(shù)據(jù)庫(kù)實(shí)驗(yàn)