SQL的执行流程

1. SQL的语句结构

1.1 SQL92 语法

SELECT DISTINCT ...,...,...(存在聚合函数)
FROM ...,...,...
WHERE 多表的连接条件 AND 不包含聚合函数的过滤条件
GROUP BY ... (WITH ROLLUP)
HAVING 包含聚合函数的过滤条件
ORDER BY ... (ASC/DESC)
LIMIT ...,...

1.2 SQL99 语法

SELECT DISTINCT ...,...,...(存在聚合函数)
FROM ...
(LEFT/RIGHT) JOIN ... ON 多表的连接条件
(LEFT/RIGHT) JOIN ... ON ...
WHERE 不包含聚合函数的过滤条件
GROUP BY ... (WITH ROLLUP)
HAVING 包含聚合函数的过滤条件
ORDER BY ... (ASC/DESC)
LIMIT ...,...

2. SQL的执行过程

FROM -> ON -> (LEFT/RIGHT) JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> ORDER BY -> LIMIT

说明:

  1. 对于不包含聚合函数的过滤条件,推荐声明在WHERE中,这样查询效率较高。
  2. SELECT中声明的字段别名不能在WHERE中使用,但可以在HAVINGGROUP BY中使用。

3. SQL的分类

  • DDL(数据定义语言):CREATEALTERDROPRENAMETRUNCATE
  • DML(数据操作语言):INSERTDELETEUPDATESELECT
  • DCL(数据控制语言):COMMITROLLBACKSAVEPOINTGRANTREVOKE

DDL与DML的说明

  • DDL的操作一旦执行,就不可回滚。
  • DML的操作在默认情况下也是不可回滚的。但若在操作执行前执行了SET autocommit = FALSE,则操作可以实现回滚。
posted @ 2022-02-22 19:40  步平凡  阅读(373)  评论(0编辑  收藏  举报