当前位置:
首页 > 技能培训 > sql语句执行顺序(徐克达)

知识点

sql语句执行顺序(徐克达)

学习SQL语句最重要的是它的执行顺序。如果执行顺序不清楚,在编写SQL语句时只能在实验中测试是否正确。那么SQL语句执行的顺序是怎样的呢?

SQL语句的执行顺序

1)语法分析,分析一个语句的语法是否符合规范,衡量语句中每个表达式的含义。

2)语义分析:检查语句涉及的数据库对象是否都存在,用户是否有相应的权限。

3)视图转换,将与视图相关的查询语句转换成相应的基表查询语句。

4)表达式转换,将复杂的SQL表达式转换成更简单的等价连接表达式。

5)选择优化器,不同的优化器一般会产生不同的“执行计划”

6)选择连接方式。ORACLE有三种连接方法,您可以选择适当的连接方法将多个表连接到ORACLE。

7)选择连接顺序,对于多表连接ORACLE,应该首先连接哪对表,以及应该将这两个表中的哪一个用作源数据表。

8)选择数据搜索路径,根据以上条件选择合适的数据搜索路径,如全表搜索、索引或其他方法。

9)运行“执行计划”

SQL关键字和参数描述

bind_argument

传递给动态SQL语句(输入绑定)的表达式值,或存储动态SQL语句(输出绑定)返回值的变量。

批量收集到

如果仅使用动态SQL语句就可以返回多行,则此子句指定一个或多个集合存储来返回行。此子句必须有相应的兼容集或数组来存储动态SQL语句的查询列。

collection_name

用于存储动态SQL语句返回的行的声明集合。

dynamic _ returning _子句

如果仅当动态SQL语句有RETURNING子句时才使用该子句,则该子句返回动态SQL语句受影响行的列值、独立变量或记录。子句可以包含一个输出绑定参数。

dynamic_sql_stmt

表示SQL语句的字符串常量、字符串变量或字符串表达式必须是CHAR、VARCHAR2或CLOB类型。

host_array_name

返回要存储的行的数组,该数组必须在PL/ SQL宿主环境中声明,并传递给PL/SQL绑定参数(冒号(:)前缀)

输入,输出,输入输出

bINding参数的参数模式,in binding参数将值传递给动态SQL语句,OUT绑定参数存储动态SQL语句的返回值。输入输出绑定参数将初始值传递给动态语句,并存储动态语句的返回值。默认bINding参数的参数模式是。

INTO

当且仅当动态SQL语句是SELECT语句时,它最多只能返回一行。此子句指定变量或记录存储返回行的列值。对于每个动态SQL语句查询列,必须有对应的用户定义变量兼容类型和记录兼容类型。

record_name

为返回的行存储用户定义的或%rowtype记录。

使用

当且仅当动态SQL语句包含占位符时,指定绑定参数列表。