GROUP BY
列名
HAVING
ORDER BY
列名
SELECT
语句由于执行顺序不同,因此对数据的处理方式不同。我们可以把他们分为单行操
作符,多行操作符,表操作符。
(不知道怎么称呼,姑且这么叫。
)
表一中除了
SELECT
外的所有函数都是
单行操作符
,因此后面必须和单行数据使用。
表二中的函数
+select
是
多行操作符
,因此可以和单行数据,多行数据和分组函数一块儿使
用。
ORDER BY
是对整个表进行操作,因此可以称为
表操作符
。
因此
WHERE
后面不能加分组函数,多行数值。
由于
SELECT
语句在执行过中有先后顺序,
而且每一个函数都有相应的格式,
因此
SELECT
语句在写法上有一些要求。
如上表,在
SELECT
语句中,子查询的优先级别最高因此,先调用子查询,子查询的执
行顺序与一般查询一样,
但是子查询的返回值被不同函数调用时,
应根据函数要求返回不同
的值。
如在
WHERE
语句中返回单行值,如果有多行,用
ANY
, ALL
函数一一拆分。
1
.
SELECT
与句中先执行
子查询
,
2
.
在
SELECT
语句
顺序执行
2.1 GROUP
BY ,2.2HAVING
和
2.3
分组函数将
原表
内容进行分区,
浓缩。
由于使用的是原表,因此可以调用新表中没有出现的列。
GROUP BY DEPTNO HAVING AVG(SAL)>1000,
是先按
DEPTNO
分组,
再选择条件,
条件中
执行分组函数,因此
HAVING
中可以有分组函数
3
.
执行
SELECT
语句,
先执行
3.1 join on WHERE
逐条连接,
进行条件删选,
因此
ON
与
WHERE