SQL语法顺序和执行顺序

SQL语言,是结构化查询语言(Structured Query Language)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

语法顺序:1.select

                2.from

                3.where

                4.group by

                5.having

                6.union

                7.order by

执行顺序:

    1.from

    2.where

    3.group by

    4.having

    5.select

    6.distinct

    7.union

    8.order by

 

理解不多,欢迎指正

转载于:https://my.oschina.net/vioyangx/blog/1838404

### SQL语法执行顺序解析 SQL 查询的逻辑执行顺序决定了数据库如何处理查询中的各个子句。尽管 SQL 语句通常按照 `SELECT` -> `FROM` -> `WHERE` 的顺序书写,但实际上其内部执行顺序有所不同。以下是 SQL 执行的主要阶段及其顺序: #### 1. **FROM 子句** 数据库引擎首先从 `FROM` 子句开始执行操作。在此阶段,涉及的数据表会被加载到内存中,并可能进行笛卡尔积运算[^3]。如果存在多个数据表,则会根据连接条件(如 `JOIN`)来筛选出符合条件的记录。 #### 2. **ON 子句** 如果在 `FROM` 中指定了 `JOIN` 操作,则会在该阶段应用 `ON` 条件过滤不符合条件的记录。此步骤仅适用于联接操作。 #### 3. **OUTER JOIN** 对于外连接的情况,在这里会对未匹配的行填充 NULL 值并保留这些行。 #### 4. **WHERE 子句** 下一步是对结果集进一步过滤,只保留满足 `WHERE` 条件的记录。需要注意的是,`WHERE` 不应用于聚合函数的结果;对于后者应使用 `HAVING` 子句。 #### 5. **GROUP BY 子句** 结果集随后被分组依据指定列值组合。这一步骤之后可以计算每组内的汇总统计量(如 COUNT、SUM 等),从而形成新的虚拟表供后续步骤使用。 #### 6. **HAVING 子句** 类似于 `WHERE`,但是作用对象是已经经过分组后的数据集合。它允许基于聚合函数设置额外约束条件。 #### 7. **SELECT 列选择** 此时才真正选取最终需要展示给用户的字段列表。值得注意的是即使某些字段并未显式出现在 SELECT 后面也可能因为其他原因参与到了整个流程当中比如 ORDER BY 使用了它们。 #### 8. **DISTINCT 关键字** 若有重复项,则去除冗余条目以确保唯一性输出。 #### 9. **ORDER BY 排序** 最终对所有剩余记录按指定规则排序得到最后呈现形式之前的状态。 #### 10. **LIMIT/OFFSET 分页控制** 只返回限定数量或者跳过一定偏移位置上的那些特定范围内的项目结束整个查询周期。 ```sql -- 示例代码演示标准SQL查询结构 SELECT DISTINCT column_name FROM table_name LEFT JOIN another_table ON condition_expression WHERE filter_condition GROUP BY grouping_columns HAVING group_filter_conditions ORDER BY sort_column ASC|DESC LIMIT row_count OFFSET offset_value; ``` 以上就是完整的SQL语法执行次序描述以及相应环节的作用说明[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值