Sql Clause(从句)、Command(命令)和Statement(语句),我看到这些词被交替使用。但它们在语法上是不同的。
我在这里读到了一些差异,已经有人提出了这个问题。但我还是不太清楚。
建议的问题只给出了语句和从句之间的区别。那么' SELECT foo FROM bar JOIN quux WHERE x = y;'被提及为语句是该问题的答案。那么查询(Query)和语句之间的区别是什么呢?
所以我想知道它们之间到底有什么区别?或者我可以随波逐流吗?谢谢。
Sql Clause(从句)、Command(命令)和Statement(语句),我看到这些词被交替使用。但它们在语法上是不同的。
我在这里读到了一些差异,已经有人提出了这个问题。但我还是不太清楚。
建议的问题只给出了语句和从句之间的区别。那么' SELECT foo FROM bar JOIN quux WHERE x = y;'被提及为语句是该问题的答案。那么查询(Query)和语句之间的区别是什么呢?
所以我想知道它们之间到底有什么区别?或者我可以随波逐流吗?谢谢。
我会给你介绍SQL Server中使用的术语。其中一些(当然包括你问题中的)在所有数据库系统中都非常常见,而其他一些则是特定于系统的。
从最高级别到最低级别:
脚本。 包含SQL代码的单个文件。 可能包含多个批次
批次。 批处理是提交给服务器的工作单位。 在SQL Server中,每个批次(通常)由GO
分隔。将脚本拆分为批次是由客户端工具执行的任务。 一个批次可以包含多个语句。
语句(也称为命令1或查询)。 这是服务器处理的最小单元。 即,每个语句都是“完整”的一些内容,这将导致服务器执行一些工作,并可能导致数据被修改和/或结果集被返回。 通常,服务器会独立编译每个语句(但可能会在执行它们之前为批次中的每个语句执行每个编译)。
第二款。Clause(子句)是语句的子单元 - 但请注意,某些语句可能仅包含一个Clause,这可能会使情况变得有些混乱。例如,一些数据库系统将SELECT 10;
视为查询。这是一个仅包含SELECT
Clause的SELECT
语句。多个语句类型可以使用相同的Clause类型。例如,SELECT
和DELETE
语句都可以包含WHERE
Clause。此外,大多数语句都将具有共享相同名称的Clause。
第二款。Expression(表达式)是产生标量值的东西(尽管在大多数情况下,这被理解为“每行一个标量值”,而不是“总共一个标量值”)
WHERE
子句、WHEN
子句和CHECK
约束中。这些特别指出,因为并非所有的数据库系统都支持用户可见的布尔数据类型,因此它们并不总是像其他表达式那样被处理。1许多客户端库将公开某种命令对象,用于向数据库系统提交查询。然而,更加混淆的是,其中许多将接受一批。尽管如此,“命令”似乎已经成为与“语句”具有相似含义的术语,可能是因为在绝大多数情况下,命令对象并不用于一次执行多个语句。
2请注意,某种程度上,它们具有相同的级别。SELECT子句可以包含一个CASE表达式,其中包括多个WHEN和THEN子句。