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

SQL Server 教程:SELECT 敘述完整入門指南

     編輯:關於SqlServer

1. 基礎 SELECT:選取欄位與全表

-- 選取特定欄位
SELECT 欄位名1, 欄位名2 FROM 資料表名;

-- 選取所有欄位
SELECT * FROM 資料表名;

2. WHERE 條件過濾

SELECT 欄位名 FROM 資料表名 WHERE 條件運算式;
-- 範例:年齡大於 25 且城市為 Taipei
SELECT * FROM Users WHERE Age > 25 AND City = 'Taipei';

3. AS 別名:提升可讀性與衍生欄位命名

-- 欄位別名
SELECT FirstName AS 名字, LastName AS 姓氏 FROM Users;

-- 衍生欄位必須加別名
SELECT UnitPrice * Quantity AS TotalAmount FROM [Order Details];

-- 表別名 (簡化多表查詢)
SELECT u.Name, o.OrderDate FROM Users u JOIN Orders o ON u.Id = o.UserId;

COUNT() 函數:統計列數或非 NULL 值數。`COUNT(*)` 含 NULL,`COUNT(欄位)` 排除 NULL。

4. JOIN 多表關聯查詢

-- 內連接:僅返回雙方匹配的列
SELECT A.Symbol, A.SName 
FROM SecurityCode A 
JOIN DayQuote B ON A.Symbol = B.Symbol;

-- LEFT JOIN:保留左表所有列,右表無匹配則 NULL
SELECT u.Name, o.OrderDate FROM Users u LEFT JOIN Orders o ON u.Id = o.UserId;

5. ORDER BY 排序

SELECT 欄位名 FROM 資料表名 ORDER BY 欄位名 [ASC | DESC];
-- 多欄位排序:先按城市升序,同城市按年齡降序
SELECT * FROM Users ORDER BY City ASC, Age DESC;

6. LIMIT / TOP 分頁與限制筆數

MySQL / PostgreSQL / SQLite:

SELECT * FROM Table LIMIT 5;           -- 前 5 筆
SELECT * FROM Table LIMIT 5, 10;       -- 跳過 5 筆,取 10 筆 (第 6-15 筆)
SELECT * FROM Table LIMIT 95, -1;      -- 第 96 筆到結束

SQL Server / Access:

SELECT TOP 5 * FROM Table;             -- 前 5 筆
SELECT TOP 10 PERCENT * FROM Table;    -- 前 10%
-- 分頁 (SQL Server 2012+)
SELECT * FROM Table ORDER BY Id OFFSET 10 ROWS FETCH NEXT 20 ROWS ONLY;

7. DML 核心指令速查

指令語法範例說明
INSERTINSERT INTO 表 (欄1,欄2) VALUES (值1,值2);指定欄位插入,避免結構變更導致錯誤
UPDATEUPDATE 表 SET 欄1=新值 WHERE 條件;**必加 WHERE**,否則全表更新
DELETEDELETE FROM 表 WHERE 條件;**必加 WHERE**,`DELETE * FROM 表` 等同 `TRUNCATE` (不可回滾)

練習建議

  1. 在 Northwind/AdventureWorks 範例資料庫實作上述所有語法。
  2. 嘗試 `JOIN` 三張表以上,觀察執行計劃。
  3. 比較 `TOP`、`LIMIT`、`OFFSET/FETCH` 在不同資料庫的差異。
  4. 撰寫一條 `UPDATE` 含 `CASE WHEN` 邏輯,體會集合運算威力。

小結

SELECT 是 SQL 查詢的基石。熟練掌握「欄位選取 → 來源表 → 連接關係 → 過濾條件 → 分組彙總 → 排序 → 限制筆數」的完整鏈路,並理解各資料庫方言差異 (TOP vs LIMIT vs OFFSET/FETCH),是從入門到進階的必經之路。

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