SQL Server實戰四:查詢資料庫的資料

疯狂学习GIS發表於2024-05-06

  本文介紹基於Microsoft SQL Server軟體,實現資料庫表中多種資料查詢方法的具體操作。

目錄
  • 1 指定列或全部列查詢——查詢S表學生記錄
  • 2 指定列或全部列查詢——查詢學生姓名與出生年份
  • 3 按條件查詢及模糊查詢——查詢成績不及格學生學號
  • 4 按條件查詢及模糊查詢——查詢20-23歲間學生姓名、系名、年齡
  • 5 按條件查詢及模糊查詢——查詢姓“李”學生姓名、學號、性別
  • 6 按條件查詢及模糊查詢——查詢名字第二字為“明”的男生姓名、系名
  • 7 對查詢結果排序——查詢資訊、計算機系學生姓名、系名,並系名升序、姓名降序
  • 8 對查詢結果排序——查詢課程號C2的學生學號、課程號、成績,按成績降序
  • 9 使用聚集函式的查詢——查詢計算機系學生人數
  • 10 使用聚集函式的查詢——查詢選修微機原理學生人數、平均成績、最高成績
  • 11 分組統計查詢——查詢各課程號及選課人數
  • 12 分組統計查詢——查詢選修兩門以上課程學生姓名和平均成績
  • 13 連線查詢——查詢選課學生學號、姓名、選課名稱及成績
  • 14 連線查詢——查詢課程號、任課教師姓名及選課人數
  • 15 自身連線——查詢比“劉偉”工資高的教師姓名、工資和劉偉的工資
  • 16 自身連線——查詢同時選修“課程設計”和“微機原理”學生姓名、系名
  • 17 外連線——查詢學生學號、姓名、選課名稱及成績
  • 18 返回一個值的子查詢
  • 19 返回一組值的子查詢——使用ANY謂詞查詢講授課號為C5的教師姓名
  • 20 返回一組值的子查詢——使用IN謂詞查詢講授課號為C5的教師姓名
  • 21 返回一組值的子查詢——使用ALL謂詞查詢其他系中比計算機系所有教師工資高的教師姓名、工資和所在系
  • 22 返回一組值的子查詢——使用EXISTS謂詞查詢講授課號為C5的教師姓名、系名
  • 23 返回一組值的子查詢——使用NOT EXISTS謂詞查詢至少選修了學生S2選修的全部課程的學生學號
  • 24 查詢年齡不大於19歲或屬於計算機系的學生

  系列文章中示例資料來源於《SQL Server實驗指導(2005版)》一書。大家用自己手頭的資料,可以將相關操作與分析過程加以完整重現。

1 指定列或全部列查詢——查詢S表學生記錄

(1) 啟動Microsoft SQL Server 2008 R2軟體;

(2) 在“物件資源管理器”窗格中,在“資料庫”處右鍵,在彈出的選單中選擇“附加”選項;

(3) 選擇需要加以附加的jxsk資料庫物理檔案,選擇定位資料夾“G:\sql\chutianjia sql”並選擇對應資料庫jxsk的物理檔案並選擇“確定”按鈕,再次選擇“確定”即可;

(4) 單擊螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT*FROM S
GO

(5) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

image

2 指定列或全部列查詢——查詢學生姓名與出生年份

(1) 單擊螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT SN,YEAR(GETDATE())-AGE AS 出生年份 FROM S
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

3 按條件查詢及模糊查詢——查詢成績不及格學生學號

(1) 單擊螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT DISTINCT  SNO FROM SC
WHERE SCORE<60
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

4 按條件查詢及模糊查詢——查詢20-23歲間學生姓名、系名、年齡

(1) 單擊螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT SN,DEPT,AGE FROM S
WHERE AGE BETWEEN 20 AND 23
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

5 按條件查詢及模糊查詢——查詢姓“李”學生姓名、學號、性別

(1) 單擊螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT SN,SNO,SEX FROM S
WHERE SN LIKE'李%'
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

6 按條件查詢及模糊查詢——查詢名字第二字為“明”的男生姓名、系名

(1) 單擊螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT SN AS 姓名,DEPT AS 系名 FROM S
WHERE SN LIKE '_明%' AND SEX='男'
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

7 對查詢結果排序——查詢資訊、計算機系學生姓名、系名,並系名升序、姓名降序

(1) 單擊螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT SN AS 姓名,DEPT AS 系名 FROM S
WHERE DEPT IN('資訊','計算機')
ORDER BY DEPT, SN DESC
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

8 對查詢結果排序——查詢課程號C2的學生學號、課程號、成績,按成績降序

(1) 單擊螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
SELECT SNO AS 學號, CNO AS 課號,SCORE AS 成績 FROM SC
WHERE CNO='C2' AND SCORE IS NOT NULL
ORDER BY SCORE DESC
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

