SQL 使用列别名进行选择
示例
列别名主要用于缩短代码并使列名称更易读。
可以避免使用较长的表名和不必要的列标识(例如,表中可能有2个ID,但在语句中仅使用1ID),从而使代码变得更短。与表别名一起使用,这使您可以在数据库结构中使用更长的描述性名称,同时保持对该结构的查询简洁。
此外,有时需要它们(例如在视图中),以便命名计算的输出。
所有版本的SQL
可以在所有SQL版本中使用双引号(")创建别名。
SELECT
FName AS "First Name",
MName AS "Middle Name",
LName AS "Last Name"
FROM Employees不同版本的SQL
您可以使用单引号('),双引号(")和方括号([])在MicrosoftSQLServer中创建别名。
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例如,MSSQLServer中的另一个可用变化是<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两者都会导致:
有些人发现使用=而不是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同样,列别名可以用于同一查询的任何最终子句,例如ORDERBY:
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)创建别名。
这将在执行时引起许多错误。