3
子查询是否为SQL查询增加了表达能力?
SQL是否需要子查询? 想象一下关系数据库的结构化查询语言的足够通用的实现。由于规范SQL SELECT语句的结构实际上对于使其有意义很重要,因此我不直接诉诸关系代数,但是您可以通过对表达式的形式进行适当的限制来用这些术语来构架。 一个SQL SELECT查询通常由投影(的SELECT部分)的一些数目的JOIN操作(JOIN部分),一些数目的SELECTION 操作(在SQL中,WHERE条款),然后设置为单位的运算(UNION,EXCEPT,INTERSECT等),接着再SQL SELECT查询。 被连接的表可以是表达式的计算结果。换句话说,我们可以有一条语句,例如: SELECT t1.name, t2.address FROM table1 AS t1 JOIN (SELECT id, address FROM table2 AS t3 WHERE t3.id = t1.id) AS t2 WHERE t1.salary > 50,000; 我们将使用计算表作为SQL查询的一部分称为子查询。在上面的示例中,第二个(缩进的)SELECT是一个子查询。 能否以不使用子查询的方式编写所有SQL查询?上面的示例可以: SELECT t1.name, t2.address FROM table1 AS t1 JOIN table2 AS t2 ON t1.id = t2.id …