从我熟悉的不同SELECT语句

时间:2012-10-18 17:35:56

标签: sql-server sql-server-2008-r2

为什么这些语句有效[使用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

2 个答案:

答案 0 :(得分:5)

在这些实例中,不需要空格来识别语句的不同标记。

通常,编程语言解析器通过将文本分成不同的标记来工作。在本例中的SQL Server中,关键字搜索在“select”处完成,因为您不能拥有*的关键字。 *被放入下一个标记。

你甚至可以这样做(看不到空间)。可能是丑陋的

select*from[master]..[spt_values]where[type]='p'

答案 1 :(得分:0)

您是在问他们有效的原因,还是为什么他们能够执行您需要的操作,即列出所有内容 - 包括指定数据库的字段,记录和数据 - 整个命名数据库结构?原因是SQL理解并注意到它的关键字或其内置命令,就像你拼写命令字一样,无论你放置字符的位置如,它总能工作,以及命令将被执行。尽管命令的语法和结构是完整的,例如当你有SELECT(what())FROM(where(tablename));

时,SELECT命令就完成了

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