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
说明:
- 对于不包含聚合函数的过滤条件,推荐声明在
WHERE
中,这样查询效率较高。 - 在
SELECT
中声明的 字段别名不能在WHERE
中使用,但可以在HAVING
、GROUP BY
中使用。
3. SQL的分类
- DDL(数据定义语言):
CREATE
、ALTER
、DROP
、RENAME
、TRUNCATE
- DML(数据操作语言):
INSERT
、DELETE
、UPDATE
、SELECT
- DCL(数据控制语言):
COMMIT
、ROLLBACK
、SAVEPOINT
、GRANT
、REVOKE
DDL与DML的说明:
- DDL的操作一旦执行,就不可回滚。
- DML的操作在默认情况下也是不可回滚的。但若在操作执行前执行了
SET autocommit = FALSE
,则操作可以实现回滚。
Original: https://www.cnblogs.com/bpf-1024/p/15924639.html
Author: 步平凡
Title: SQL的执行流程
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/612351/
转载文章受原作者版权保护。转载请注明原作者出处!