當查詢開始牽涉多張表或運算欄位時,清楚的命名與乾淨的過濾條件就是可讀性的關鍵。
別名(Aliases)能把長欄位或表名改成短而有意義的名稱(例如 city AS ci
、co.name AS country_name
),而 WHERE 子句則用比較運算子(=, !=/<> , <, >, <=, >=
)搭配 AND / OR / NOT 將結果精準縮小。
本篇延續 COUNTRY / CITY 兩張表,示範如何用別名讓 JOIN 更直覺、用 WHERE 寫出語意清楚的過濾。
範例資料:國家表(COUNTRY)
id | name | population | area |
1 | France | 66600000 | 640680 |
2 | Germany | 80700000 | 357000 |
… | … | … | … |
這是我們將用於示範的國家資料表,包含國家的 ID、名稱、人口數量和面積資訊。
範例資料:城市表(CITY)
id | name | country_id | population | rating |
1 | Paris | 1 | 2243000 | 5 |
2 | Berlin | 2 | 3460000 | 3 |
… | … | … | … | … |
這是城市資料表,包含城市的 ID、名稱、所屬國家 ID、人口數量和評分資訊。我們將使用這兩個表來展示各種 SQL 查詢。
使用別名(Aliases)
列別名
SELECT name AS city_name
FROM city;
將 name 列重命名為 city_name
表別名
SELECT co.name, ci.name
FROM city AS ci
JOIN country AS co
ON ci.country_id = co.id;
使用 ci 作為 city 表的別名,co 作為 country 表的別名
別名(Aliases)使查詢更易讀,特別是在處理多個表或複雜查詢時。使用 AS 關鍵字創建別名,但 AS 也可以省略。
過濾輸出 – 比較運算符
大於比較
SELECT name
FROM city
WHERE rating > 3;
獲取評分高於 3 的城市名稱
不等於比較
SELECT name
FROM city
WHERE name != 'Berlin'
AND name != 'Madrid';
獲取既不是 Berlin 也不是 Madrid 的城市名稱
WHERE 子句用於過濾結果。您可以使用比較運算符(如 =, !=, <, >, <=, >=)並結合邏輯運算符(AND, OR, NOT)創建複雜的過濾條件。
總結
- 別名最佳實踐
- 欄位或表都可取別名;
AS
可省略:FROM city ci JOIN country co ON ci.country_id = co.id
。 - 需要空白或特殊字元的別名請加引號(依資料庫為
"
或[]
)。
- 欄位或表都可取別名;
- WHERE 過濾心法
- 比較運算子配合 AND/OR/NOT;有混用時加括號,避免預設優先序誤解(多數系統
AND
優先於OR
)。 - NULL 不能用
= / !=
比:用IS NULL / IS NOT NULL
。 - ANSI 標準使用
<>
表示不等於;多數系統也支援!=
,但建議統一。
- 比較運算子配合 AND/OR/NOT;有混用時加括號,避免預設優先序誤解(多數系統
- 實務與效能
- 只選需要的欄位,避免長期使用
SELECT *
。
- 只選需要的欄位,避免長期使用
掌握別名讓結構清楚、WHERE 讓集合精準的兩大技巧,你的查詢將更好讀、更好維護,也更容易跑得快。