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