資料庫 SQL 入門(02):用別名(Aliases)提高可讀性,用 WHERE 把資料準確篩出來

當查詢開始牽涉多張表運算欄位時,清楚的命名與乾淨的過濾條件就是可讀性的關鍵。

別名(Aliases)能把長欄位或表名改成短而有意義的名稱(例如 city AS cico.name AS country_name),而 WHERE 子句則用比較運算子=, !=/<> , <, >, <=, >=)搭配 AND / OR / NOT 將結果精準縮小。

本篇延續 COUNTRY / CITY 兩張表,示範如何用別名讓 JOIN 更直覺、用 WHERE 寫出語意清楚的過濾。

範例資料:國家表(COUNTRY)

idnamepopulationarea
1France66600000640680
2Germany80700000357000

這是我們將用於示範的國家資料表,包含國家的 ID、名稱、人口數量和面積資訊。

範例資料:城市表(CITY)

idnamecountry_idpopulationrating
1Paris122430005
2Berlin234600003

這是城市資料表,包含城市的 ID、名稱、所屬國家 ID、人口數量和評分資訊。我們將使用這兩個表來展示各種 SQL 查詢。

SQL code on computer screen with database visualization

使用別名(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 也可以省略。

filter funnel showing data being filtered by criteria

過濾輸出 – 比較運算符

大於比較

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 標準使用 <> 表示不等於;多數系統也支援 !=,但建議統一。
  • 實務與效能
    • 只選需要的欄位,避免長期使用 SELECT *

掌握別名讓結構清楚WHERE 讓集合精準的兩大技巧,你的查詢將更好讀、更好維護,也更容易跑得快。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端