SQL 中的子句、命令、语句和查询有什么区别?
What is difference between clause, command, statement and query in SQL?
Sql Clause、Command 和 Statement,我看到这些词可以互换使用。但是它们在语法上是不同的。
我读了一些差异 here。已经有人问过了。
还是不太清楚
建议的问题仅给出语句和子句之间的区别。和`SELECT foo FROM bar JOIN quux WHERE x = y;'被提及为声明是该问题的答案。那我想问下Query和Statement有什么区别
所以我想知道它们之间到底有什么区别?或者我可以随波逐流吗?谢谢
我会给你 SQL 服务器使用的术语。其中一些(当然是您问题中的那些)在所有数据库系统中都非常普遍,有些可能是系统特定的。
从最高级别到最低级别:
脚本。包含 SQL 代码的单个文件。可能包含多个批次
批处理。批次是将工作提交到服务器的单位。在 SQL 服务器中,每个批次(通常)由 GO
分隔。将脚本拆分成批次是客户端工具执行的工作。一个批处理可能包含多个语句。
语句(a.k.a命令1或查询)。这是服务器将处理的最小个体工作单元。 IE。每个语句都是一些东西 "complete",这将导致服务器执行一些工作,并可能导致数据被修改 and/or 返回结果集。通常,服务器将单独编译每个语句(但可以在执行任何语句之前对批处理中的每个语句进行每次编译)。
条款2。子句是语句的子单元——但是,请注意,某些语句可能只包含一个子句,这可能看起来有点混乱。例如,某些数据库系统将接受 SELECT 10;
作为查询。这是一个仅由 SELECT
子句组成的 SELECT
语句。多个语句类型可以使用相同的子句类型。例如。 SELECT
和 DELETE
语句都可以包含 WHERE
子句。此外,大多数语句都有一个共享相同名称的子句。
表达式2。表达式是产生标量值的东西(请注意,在大多数情况下,这被理解为 "one scalar value per row",而不是 "one scalar value in total")
- 谓词。一个布尔表达式,最常在
WHERE
子句、WHEN
子句和 CHECK
约束中遇到。之所以特别提到这些,是因为并非所有数据库系统都支持用户可见的布尔数据类型,因此它们并不总是与其他表达式一样对待。
1许多客户端库会公开某种命令对象,用于向数据库系统提交查询。然而,为了进一步混淆水域,其中许多将接受一批。尽管如此,command 似乎与 statement 具有相似的含义,这可能是因为在绝大多数情况下,command 对象不会一次用于多个语句。
2请注意,在某种程度上,这些共享同一级别。 SELECT
子句可能包含一个 CASE
表达式,该表达式由多个 WHEN
和 THEN
子句组成。
Sql Clause、Command 和 Statement,我看到这些词可以互换使用。但是它们在语法上是不同的。
我读了一些差异 here。已经有人问过了。 还是不太清楚
建议的问题仅给出语句和子句之间的区别。和`SELECT foo FROM bar JOIN quux WHERE x = y;'被提及为声明是该问题的答案。那我想问下Query和Statement有什么区别
所以我想知道它们之间到底有什么区别?或者我可以随波逐流吗?谢谢
我会给你 SQL 服务器使用的术语。其中一些(当然是您问题中的那些)在所有数据库系统中都非常普遍,有些可能是系统特定的。
从最高级别到最低级别:
脚本。包含 SQL 代码的单个文件。可能包含多个批次
批处理。批次是将工作提交到服务器的单位。在 SQL 服务器中,每个批次(通常)由
GO
分隔。将脚本拆分成批次是客户端工具执行的工作。一个批处理可能包含多个语句。语句(a.k.a命令1或查询)。这是服务器将处理的最小个体工作单元。 IE。每个语句都是一些东西 "complete",这将导致服务器执行一些工作,并可能导致数据被修改 and/or 返回结果集。通常,服务器将单独编译每个语句(但可以在执行任何语句之前对批处理中的每个语句进行每次编译)。
条款2。子句是语句的子单元——但是,请注意,某些语句可能只包含一个子句,这可能看起来有点混乱。例如,某些数据库系统将接受
SELECT 10;
作为查询。这是一个仅由SELECT
子句组成的SELECT
语句。多个语句类型可以使用相同的子句类型。例如。SELECT
和DELETE
语句都可以包含WHERE
子句。此外,大多数语句都有一个共享相同名称的子句。表达式2。表达式是产生标量值的东西(请注意,在大多数情况下,这被理解为 "one scalar value per row",而不是 "one scalar value in total")
- 谓词。一个布尔表达式,最常在
WHERE
子句、WHEN
子句和CHECK
约束中遇到。之所以特别提到这些,是因为并非所有数据库系统都支持用户可见的布尔数据类型,因此它们并不总是与其他表达式一样对待。
- 谓词。一个布尔表达式,最常在
1许多客户端库会公开某种命令对象,用于向数据库系统提交查询。然而,为了进一步混淆水域,其中许多将接受一批。尽管如此,command 似乎与 statement 具有相似的含义,这可能是因为在绝大多数情况下,command 对象不会一次用于多个语句。
2请注意,在某种程度上,这些共享同一级别。 SELECT
子句可能包含一个 CASE
表达式,该表达式由多个 WHEN
和 THEN
子句组成。