在SQL中,select语句中表名后面的字母是什么?

在SQL中,select语句中表名后面的字母是什么?,sql,Sql,在 a代表什么 谢谢。a是表的别名ADMIN A是表ADMIN的简写符号(术语:别名)A是所谓的表别名。在查询中的以下部分: SELECT a.NAME, a.NUMBER, a.STRING, a.RDB$DB_KEY FROM ADMIN a 通过在表名后加上“a”,您已经创建了一个别名,现在可以用它代替表名。如果没有别名,则需要使用表的全名,以便完全限定查询中引用的列名 如果没有表别名,查询将如下所示: FROM ADMIN a 尽管您仅从单个表中选择列,但在本例中实际上根本不需要表名

a代表什么


谢谢。

a是表的别名ADMIN


A是表ADMIN的简写符号(术语:别名)

A是所谓的表别名。在查询中的以下部分:

SELECT a.NAME, a.NUMBER, a.STRING, a.RDB$DB_KEY FROM ADMIN a
通过在表名后加上“a”,您已经创建了一个别名,现在可以用它代替表名。如果没有别名,则需要使用表的全名,以便完全限定查询中引用的列名

如果没有表别名,查询将如下所示:

FROM ADMIN a

尽管您仅从单个表中选择列,但在本例中实际上根本不需要表名(或别名)。

a是表的别名

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

在你提供的样本中,它实际上不是必需的

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

应该也能正常工作

查询使用的是类似的名称,这样您就不必写ADMIN.NAME、ADMIN.NUMBER等。如果您的表上有15个字段,并且您的表有一个类似VPCPDEEE的名称,那么反复键入相同的表名会非常麻烦。

a=ADMIN

等价物:

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

表ADMIN的别名。这里不需要,因为查询中只有一个表

如果有多个表,并且某些列相同,则需要区分它们。一种方法是将表名写在列名前面。例如:

SELECT ADMIN.NAME, ADMIN.NUMBER, ADMIN.STRING, ADMIN.RDB$DB_KEY FROM ADMIN
若要使其更短,请为表名添加别名

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

a用作ADMIN表的别名

什么时候使用别名是正确的,别名应该采取什么形式,这些都会引起sql编写者的强烈意见

关于这个问题,这里有几个问题


基本概念是“范围变量”

Chris Date和Hugh Darwen认为口语术语“别名”和SQL标准的术语“相关名称”都是“不恰当的”和“严重[误解]真实的状态”。 :

你可能有 学习了范围变量的不同术语,Codd在 他的早期论文,但直到2003年才被SQL标准采纳。在里面 有些SQL文本称为别名,但这根本不合适, 真的,因为这意味着它是一个表名,因此 表示表而不是行。SQL标准同样使用 不恰当的术语关联名称(它不表示关联, 不管是什么),但仅适用于名称为 明确给出(通过示例中的
作为
),但不适用于以下情况:
一个简单的表名兼作范围变量名。在SQL:2003中
采用范围变量作为一个方便的单一术语来涵盖
更一般的情况

:

关系模型中的范围变量是“范围”变量 覆盖“某些表中的行集(或某些表中的元组集 关系,更准确地说)。在SQL中,这样的变量由 在来自
加入
,如下例所示:

select a.Name, p.Name from ADMIN a, person p where person.id = admin.id
SX
这是一个范围变量,其范围在表
S
上;换句话说 换句话说,其允许值是表
S
中的行。你可以想到
选择要计算的表达式,如下所示。第一,
范围变量采用其允许的值之一,例如行
对于供应商
SNO='S1'
。该行中的状态值是否更大 超过15岁?如果是,则结果中会显示供应商编号
'S1'
。 接下来,范围变量移动到表
S
的另一行,例如 供应商的行
SNO='S2'
;同样,如果该行中的状态值 大于15,则相关供应商编号显示在 结果。等等

SQL要求始终使用
SELECT
表达式 用范围变量表示;如果没有这样的变量 显式指定时,它假定存在具有 与相应的表同名

警告:许多SQL文本 将范围变量名称(或相关名称)作为别名,以及 将它们描述为表的替代名称 它们的范围很广。但这样的描述严重歪曲了事实 事实上,真实的事态显示出严重的不信任 了解真实情况,并强烈反对 那个账户


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


那么,为什么不直接从AMDIN?Jack中选择名称、数字、字符串、RDB$DB_键呢?这是一个非常有效的选项query@Jack:如果您正在引用两个表(例如ADMIN_1、ADMIN_2),并且它们有相同的列(例如NAME),那么您的选择必须区分这些表,以便知道从哪个表中提取。因此,使用a.NAME比ADMIN_1.NAME短,阅读起来也很烦人,而且我们阅读代码的频率要比编写代码的频率高很多。别名增强了可读性。
SELECT SX.SNO 
FROM   S AS SX 
WHERE  SX.STATUS > 15