SELECT 基礎查詢
SELECT — 查詢的起點
比喻:SELECT 就像在餐廳點菜 🍽️
你告訴服務員「我要看菜單上的主菜和甜點」—— SELECT 就是告訴資料庫「我要看哪些欄位的資料」。
查詢所有欄位
SELECT * -- ← * 代表「所有欄位」
FROM Students; -- ← 從 Students 這張表查
逐行解析:
SELECT * -- 「我要全部欄位」——Id, Name, Age, Email 都給我
FROM Students; -- 「從 Students 表裡面找」——指定資料來源
結果:
Id | Name | Age | Email
----+------+-----+---------------
1 | 小明 | 20 | ming@test.com
2 | 小華 | 22 | hua@test.com
3 | 小美 | 21 | mei@test.com
查詢特定欄位
SELECT Name, Age -- ← 只要名字和年齡
FROM Students; -- ← 從 Students 表查
逐行解析:
SELECT Name, Age -- 「我只要 Name 跟 Age 這兩欄」——其他欄位不要
FROM Students; -- 「來源是 Students」
結果只有兩欄:
Name | Age
------+-----
小明 | 20
小華 | 22
小美 | 21
💡 實務建議: 盡量不用
SELECT *,只選需要的欄位,效能更好。
欄位別名(AS)
SELECT Name AS 姓名, -- ← 把 Name 顯示為「姓名」
Age AS 年齡, -- ← 把 Age 顯示為「年齡」
Email AS 電子信箱 -- ← 把 Email 顯示為「電子信箱」
FROM Students;
逐行解析:
SELECT Name AS 姓名 -- Name 欄位改名叫「姓名」,只影響顯示,不影響資料庫
Age AS 年齡 -- AS 是取別名的關鍵字
Email AS 電子信箱 -- 別名可以用中文,讓報表更易讀
FROM Students;
去除重複(DISTINCT)
SELECT DISTINCT Age -- ← 只取不重複的年齡
FROM Students; -- ← 從 Students 表查
假設有 5 個學生,其中 2 人都是 20 歲:
-- 沒有 DISTINCT → 20 會出現兩次
-- 有 DISTINCT → 20 只出現一次
Age
-----
20
21
22
計算欄位
SELECT Name, -- ← 學生姓名
Age, -- ← 現在年齡
Age + 1 AS 明年年齡, -- ← 用運算產生新欄位
Age * 2 AS 雙倍年齡 -- ← 可以做任何數學運算
FROM Students;
SQL 可以直接在 SELECT 裡做運算,結果會變成一個臨時欄位。
字串串接
-- PostgreSQL 用 || 串接字串
SELECT Name || ' (' || Age || '歲)' AS 簡介
FROM Students;
-- 結果:小明 (20歲)、小華 (22歲)...
-- SQL Server 用 + 串接
SELECT Name + ' (' + CAST(Age AS VARCHAR) + '歲)' AS 簡介
FROM Students;
小結
| 語法 | 用途 |
|---|---|
SELECT * |
查全部欄位 |
SELECT 欄位1, 欄位2 |
查指定欄位 |
AS 別名 |
欄位重新命名 |
DISTINCT |
去重複 |
| 運算式 | 產生計算欄位 |