實驗四資料查詢 2

2023-01-26 00:57:05 字數 1772 閱讀 6339

實驗四 「教學管理系統」資料查詢(2)

一、實驗目標:

1、熟練掌握各種子查詢的方法使用;

2、掌握檢視的建立方法;

二、實驗內容:

1、用子查詢實現學生成績資訊查詢功能

【實驗場景】:學期結束時班主任通過下述子任務①②的查詢結果,將有不及格課程的學生成績單郵寄到學生家中,通知準備開學後補考。而教務處負責成績管理的老師也需要通過子任務③④的查詢結果完成相應的課程成績處理和分析工作。

任務如下:

1 根據某門課程的名稱,如「c語言程式設計」,查詢開設這門課程的所有課程班情況。查詢結果如圖一所示:

圖一查詢「c語言程式設計」課程班資訊

2 查詢本班課程成績不及格的學生學號、姓名、家庭住址、郵編。

圖二查詢本班成績不及格的學生基本資訊

3 查詢存在成績不及格學生的課程班的編碼、課程名稱和任課教師資訊。

圖三查詢成績不及格的學生課程資訊

4 查詢平均成績大於等於80分的課程班的編碼、課程名稱和任課教師資訊。

圖四查詢平均成績優秀的學生課程資訊

請用t-sql語句實現上述四個查詢。

【解決示例】:

分析:根據子任務①的要求,可以分兩步來完成:

第一步:先在表「tb_course」中查詢出這門課程的課程編碼,因為課程班資訊表「tb_courseclass」中只有課程編碼資訊「courseid」;

第二步:按照課程編碼資訊在表「tb_courseclass」中查詢關於這門課程的所有課程班資訊。

現在要解決的問題是,如何將以上兩步驟的t-sql查詢語句用子查詢的方式一步完成?

實現參考**如下:

開啟ssms視窗,在查詢編輯器中輸入以下t-sql語句:

【參考**】:

1、任務②的實現**:

2、任務③的實現**:

3、任務④的實現**:

注意:上述子查詢中返回的欄位名稱必須與外層查詢中需要與子查詢匹配的欄位名稱(如關鍵字「in」前面)欄位名稱一致,且子查詢中返回的字段數只能是乙個。

【拓展練習】:教務處管理學生課程選修的老師經常需要查詢:只要存在任何一門課程班的選修人數不滿最大允許選修人數的一半時,就要檢視所有未選滿(【fullflag】欄位為「u」)的課程班資訊。

查詢結果如圖五所示:

圖五查詢選修課程資訊

參考**:

可通過下述t-sql語句實現 :

2、建立學生課程成績檢視

【實驗場景】:為了讓班主任查詢學生課程成績資訊更加方便、快速和安全,請為(任務:查詢「tb_grade」表中單個課程班的成績,要求顯示的字段為【stuid、stuname、classname、coursename、totalscore】,查詢的錶用相應的別名,按班級編碼排序)建立乙個檢視vw_coursegrade,讓班主任今後只要直接從這個檢視中查詢他所需要的課程班成績資訊。

檢視結果如圖六所示:

圖六學生課程成績檢視

【解決示例】:

實現方法一:

【思考】如果在上述t-sql語句的結尾部分加上一行「order by stuname」語句,結果會如何?

實現方法二:

在檢視的建立中,也可以通過定義引數的形式為字段指定別名。上述定義檢視的t-sql語句也可以改成如下形式:

【拓展練習】:如果要查詢檢視中課程成績大於80分的學生課程成績情況(學號,姓名,班級和成績),並按成績降序排列,結果如圖七所示:

圖七查詢學生課程成績優秀的檢視

可以用下述t-sql語句實現。

【思考】如果將上述查詢檢視資料的t-sql語句中的中文字段別名改成原來基本中的英文本段名稱,將會出現什麼結果?

實驗八資料查詢

一 實驗目標 1 掌握select語句的基本語法。2 掌握select簡單查詢。3 掌握sql中的關鍵字查詢。首頁建立乙個scstc資料庫並建立資料表,並每個表至少錄入5條初始資料。1,建立student表 create table student sno char 8 primary key,學號...

百萬資料查詢優化技巧三十則

20 的 用去了80 的時間,這是程式設計中的乙個著名定律,在資料庫應用程式中也同樣如此。我們的優化要抓住關鍵問題,對於資料庫應用程式來說,重點在於sql的執行效率。查詢優化的重點環節是使得資料庫伺服器少從磁碟中讀資料以及順序讀頁而不是非順序讀頁。百萬資料查詢優化技巧三十則 1.對查詢進行優化,應盡...

資料結構查詢排序實驗

實驗五 查詢和排序 班級 b09513 學號 200940 姓名 一 實驗目的 1 掌握查詢的不同方法,並能用高階語言實現查詢演算法。2 熟練掌握順序表和有序表的順序查詢和二分查詢方法。3 掌握排序的不同方法,並能用高階語言實現排序演算法。4 熟練掌握順序表的選擇排序 氣泡排序和直接插入排序演算法的...