SQL中的语句和查询之间的区别
Posted
技术标签:
【中文标题】SQL中的语句和查询之间的区别【英文标题】:Difference between a statement and a query in SQL 【发布时间】:2011-06-11 18:34:33 【问题描述】:我仍然生活在这种模糊中:从概念上讲,SQL 中的语句和查询有什么区别?任何人都可以给他们每个人一个定义吗?这将很有用,例如在程序中以对每个人都清楚的方式选择变量名称时。 谢谢!
另外:如何调用由多个语句组成的 SQL 代码块,其中语句由分号 (;
) 分隔?已经回复的人可以编辑他的答案。非常感谢!
【问题讨论】:
【参考方案1】:语句是数据库引擎识别为有效命令的任何文本。截至SQL-92
:
SQL 语句是符合此国际标准中指定的格式和语法规则的字符串。
查询是返回记录集(可能为空)的语句。
如何调用由多个语句组成的一段 SQL 代码,其中语句由分号 (;) 分隔?已经回复的人可以编辑他的答案。非常感谢!
同时发送到服务器的一系列SQL
语句称为批处理。
并非所有SQL
引擎都要求批处理中的语句以分号分隔。例如,SQL Server
通常不会并根据上下文打破陈述。以WITH
开头的CTE
语句是一个明显的例外。
【讨论】:
“语句是数据库引擎识别为有效命令的任何文本”。请区分命令和查询。 所以查询是不改变数据库的语句的子集?【参考方案2】:语句是任何 SQL 命令,例如 SELECT、INSERT、UPDATE、DELETE。
查询是 SELECT 语句的同义词。
【讨论】:
【参考方案3】:来自Wikipedia - SQL Language Elements
SQL 语言细分为几个语言元素,包括:
子句,它们是语句和查询的组成部分。 (在某些情况下,这些是可选的。)[9] 表达式,可以生成标量值或由数据的列和行组成的表。 谓词,指定可以评估为 SQL 三值逻辑 (3VL) 或布尔(真/假/未知)真值的条件,用于限制语句和查询的效果,或更改程序流程。 查询,根据特定条件检索数据。 语句,可能对架构和数据产生持久影响,或者可能控制事务、程序流、连接、会话或诊断。 SQL 语句还包括分号 (";") 语句终止符。虽然不是每个平台都需要它,但它被定义为 SQL 语法的标准部分。 无关紧要的空格在 SQL 语句和查询中通常会被忽略,从而更容易格式化 SQL 代码以提高可读性。
【讨论】:
【参考方案4】:语句是可以发送到 DBMS 的完整、正确 SQL 的总称。 查询是返回数据的语句,因此查询是一种特殊的语句。
SELECT ...
将是一个查询,DELETE...
只是一个语句。
【讨论】:
【参考方案5】:它们被大多数人互换使用,但有些人经常使用“查询”一词来表示,具体来说,SELECT
语句,因为当您查询某事或某人时,您需要信息。并且SELECT
查询返回结果集,因此很适合描述。这一点在 SELECT
语句被正式称为 DQL(数据查询语言)语句这一事实中也很明显。
【讨论】:
SELECT..INTO
(不返回结果集)是查询吗? (VALUES (1)) AS T (col);
(确实返回结果集)是查询吗?
“SELECT 语句正式称为 DQL”——我认为使用 DML。 DDL、DCL 等都是非正式的。谁是此类事务的可信赖来源?我已经看到了 DCL 的各种定义。 SELECT
通常与 DML、IMO 相关联。我不认为 DQL 是常用的,除了表示 Doctrine Query Language 或 SQL 的拼写错误(考虑到 D 键在 S 键旁边)。【参考方案6】:
查询用于根据特定条件检索数据,但语句可能对模式和数据具有持久影响,或者可能控制事务、程序流、连接、会话或诊断。另见Wikipedia。
【讨论】:
以上是关于SQL中的语句和查询之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
executeexecuteQuery和executeUpdate之间的区别