2009-06-15 281 views

回答

24

一个是表ADMIN别名

SQL Alias

+3

+1两种速度打字和得到一个链接在那里了:) – 2009-06-15 15:53:09

+0

那么为什么不干脆 选择名称,数字,字符串,RDB $ DB_KEY FROM AMDIN? – jackhab 2009-06-15 15:53:44

0

A是一个速记符号(任期:别名)为表ADMIN

1

一个是所谓的表别名。在查询的一部分,上面写着:

FROM ADMIN a 

通过将“一”表名之后,你已经创建了现在可以代替表名称中使用的别名。如果没有别名,则需要使用表的全名,以便完全限定查询中引用的列名。

没有表的别名,查询应该是这样的:

SELECT ADMIN.NAME, ADMIN.NUMBER, ADMIN.STRING, ADMIN.RDB$DB_KEY FROM ADMIN 

虽然因为你只从单一的表,表名(或别名)选择列实际上并不需要在所有的这个例子。

1

A是表的别名。

您可以将a更改为任何有效的标识符,它不依赖于基础架构。 通常它用于区分不同表中的字段,每次保存您键入完整的表名称(使SQL更容易用短别名读取)。

它实际上不是你给的样品中要求,

SELECT NAME, NUMBER, STRING, RDB$DB_KEY FROM AMDIN 

应该工作一样好

1

查询使用这样只是让你不必写ADMIN .NAME,ADMIN.NUMBER等等。如果你的桌子上有15个字段,而你的桌子上有一个像VPCPDEEE这样的名字,那么一遍又一遍地输入相同的表名非常麻烦。

0

一个= ADMIN

等效:

SELECT ADMIN.NAME, ADMIN.NUMBER, ADMIN.STRING, ADMIN.RDB$DB_KEY FROM ADMIN 
2

为表ADMIN的别名。这里没有必要,因为你的查询只有一个表。

当你有多个表,并且一些列是相同的,那么你需要区分它们。一种方法是在列名称前写入表名。例如,

Select ADMIN.Name, person.name from ADMIN, person where person.id = admin.id 

为了缩短这个时间,为表名添加别名。

select a.Name, p.Name from ADMIN a, person p where person.id = admin.id 
1

底层概念是一个“范围变量”的。

Chris Date和Hugh Darwen认为俗语“别名”和SQL标准的术语“相关名称”都是“不恰当的”,“严重地[误导]真实事态”。

Hugh Darwen, “SQL: A Comparative Survey”

你可能有 了解到的范围内变化,这是通过使用在科德他 早期的论文而不是由SQL标准采用直到2003年在 一些SQL文本是一个不同的项被称为别名,但实际上并不合适,因为这意味着它是表名,因此 表示表而不是行。 SQL标准使用不相关的术语关联名称(它不表示任何关联, ),但仅限于名称为 (通过示例中的AS)明确给出的情况,而不用于名称为 情况,其中 一个简单的表名称作为范围变量名称加倍。在SQL:2003 范围变量被采用作为一个方便的单个术语来覆盖 更一般的情况。

C. J. Date, “SQL and Relational Theory: How to Write Accurate SQL Code”

在关系模型中的范围内的变量是变量,在某些表中的行的集合(或在一些 关系元组的集合“过范围 ”,是更确切)。在SQL中,这样变量被的AS规格 装置中的任FROMJOIN上下文中定义,如在下面的例子:

SELECT SX.SNO 
FROM S AS SX 
WHERE SX.STATUS > 15 

SX这里是一个范围变量,取值范围在表S;在其他 字中,其允许值是表S的行。您可以整体考虑 SELECT表达式,如下所述。首先, 范围变量采用其允许值之一,例如供应商SNO = ‘S1’的行 。该行中的状态值是否比15更大 ?如果是,则供应商编号’S1’将显示在结果中。 接下来,范围变量移动到表S的另一行,例如供应商SNO = ‘S2’的 行;再次,如果该行 中的状态值大于15,则相关供应商编号出现在 结果中。等等

SQL要求SELECT表达式始终为 根据范围变量制定;如果没有这样的变量 明确指定,它假设隐含那些与 相同的名称对应表

存在

警告:许多 参考范围变量名称(或相关名)作为别名 SQL文本,和 将它们描述为好像它们仅仅是表 的替代名称。但是,这样的表征严重歪曲事实的真实情况 - 事实上,它严重缺乏了解真正发生的事情,并在该帐户的 上被强烈弃用。


有趣的是,LINQ正确识别例如范围变量

enter image description here