列别名主要用于缩短代码并使列名称更易读。
可以避免使用较长的表名和不必要的列标识(例如,表中可能有2个ID,但在语句中仅使用1ID),从而使代码变得更短。与表别名一起使用,这使您可以在数据库结构中使用更长的描述性名称,同时保持对该结构的查询简洁。
此外,有时需要它们(例如在视图中),以便命名计算的输出。
可以在所有SQL版本中使用双引号(")创建别名。
SELECT FName AS "First Name", MName AS "Middle Name", LName AS "Last Name" FROM Employees
您可以使用单引号('),双引号(")和方括号([])在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 AnyStreet | TownVille |
约翰·约翰逊 | 668 MyRoad | 安城 |
迈克尔·威廉姆斯 | 999高端博士 | 威廉斯堡 |
有些人发现使用=而不是As更易于阅读,尽管许多人反对这种格式,这主要是因为它不是标准的,因此并非所有数据库都广泛支持。它可能会与=角色的其他用途混淆。
另外,如果您需要使用保留字,则可以使用方括号或引号进行转义:
SELECT FName as "SELECT", MName as "FROM", LName as "WHERE" FROM Employees
同样,您可以使用所有不同的方法来在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)创建别名。
这将在执行时引起许多错误。