【发布时间】:2013-08-11 05:27:52
【问题描述】:
我正在使用 Silberschatz、Korth 和 Surdashan 的《数据库系统概念》一书来研究数据库(我引用作者是因为关系代数符号与其他作者不同...
好吧,我认为SQL查询的执行顺序是基于关系代数的,例如:
如果我有这个 SQL 查询:
SELECT nombre_sucursal, AVG(saldo) AS media_sucursal
FROM cuenta
GROUP BY nombre_sucursal
HAVING media_sucursal > 800
对应的关系代数表达式如下:
Π nombre_sucursal (σ saldo > 800 (nombre_sucursal Ģ avg(saldo) (cuenta))
嗯...为此,在我看来,SQL 查询中的执行顺序是(如果您向后看关系代数表达式):
- FROM - (cuenta) 关系代数表达式中的基本关系
- GROUP BY nombre_sucursal - nombre_sucursal Ģ avg(saldo) 在关系代数表达式中
- HAVING media_sucursal > 800 - σ saldo > 800 关系代数表达式中的选择操作
- SELECT nombre_sucursal, AVG(saldo) AS media_sucursal - Π nombre_sucursal ???
我把???符号,因为这是我不明白的部分:
如果 SELECT 子句是 SQL 查询的最后一部分,我如何将聚合函数的结果重命名为“media_sucursal”并且在 HAVING 子句中可以使用它?
我检查了这个question,但它证实了我上面所说的,但没有回答我的问题。
欢迎任何帮助!
【问题讨论】:
标签: mysql sql relational-algebra