什么是「;“数据”;T-SQL中的关键字用于?

什么是「;“数据”;T-SQL中的关键字用于?,sql,sql-server,Sql,Sql Server,目前,我正在使用T-SQL/SQL Server 2016中的一个数据库,其中有些存储过程包含一个我不熟悉的关键字,即查询后的“数据”后缀: 从dbo.TableName数据中选择* 我很难找到任何关于这个“数据”关键字的用途的文档。有人能解释一下吗?这不是什么特定的关键词。它只是一个表别名。请注意,如果您将选择更改为 SELECT DATA.* FROM dbo.TableName DATA 它将起作用,因为表现在具有“数据”别名。出于同样的原因,这: SELECT dbo.TableNam

目前,我正在使用T-SQL/SQL Server 2016中的一个数据库,其中有些存储过程包含一个我不熟悉的关键字,即查询后的“数据”后缀:

从dbo.TableName数据中选择*


我很难找到任何关于这个“数据”关键字的用途的文档。有人能解释一下吗?

这不是什么特定的关键词。它只是一个表别名。请注意,如果您将选择更改为

SELECT DATA.* FROM dbo.TableName DATA
它将起作用,因为表现在具有“数据”别名。出于同样的原因,这:

SELECT dbo.TableName.* FROM dbo.TableName DATA

将引发错误。

这是表名的别名,通常在多次内部联接同一个表时使用,或者需要使用快捷方式名称调用表时使用。 例如,如果表具有名为ID的键,则:

   SELECT DATA.* FROM dbo.TableName DATA
where DATA.ID = "1"
就像

  SELECT dbo.TableName.* FROM dbo.TableName 
where TableName .ID = "1"

我可能被这个存储过程的不同寻常的设计所抛弃,“数据”后缀在单独的内部查询中使用了两次,但“数据”别名在查询本身中从未被实际引用。由于“数据”是一个保留关键字,所以它在我的IDE中也突出显示为蓝色!从逻辑上讲,这两个连接处于单独的嵌套级别,否则将出现错误。除此之外,别名创建得非常完美,似乎没有被使用过,尽管绕过别名的唯一方法是当它们的字段在所有联接表的所有字段中具有唯一名称时。@Wibbler,
DATA
目前不是SQL Server中的保留关键字,尽管它在,别名的更具描述性的名称可以避免与关键字冲突,也可以避免它在此处给您带来的混乱。您说得对了一半,数据被用作别名,但您的查询示例的语法无效,因为该别名已声明但未使用。它应该是
SELECT DATA.*从dbo.TableName DATA
@jarlh原始查询没有在t-SQL中解析,您认为这是语义问题而不是语法问题吗?@Wibbler,没有解析?奇怪。然而,如果是这样的话,这确实是一个语法错误。