SELECT 使用列別名
列別名主要用於縮短程式碼並使列名更具可讀性。
程式碼變得更短,因為可以避免長表名和不必要的列標識 (例如,表中可能有 2 個 ID,但在語句中只使用了一個 ID) 。除了表別名, 這允許你在資料庫結構中使用更長的描述性名稱,同時保持對該結構的查詢簡潔。
此外,有時需要它們,例如在檢視中,以便命名計算輸出。
所有版本的 SQL
可以使用雙引號(")在所有 SQL 版本中建立別名。
SELECT
FName AS "First Name",
MName AS "Middle Name",
LName AS "Last Name"
FROM Employees
不同版本的 SQL
你可以使用單引號('),雙引號(")和方括號([])在 Microsoft SQL Server 中建立別名。
SELECT
FName AS "First Name",
MName AS 'Middle Name',
LName AS [Last Name]
FROM Employees
兩者都會導致:
| 名字 | 中間名字 | 姓 |
|---|---|---|
| 詹姆士 | 約翰 | 工匠 |
| 約翰 | 詹姆士 | 約翰遜 |
| 邁克爾 | 馬庫斯 | 威廉姆斯 |
此語句將返回具有給定名稱(別名)的 FName 和 LName 列。這是使用 AS 運算子後跟別名,或者只是在列名後直接寫別名來實現的。這意味著以下查詢具有與上述相同的結果。
SELECT
FName "First Name",
MName "Middle Name",
LName "Last Name"
FROM Employees
| 名字 | 中間名字 | 姓 |
|---|---|---|
| 詹姆士 | 約翰 | 工匠 |
| 約翰 | 詹姆士 | 約翰遜 |
| 邁克爾 | 馬庫斯 | 威廉姆斯 |
但是,顯式版本(即使用 AS 運算子)更具可讀性。
如果別名有一個不是保留字的單詞,我們可以用單引號,雙引號或括號來編寫它:
SELECT
FName AS FirstName,
LName AS LastName
FROM Employees
| 名字 | 姓 |
|---|---|
| 詹姆士 | 工匠 |
| 約翰 | 約翰遜 |
| 邁克爾 | 威廉姆斯 |
MS SQL Server 中可用的另一個變體是 <alias> = <column-or-calculation>,例如:
SELECT FullName = FirstName + ' ' + LastName,
Addr1 = FullStreetAddress,
Addr2 = TownName
FROM CustomerDetails
這相當於:
SELECT FirstName + ' ' + LastName As FullName
FullStreetAddress As Addr1,
TownName As Addr2
FROM CustomerDetails
兩者都會導致:
| 全名 | 地址 1 | ADDR2 |
|---|---|---|
| 詹姆斯史密斯 | 123 AnyStreet | TownVille |
| 約翰約翰遜 | 668 MyRoad | 北京市東城 |
| Michael Williams | 999 高階博士 | Williamsburgh |
有些人發現使用 = 而不是 As 更容易閱讀,但很多人建議不要使用這種格式,主要是因為它不是標準的,所以沒有得到所有資料庫的廣泛支援。它可能會導致與 = 字元的其他用法混淆。
所有版本的 SQL
此外,如果你需要使用保留字,可以使用括號或引號來轉義:
SELECT
FName as "SELECT",
MName as "FROM",
LName as "WHERE"
FROM Employees
不同版本的 SQL
同樣,你可以使用所有不同的方法在 MSSQL 中轉義關鍵字:
SELECT
FName AS "SELECT",
MName AS 'FROM',
LName AS [WHERE]
FROM Employees
| 選擇 | 從 | 哪裡 |
|---|---|---|
| 詹姆士 | 約翰 | 工匠 |
| 約翰 | 詹姆士 | 約翰遜 |
| 邁克爾 | 馬庫斯 | 威廉姆斯 |
此外,列別名可以用於同一查詢的任何最終子句,例如 ORDER BY:
SELECT
FName AS FirstName,
LName AS LastName
FROM
Employees
ORDER BY
LastName DESC
但是,你可能不會使用
SELECT
FName AS SELECT,
LName AS FROM
FROM
Employees
ORDER BY
LastName DESC
從這些保留字(SELECT 和 FROM)建立別名。
這將導致執行時出現大量錯誤。