MySQL 表別名(Alias)
SQL 表別名
在 SQL 陳述式中,可以為表名稱及欄位(列)名稱指定別名(Alias),別名是 SQL 標準文法,幾乎所有的資料庫系統都支援。通過關鍵字 AS 來指定。
表別名文法:
SELECT column FROM table AS table_alias
上述 SQL 執行後的效果,給人感覺是對 table_alias 表進行查詢,但實際上對單表做簡單的別名查詢通常是無意義的。一般是對一個表要當作多個表來操作,或者是對多個表進行操作時,才設定表別名。
表別名使用例子
下面是一個簡單的多表操作的例子:
article 文章表:
user 使用者表:
當查詢一篇文章的時候,一般會同時將對應的文章作者查詢出來,通常的 SQL 陳述式為:
SELECT article.title,article.content,user.username FROM article, user WHERE article.aid=1 AND article.uid=user.uid
設定表別名後:
SELECT a.title,a.content,u.username FROM article AS a, user AS u where a.aid=1 and a.uid=u.uid
上述兩條 SQL 陳述式查詢結果是一樣的:
可以看出,使用表別名查詢,可以使 SQL 變得簡潔而更易書寫和閱讀,尤其在 SQL 比較複雜的情況下。除了使用別名來簡化 SQL 外,有些時候例如一個表做自身關聯時,必須要使用別名來當作兩個表進行關聯操作。
MySQL 欄位別名(列別名)
SQL 欄位別名
同本文前文講述的表別名一樣,SQL(MySQL) 也支援對錶的欄位(列)設定別名。
欄位別名文法:
SELECT column AS column_alias FROM table
欄位別名使用例子
欄位別名一個明顯的效果是可以自訂查詢資料返回的欄位名。如下面的表資料:
user 使用者表:
在查詢的時候,對 username 欄位使用別名:
SELECT username AS name,email FROM user
返回查詢結果如下:
當然如此簡單的定義欄位的別名是沒有太大實際意義的,欄位別名更多的意義是解決欄位名的重複,如一個表欄位被查詢兩次或更多次時:
SELECT username AS name,username,email FROM user
或者兩個及更多表進行查詢,有相同的返回欄位時:
article 文章表:
user 使用者表:
上面兩個表都定義了 title 欄位且都需要返回該欄位資料時,就需要定義欄位別名(至少定義一個):
SELECT a.title AS atitle,u.username,u.title AS utitle FROM article AS a, user AS u where a.uid=u.uid
返回查詢結果如下:
可以看出,當查詢返回的欄位名稱相同時,可以通過定義別名來避免衝突,上面查詢的例子同時定義了欄位別名與表別名。
提示
通常,定義欄位別名的 AS 關鍵字可以省略,即下面兩句 SQL 效果一致:
SELECT username AS name FROM userSELECT username name FROM user
但我們建議不要省略 AS 關鍵字。
別名(alias)是 SQL 的標準文法,幾乎所有的資料庫系統都支援。在處理一些複雜的查詢時,可以合理的定義表和欄位別名來使 SQL 陳述式看起來更加精簡易讀,也避免查詢返回相同欄位資料時的衝突。