首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

資料庫表查詢操作實戰演練(三):63 題從單表到視圖完整練習

     編輯:關於SqlServer

實驗環境

基於實驗一建立的五張表:Student、Course、SC、Teacher、TC。

核心練習分類

資料異動 (1-9)

  • 更新教師姓名
  • 插入/查詢/刪除成績測試資料(驗證完整性規則)
  • 建立 average 表,彙總各課程平均分
  • 更新學生年齡、補全郵遞區號
  • 歸零/刪除 average 表資料
  • 建立臨時表 tstudent,刪除學號含 101 的記錄

單表查詢 (10-27)

  • 基礎投影:學號/姓名、學號/姓名/系、詳細記錄
  • 計算欄位:姓名/年齡、姓名/出生年份
  • 條件篩選:修課學生、計算機系、年齡 <23、不及格學生、年齡區間、NOT BETWEEN、多系 OR、NOT IN 班級
  • 模糊查詢:學號前綴、姓氏、第二字、非姓劉、課程號模式
  • NULL 處理:缺考學生、有成績記錄

排序與彙總 (32-38)

  • 多欄排序:系升序 + 年齡降序
  • 聚合:學生總數、選課人數、最高分學生/分數、各課程選課人數
  • HAVING:計算機系選修 ≥2 課程學生

多表連接 (40-43)

  • 自然連接 Student + SC
  • 自連接:課程的間接先修課
  • 複合條件:選修 C001 且 ≥90 分
  • 三表連接:學生/課程/成績完整資訊

集合與嵌套查詢 (44-51)

  • 全課程學生:NOT EXISTS (SELECT * FROM Course WHERE NOT EXISTS (SELECT * FROM Score WHERE ...))
  • IN / EXISTS 子查詢:選修 C001 或 C007、同時選修 C001 和 C007
  • 子查詢關聯:選修「資料庫原理」學生資訊
  • 比較子查詢:其他班年齡 < 計算機系最小年齡
  • 自關聯子查詢:與「夏天」同系學生

視圖操作 (52-63)

  • 建立計算機系學生視圖 1/2(含 WITH CHECK OPTION)
  • 建立計算機系選修 C001 視圖、且 ≥90 分視圖
  • 建立學生年齡視圖、女生視圖、學生平均分視圖
  • 視圖查詢、視圖更新/插入/刪除驗證 CHECK OPTION 效果

代表性 SQL 範例

視圖 WITH CHECK OPTION

CREATE VIEW view_student2
AS SELECT sno, sname, ssex, sbirth, sclass 
FROM student WHERE sclass = '13z網絡'
WITH CHECK OPTION;  -- 插入/更新必須符合 WHERE 條件

全課程學生(雙重 NOT EXISTS)

SELECT Sname FROM Student 
WHERE NOT EXISTS (
    SELECT * FROM Course 
    WHERE NOT EXISTS (
        SELECT * FROM Score 
        WHERE Sno = Student.Sno AND Cno = Course.Cno
    )
);

與特定學生同系

SELECT sno, sname, ssex, 2014-YEAR(sbirth) AS age 
FROM student 
WHERE sdept = (SELECT sdept FROM student WHERE sname = '夏天') 
  AND sname != '夏天';

學習建議

  1. 逐題在 SSMS 執行,觀察結果與執行計畫
  2. 對比 IN vs EXISTS、JOIN vs 子查詢 效能
  3. 修改條件、欄位,練習變通
  4. 視圖部分重點體會 WITH CHECK OPTION 對 DML 的約束

這 63 題幾乎涵蓋 SQL 查詢操作所有核心場景,是從入門到精通的優秀練習集。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved