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)创建别名。
这将导致执行时出现大量错误。