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

SQL 簡單查詢完全教學:從 SELECT 基礎到 GROUP BY 進階

     編輯:關於SqlServer

1. 選擇欄位

(1) 指定欄位

SELECT Sno, Sname FROM Student;  -- 順序可自訂,不受表定義限制

(2) 全部欄位

SELECT * FROM Student;  -- 全表掃描,最簡單但效能最差

(3) 計算值與別名

SELECT Sname, 2004 - Sage AS BirthYear FROM Student;
SELECT Sname, 'Year of Birth:', 2004 - Sage AS BirthYear FROM Student;

算術運算、字串常數、函數皆可用於選擇清單,建議搭配 AS 別名提升可讀性。

2. 選擇列

(1) 去除重複:DISTINCT

SELECT DISTINCT Sno FROM SC;  -- 避免同一學生多門課導致重複學號

(2) 條件篩選:WHERE 子句

條件類型謂詞/運算子
比較=, >, >=, <, <=, <> (!=), NOT
範圍BETWEEN ... AND, NOT BETWEEN ... AND
集合IN, NOT IN
字串比對LIKE, NOT LIKE
空值IS NULL, IS NOT NULL
多重條件AND, OR

範例精選

  • 比較:WHERE Sdept = '計算機系'
  • 範圍:WHERE Sage BETWEEN 20 AND 23
  • 集合:WHERE Sdept IN ('資訊系','數學系','計算機系')
  • 字串:WHERE Sname LIKE '劉%'、WHERE Sname LIKE '__[大小]%'
  • 空值:WHERE Grade IS NULL(不可用 = NULL)
  • 多重:WHERE Sdept='計算機系' AND Sage<20

3. 結果排序:ORDER BY

SELECT Sno, Grade FROM SC WHERE Cno='3' ORDER BY Grade DESC;
SELECT * FROM Student ORDER BY Sdept ASC, Sage DESC;

預設升序,NULL 值升序排最後、降序排最前。

4. 聚合函數

DISTINCT 可用於聚合函數內去重,ALL 為預設保留重複。

範例

SELECT COUNT(*) FROM Student;
SELECT COUNT(DISTINCT Sno) FROM SC;
SELECT AVG(Grade) FROM SC WHERE Cno='1';
SELECT MAX(Grade), MIN(Grade), AVG(Grade) FROM SC WHERE Cno='1';

5. 分組查詢:GROUP BY & HAVING

SELECT Cno, COUNT(Sno) FROM SC GROUP BY Cno;
SELECT Sno FROM SC WHERE Sdept='資訊系' GROUP BY Sno HAVING COUNT(*) > 3;

核心差異:WHERE 篩選「列」,HAVING 篩選「群組」。

總結

掌握 SELECT 六大子句(SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY)的執行順序與互動關係,是撰寫高效、正確 SQL 查詢的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
函數說明
COUNT(*)統計列數
COUNT(欄位)統計非空值個數
SUM(欄位)數值加總
AVG(欄位)數值平均
MAX/MIN(欄位)最大/最小值