Navicat Blog

使用資料庫別名 2023 年 7 月 10 日,由 Robert Gravelle 撰寫

SQL 支援使用別名來為資料表或欄位指定暫時的名稱。別名不僅可以減少打字量,還可以使查詢更加易讀和易懂。在今天的文章中,我們將學習如何使用 Navicat Premium 16.2 在查詢中加入別名。

SQL 別名概述

如介紹中所述,資料表和欄位名稱都可以使用別名。以下是各自的語法:

別名欄位語法

SELECT 
  column_name [AS] alias_name,
  column_name AS 'Alias Name' -- for names with spaces
FROM table_name;

別名資料表語法

SELECT column_name(s)
FROM table_name [AS] alias_name;

有兩個關於使用別名的要點需要考慮:

  • 別名通常使用 AS 關鍵字來指定,但也可以選擇省略。
  • 別名只存在於該查詢時間內。

在 JOIN 查詢中的資料表別名

以下是一個針對 Sakila 範本資料庫的查詢,用於擷取關於特定電影所有副本的資訊:

SELECT *
FROM film f 
  INNER JOIN inventory i ON i.film_id = f.film_id
WHERE i.store_id = 1 AND f.title = "Academy Dinosaur";

在上述查詢中,由於 film 和 inventory 資料表都包含 film_id 欄位,因此必須是完整名稱,即在欄位名稱前加上資料表名稱。在這種情況下,就可以使用別名來縮短查詢語句。

以下是在 Navicat 中的查詢及其結果:

film_query (80K)

欄位別名

在欄位名稱方面,設計資料庫資料表時通常會使用縮寫來簡化欄位名稱。例如:

  • "so_no" 代表 "sales order number"。
  • "qty" 代表 "quantity"。

在這種情況下,你可以使用欄位別名來使欄位內容更加直觀易懂。以下是一個例子:

SELECT
	inv_no AS invoice_no,
	amount,
	due_date AS 'Due date',
	cust_no 'Customer No'
FROM
	invoices;

當然,你也可以為運算式指定欄位別名,如下圖所示:

expression_alias (113K)

上述查詢選取了產品目前的價格和漲價後的價格。

欄位別名的限制

由於欄位別名是在 SELECT 子句中指定的,因此你只能在 SELECT 子句之後評估的子句中參考該欄位別名。因此,你不能在 WHERE 子句中使用別名,這樣做會導致錯誤:

alias_error (42K)

這是因為資料庫在評估 SELECT 子句之前評估 WHERE 子句。因此,在評估 WHERE 子句時,資料庫沒有 NewPrice 欄位別名的資訊。

但是,在 ORDER BY 子句中使用欄位別名是可以的,因為它是在 SELECT 子句之後評估的:

alias_in_order_by (113K)

資料庫按以下順序評估查詢的子句:

FROM > SELECT > ORDER BY

資料表別名與 Navicat

在 Navicat 中,一旦定義了資料表別名,它將出現在自動完成清單中。

alias_in_navicat (65K)

因此,使用別名就更加省時方便!

關於使用資料庫別名的結語

在今天的文章中,我們學習了如何在使用 Navicat Premium 16.2 在查詢中加入別名。它是一種可使查詢更加易讀和易懂的簡單方法,這是很重要的,因為程式碼不僅僅是用於執行,還是一種溝通機制。

Navicat Blogs
Feed Entries
Blog Archives
Share