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中的语句和查询之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

选择连接SQL语句中的内连接和where之间的区别[重复]

executeexecuteQuery和executeUpdate之间的区别

GROUP BY,WHERE,HAVING之间的区别和用法

sql语句和hql语句的区别?

SQL语句中LEFT JOIN和RIGHT JOIN 以及INNER JOIN的区别

sql语句中嵌套时候用in 和=有啥区别