SQL 使用列别名进行选择

示例

列别名主要用于缩短代码并使列名称更易读。

可以避免使用较长的表名和不必要的列标识(例如,表中可能有2个ID,但在语句中仅使用1ID),从而使代码变得更短。与表别名一起使用,这使您可以在数据库结构中使用更长的描述性名称,同时保持对该结构的查询简洁。

此外,有时需要它们(例如在视图中),以便命名计算的输出。

所有版本的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地址2
詹姆斯·史密斯123 AnyStreetTownVille
约翰·约翰逊668 MyRoad安城
迈克尔·威廉姆斯999高端博士威廉斯堡

有些人发现使用=而不是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)创建别名。

这将在执行时引起许多错误。