SELECT a.NAME, a.NUMBER, a.STRING, a.RDB$DB_KEY FROM ADMIN a
什么做了立场?
谢谢。
SELECT a.NAME, a.NUMBER, a.STRING, a.RDB$DB_KEY FROM ADMIN a
什么做了立场?
谢谢。
一个是表ADMIN别名
A是一个速记符号(任期:别名)为表ADMIN
一个是所谓的表别名。在查询的一部分,上面写着:
FROM ADMIN a
通过将“一”表名之后,你已经创建了现在可以代替表名称中使用的别名。如果没有别名,则需要使用表的全名,以便完全限定查询中引用的列名。
没有表的别名,查询应该是这样的:
SELECT ADMIN.NAME, ADMIN.NUMBER, ADMIN.STRING, ADMIN.RDB$DB_KEY FROM ADMIN
虽然因为你只从单一的表,表名(或别名)选择列实际上并不需要在所有的这个例子。
A是表的别名。
您可以将a更改为任何有效的标识符,它不依赖于基础架构。 通常它用于区分不同表中的字段,每次保存您键入完整的表名称(使SQL更容易用短别名读取)。
它实际上不是你给的样品中要求,
SELECT NAME, NUMBER, STRING, RDB$DB_KEY FROM AMDIN
应该工作一样好
查询使用这样只是让你不必写ADMIN .NAME,ADMIN.NUMBER等等。如果你的桌子上有15个字段,而你的桌子上有一个像VPCPDEEE这样的名字,那么一遍又一遍地输入相同的表名非常麻烦。
一个= ADMIN
等效:
SELECT ADMIN.NAME, ADMIN.NUMBER, ADMIN.STRING, ADMIN.RDB$DB_KEY FROM ADMIN
为表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
a用作ADMIN表的别名。
如果使用别名是正确的,并且该别名应采用哪种形式,可以从sql的作者身上引发一些强烈的意见。
继承人几个关于这个问题的stackoverflow问题。
底层概念是一个“范围变量”的。
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
规格 装置中的任FROM
或JOIN
上下文中定义,如在下面的例子: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正确识别例如范围变量
+1两种速度打字和得到一个链接在那里了:) – 2009-06-15 15:53:09
那么为什么不干脆 选择名称,数字,字符串,RDB $ DB_KEY FROM AMDIN? – jackhab 2009-06-15 15:53:44