我与队友讨论了clause
和expression
这两个词是否可以互换使用的主题。例如,调用代表expression
a=b
的变量(例如,参与声明SELECT * WHERE expression
)一个句子是正确/通用的吗?
有人可以准确定义SQL世界中clause
,expression
和statement
的内容。
答案 0 :(得分:7)
在SQL术语中,“子句”通常用于表示语句的部分,通常由其命名的关键字引入 - 例如典型的SELECT
语句将由SELECT
子句,FROM
子句和WHERE
子句组成。 在 FROM
子句中,某些人员可能会引用JOIN
条款和ON
条款。但是,这绝不是100%接受的用法。
当谈到“声明”和“表达”时,它是相当标准的用法 - 表达式是产生值的东西。在大多数语言中,这进一步被理解为产生标量值的东西。在SQL中,这稍作修改,因为当您使用行集时遇到表达式时,表达式将生成一个标量值每行(或每个组或分区,如果涉及分组或分区,它位于相关位置)。
最后,语句是一个完整的“东西”,您的数据库引擎可以理解并生成结果。它不会产生值但它可能会产生结果集。您不能只将FROM
子句发送到数据库 - 它必须是更大语句的一部分,例如我在第一段中提到的SELECT
语句。
答案 1 :(得分:0)
答案是否定的,表达式的评估结果可能是boolean value
或string
或number
,其中一个子句构成了数据满足的规则,只有记录形式部分结果。
select * from TABLE where /*clause 1*/ field1 = field2
and /*clause 2*/field3 = /*expression*/ field1 + field2
在上面的选择陈述中
第一个子句形成一个规则,即field1应该等于field2
第二条形成一条规则,即field3应该等于>的结果。表达式
field1 + field2
<强>更新强>
SQL中有各种子句,如from
,where
,order by
,group by
和having
。 from
子句告诉从哪个表读取和排序,告诉如何排列结果。子句控制从哪里读取数据,将哪些数据作为select语句的一部分以及如何呈现数据。
另一方面,表达式计算为某种数据类型的值。
一个Statement,是一个带有子句的结构化查询。