《數據庫實驗3 數據查詢》由會員分享,可在線閱讀,更多相關《數據庫實驗3 數據查詢(4頁珍藏版)》請在裝配圖網上搜索。
1、實驗三 數據查詢
[實驗目的]
1. 掌握SQL的單表查詢操作
2. 掌握SQL的連接查詢操作
3. 掌握SQL的嵌套查詢操作
4. 掌握SQL的集合查詢操作
[實驗時數] 2 學時
[實驗內容]
本實驗的主要內容是:
1. 簡單查詢操作。包括投影、選擇條件表達,數據排序,使用臨時表等。
2. 連接查詢操作。包括等值連接、自然連接、求笛卡兒積、一般連接、外連接、內連接、左連接、右連接和自連接等。
3. 在SQL Server查詢分析器中,使用IN、比較符、ANY或ALL和EXISTS操作符進行嵌套查詢操作。
4. 組合查詢與統(tǒng)計查詢。
(1)分組查詢實驗。該實驗包括
2、分組條件表達、選擇組條件的表達方法。
(2)使用函數查詢的實驗。該實驗包括統(tǒng)計函數和分組統(tǒng)計函數的使用方法。
(3)組合查詢實驗。
(4)計算和分組計算查詢的實驗。
[實驗方法]
1. 將查詢需求用Transact-SQL語言表示。
2. 在SQL Server查詢分析器的輸入區(qū)中輸入Transact-SQL查詢語句。
3. 設置查詢分析器結果區(qū)為Standard Execute(標準執(zhí)行)或Execute to Grid方式。
4. 發(fā)布執(zhí)行命令,查看查詢結果;如果結果不正確,進行修改,直到正確為止。
5. 查詢分析器及使用方法。查詢分析器是在開發(fā)數
3、據庫應用系統(tǒng)時使用最多的工具。查詢分析器的主要作用是編輯Transact-SQL,將其發(fā)送到服務器,并將執(zhí)行結果及分析顯示出來(或進行存儲)。查詢分析功能主要是通過測試查詢成本,判斷該查詢是否需要增加索引以提高查詢速度,并可以實現(xiàn)自動建立索引的功能。
圖5- Error! Bookmark not defined. SQL Server 2000查詢分析器
查詢分析器的界面如圖5- Error! Bookmark not defined.所示。在查詢生成器中的左邊窗口是對象瀏覽器,其中按樹結構列出了數據庫對象;右上方是SQL代碼區(qū)域,用于輸入SQL的查詢語句;右下方為結果區(qū),用于顯
4、示查詢結果和分析結果。對于TSQL語句的其執(zhí)行結果,在結果區(qū)中可以有4種不同的輸出形式:標準執(zhí)行將結果直接顯示的結果區(qū);網格執(zhí)行將結果以表格形式顯示的結果區(qū);計劃執(zhí)行顯示執(zhí)行計劃;索引分析為在結果區(qū)中顯示查詢的索引情況。上述輸出形式,可以通過菜單或按鈕選擇。
[實驗步驟]
1.基本操作實驗
(1)簡單查詢實驗
1)Transact-SQL語句表示下列操作,在學生選課庫中實現(xiàn)其數據查詢操作:
? 求數學系學生的學號和姓名。
? 求選修了課程的學生學號。
? 求選修C1課程的學生學號和成績,并要求對查詢結果按成績的降序排列,如果成績相同則按學號的升序排列。
? 求選修課程C1且成績
5、在80~90分之間的學生學號和成績,并將成績乘以系數0.8輸出。
? 求數學系或計算機系姓張的學生的信息。
? 求缺少了成績的學生的學號和課程號。
2)在圖書借閱庫中實現(xiàn)其查詢操作:將計算機類的書存人永久的計算機圖書表,將借書日期在99年以前的借閱記錄存人臨時的超期借閱表。
(2)連接查詢實驗
用Transact-SQL語句表示,并在學生選課庫中實現(xiàn)下列數據連接查詢操作。
? 查詢每個學生的情況以及他(她)所選修的課程。
? 求學生的學號、姓名、選修的課程名及成績。
? 求選修C1課程且成績?yōu)?0分以上的學生學號、姓名及成績。
? 查詢每一門課的間接先行課(即先行課的
6、先行課)。
(3)嵌套查詢實驗
Transact-SQL語句表示,在學生選課庫中實現(xiàn)其數據嵌套查詢操作。
? 求選修了高等數學的學生學號和姓名。
? 求C1課程的成績高于張三的學生學號和成績。
? 求其他系中比計算機系某一學生年齡小的學生(即求年齡小于計算機系年齡最大者的學生)。
? 求其他系中比計算機系學生年齡都小的學生。
? 求選修了髓課程的學生姓名。
? 求沒有選修C2課程的學生姓名。
? 查詢選修了全部課程的學生的姓名。
? 求至少選修了學號為“S2”的學生所選修的全部課程的學生學號和姓名。
(4)組合查詢與統(tǒng)計查詢實驗
在圖書借閱庫中實現(xiàn)其查詢操作。
? 查
7、找這樣的圖書類別:要求類別中最高的圖書定價不低于全部按類別分組的圖書平均 定價的2倍。
? 求機械工業(yè)出版社出版的各類圖書的平均定價,用GROUP BY表示。
? 列出計算機類圖書的書號、名稱及價格,最后求出冊數和總價格。
? 列出計算機類圖書的書號、名稱及價格,并求出各出版社這類書的總價格,最后求出全部冊數和總價格。
? 查詢計算機類和機械工業(yè)出版社出版的圖書。
2.提高操作實驗
(1)按下表的格式,建立職工部門庫和職工、部門表,并向表中輸入數據。
(2)Transact-SQL語句表示職工和部門之間的內連接、左外部連接和右外部連接,在職工部門庫中實現(xiàn)其數據內連接和各種外查詢
8、操作。
職工表 部門表
職工號
姓名
性別
年齡
所在部門
部門號
部門名稱
電話
1010
李勇
男
20
11
11
生產科
566
1011
劉晨
女
19
12
計劃科
578
1012
王敏
女
22
12
13
一車間
467
1014
張立
男
21
13
14
科研所
(3) 將自設計的數據庫應用項目中的分組、統(tǒng)計、計算和組合查詢,用Transact-SQL語句表示,并通過SQL Se
9、rver查詢分析器實現(xiàn)其查詢操作。
[實驗報告要求]
1. 分別用SQL和Transact-SQL寫出實驗操作的查詢語句,對兩種語言進行比較。
2. 實驗步驟和實驗結果。
3. 實驗中的問題和提高。
[注意事項]
1. 查詢結果的幾種處理方式。
2. 內連接、左外部連接和右外部連接的含義及表達方法。
3. 輸入SQL語句時應注意,語句中均使用西文操作符號。
4. 子句WHERE<條件>表示元組篩選條件,子句HAVING<條件>表示組選擇條件。
5. 組合查詢的子句間不能有語句結束符。
6. 子句HAVING<條件>必須和GROUP BY<分組字段>子句配合使用。
[思考題]
1. 如何提高數據查詢和連接速度。
2. 對于常用的查詢形式或查詢結果,怎樣處理好?
3. 組合查詢語句是否可以用其他語句代替,有什么不同?
4. 使用GROUP BY<分組條件>子句后,語句中的統(tǒng)計函數的運行結果有什么不同。