SQL语句的语法顺序和执行顺序

本文详细介绍了SQL查询的语法顺序及执行流程,包括FROM、WHERE、JOIN等关键字的作用及执行时机,帮助读者理解如何高效地组织SQL查询语句。

一、语法顺序和执行顺序

   (1)SQL语句的语法顺序:     

       SELECT[DISTINCT]

       FROM

       JOIN

       ON

       WHERE

      GROUP BY

      HAVING

      UNION

      ORDER BY

      LIMIT

   (2)SQL的执行顺序

     FROM:将数据从硬盘加载到数据缓冲区,方便对接下来的数据进行操作。

     WHERE:从基表或视图中选择满足条件的元组。(不能使用聚合函数)

     JOIN(如right left 右连接-------从右边表中读取某个元组,并且找到该元组在左边表中对应的元组或元组集)

     ON:join on实现多表连接查询,推荐该种方式进行多表查询,不使用子查询。

     GROUP BY:分组,一般和聚合函数一起使用。

     HAVING:在元组的基础上进行筛选,选出符合条件的元组。(一般与GROUP BY进行连用)

    SELECT:查询到得所有元组需要罗列的哪些列。

    DISTINCT:去重的功能。

    UNION:将多个查询结果合并(默认去掉重复的记录)。

    ORDER BY:进行相应的排序。

    LIMIT 1:显示输出一条数据记录(元组)

### Oracle SQL 语句执行顺序详解 在 Oracle 数据库中,SQL 语句执行顺序并不是按照书写顺序执行的,而是根据 SQL 语法优化器的规则进行一系列步骤来处理,以确保查询的高效性正确性。 SQL 语句执行流程通常分为两个层面:**语法顺序****实际执行顺序**。从语法角度来看,SQL执行顺序如下: 1. `FROM` —— 首先确定数据来源,这是 SQL 的入口点。 2. `ON` —— 在连接操作中用于指定连接条件。 3. `JOIN` —— 将多个表根据连接条件进行连接。 4. `WHERE` —— 对数据进行过滤,筛选符合条件的行。 5. `GROUP BY` —— 将数据按指定列分组。 6. `HAVING` —— 对分组后的数据进行进一步筛选。 7. `SELECT` —— 指定需要返回的列。 8. `DISTINCT` —— 去除重复行。 9. `ORDER BY` —— 对最终结果进行排序[^1]。 从实际执行角度来看,Oracle 数据库在执行 SQL 语句时遵循以下流程: 1. `FROM` 子句首先执行,将来自不同数据源的数据组装在一起。 2. `WHERE` 子句根据指定的条件对记录行进行筛选,减少后续操作的数据量。 3. `GROUP BY` 子句将数据划分为多个分组,为聚合操作做准备。 4. 聚合函数(如 `SUM`、`COUNT`、`AVG` 等)对分组后的数据进行计算。 5. `HAVING` 子句用于筛选满足条件的分组。 6. 表达式(如别名、函数、运算等)被计算并生成结果列。 7. `ORDER BY` 子句对最终的结果集进行排序,以满足用户的排序需求[^2]。 此外,Oracle 在执行 SQL 语句时还会进行查询优化。即使 SQL 语句语法语义都正确,服务器进程也不会直接访问数据库文件。相反,它会根据一定的规则对语句进行优化,例如视图合并、子查询解嵌套、谓语前推以及物化视图重写查询等。优化器会收集统计信息,并根据这些信息选择一个成本最低的执行计划[^3]。 执行计划可以通过查询 `PLAN_TABLE` 来查看。例如,可以通过以下语句查看具体的执行计划: ```sql SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE', 'stmt1', 'ALL')); ``` 通过执行计划,可以深入了解 SQL 语句的访问路径、连接方式以及资源消耗情况,从而进行性能调优[^4]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值