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
)建立別名。
這將導致執行時出現大量錯誤。