9 使用聚集函式的查詢——查詢計算機系學生人數

(1) 單擊螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT COUNT(*) AS 計算機系人數 FROM S
WHERE DEPT='計算機'
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

10 使用聚集函式的查詢——查詢選修微機原理學生人數、平均成績、最高成績

(1) 單擊螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT COUNT(*) AS 人數, AVG(SCORE)AS 平均分數,
MAX (SCORE) AS 最高分數
FROM C,SC
WHERE CN='微機原理'AND C.CNO=SC.CNO
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

11 分組統計查詢——查詢各課程號及選課人數

(1) 單擊螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT CNO AS 課程號, COUNT (SNO) AS 人數
FROM SC
GROUP BY CNO
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖 。

12 分組統計查詢——查詢選修兩門以上課程學生姓名和平均成績

(1) 點選螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT SN AS 姓名,AVG(SCORE) AS 平均成績
from S,SC
WHERE S.SNO=SC.SNO
GROUP BY S.SN HAVING COUNT(*)>2
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

13 連線查詢——查詢選課學生學號、姓名、選課名稱及成績

(1) 點選螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT S.SNO,SN,CN,SCORE FROM S,C,SC
WHERE S.SNO=SC.SNO AND C.CNO=SC.CNO
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

14 連線查詢——查詢課程號、任課教師姓名及選課人數

(1) 點選螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT C.CNO,TN,COUNT(SC.SNO) AS 學生人數
FROM T,TC,C,SC
WHERE T.TNO=TC.TNO AND C.CNO=TC.CNO AND C.CNO=SC.CNO
GROUP BY C.CNO,T.TN
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

15 自身連線——查詢比“劉偉”工資高的教師姓名、工資和劉偉的工資

(1) 點選螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT X.TN AS 姓名,X.SAL AS 教師工資,Y.SAL AS 劉偉工資
FROM T AS X,T AS Y
WHERE X.SAL>Y.SAL AND Y.TN='劉偉'
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

16 自身連線——查詢同時選修“課程設計”和“微機原理”學生姓名、系名

(1) 點選螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT DISTINCT (SN) AS 姓名,DEPT AS 系名
FROM C AS C1,C AS C2,SC AS SC1, SC AS SC2,S
WHERE C1.CNO=SC1.CNO AND C2.CNO=SC2.CNO AND C1.CN='程式設計' AND C2.CN='微機原理' AND SC1.SNO=SC2.SNO AND SC1.SNO=S.SNO
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

17 外連線——查詢學生學號、姓名、選課名稱及成績

(1) 單擊螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT S.SNO,SN,CN,SCORE FROM S
LEFT OUTER JOIN SC ON S.SNO=SC.SNO
LEFT OUTER JOIN C ON C.CNO=SC.CNO
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

18 返回一個值的子查詢

(1) 單擊螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT TNO,TN,PROF FROM T
WHERE PROF=(SELECT PROF FROM T WHERE TN='劉偉')
GO

(3) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

19 返回一組值的子查詢——使用ANY謂詞查詢講授課號為C5的教師姓名

(1) 單擊螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT TN FROM T
WHERE TNO=ANY(SELECT TNO FROM TC WHERE CNO='C5')
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

20 返回一組值的子查詢——使用IN謂詞查詢講授課號為C5的教師姓名

(1) 單擊螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT TN FROM T
WHERE TNO IN (SELECT TNO FROM TC WHERE CNO='C5')
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

21 返回一組值的子查詢——使用ALL謂詞查詢其他系中比計算機系所有教師工資高的教師姓名、工資和所在系

(1) 單擊螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT TN,SAL,DEPT FROM T
WHERE SAL>ALL(SELECT SAL FROM T WHERE DEPT='計算機')AND (DEPT <>'計算機')
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

22 返回一組值的子查詢——使用EXISTS謂詞查詢講授課號為C5的教師姓名、系名

(1) 單擊螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT TN,DEPT FROM T
WHERE NOT EXISTS(SELECT*FROM TC WHERE TNO=T.TNO AND CNO='C5')
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

23 返回一組值的子查詢——使用NOT EXISTS謂詞查詢至少選修了學生S2選修的全部課程的學生學號

(1) 單擊螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT DISTINCT SNO FROM SC SCX
WHERE NOT EXISTS(SELECT*FROM SC SCY WHERE SCY.SNO='S2'AND NOT EXISTS (SELECT*FROM SC SCZ WHERE SCZ.SNO=SCX.SNO AND SCZ.CNO=SCY.CNO))
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

24 查詢年齡不大於19歲或屬於計算機系的學生

(1) 單擊螢幕上方 “工具欄”選單中的“新建查詢”按鈕,開啟“查詢編輯器”視窗,並在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
SELECT*FROM S WHERE DEPT='計算機'
UNION
SELECT*FROM S WHERE AGE<=19
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖。

  至此,大功告成。

相關文章