2

为什么这些语句有效 [am Using SQL2008 R2]

Select* FROM TableName   --UPDATE: this is not allowed in Oracle (10g)

Select *From TableName  --UPDATE: this is allowed in Oracle (10g)

现在这个

Select*From TableName   --UPDATE: this is not allowed in Oracle (10g)

更新: SQL Server 中允许所有这三个

我是这样认识的Select * From TableName

4

2 回答 2

4

在这些情况下,不需要空格来识别语句的不同标记。

通常,编程语言解析器通过将文本分解为不同的标记来工作。在这种情况下,在 SQL Server 中,关键字搜索在“选择”处完成,因为您不能使用带有*. 被*放入下一个令牌。

你甚至可以这样做(看起来没有空间)。尽管可能很丑

select*from[master]..[spt_values]where[type]='p'
于 2012-10-18T17:38:00.870 回答
0

您是在问它们有效的原因还是它们能够执行您需要的操作,即列出所有内容 - 字段、记录和命名数据库的数据 - 整个命名数据库结构?原因是 SQL 理解并记下它的关键字或它的内置命令,只要你正确拼写命令词,不管你把字符放在哪里,它总是有效的,并且命令将被执行. 只要命令的语法和结构是完整的,例如当你有 SELECT (what( )) FROM (where(tablename));时 SELECT 命令就完成了。

如果您愿意,您也可以添加 WHERE 命令,例如: SELECT (what(*)) FROM (where(tablename)) WHERE (condition); 每个内置命令或与 SQL 相关的关键字之间的空格无关紧要。

于 2012-10-18T17:51:29.843 回答