学习SQL语句最重要的是其执行顺序。 如果不知道执行顺序,则编写SQL语句时只能在实验中检测是否正确。 那么,什么是SQL语句的顺序执行呢?
SQL语句的执行顺序
1 )语法分析,分析句子语法是否符合规范,测定句子中各式的含义。
2 )语义分析检查语句中是否存在所有数据库对象,以及用户是否具有相应的权限。
3 )视图转换。 将与视图相关的查询语句转换为对相应基表的查询语句。
4 )将复杂SQL表达式转换为更简单的等效连接表达式的表达式转换。
5 )选择优化程序。 “执行计划”通常因优化程序而异
6 )选择连接方法。 ORACLE有三种连接方法,您可以为多表连接的ORACLE选择适当的连接方法。
7 )选择连接顺序,为多个表选择ORACLE要连接的一对表,然后选择两个表中的哪个表作为源数据表?
8 )选择数据搜索路径,根据上述条件选择合适的数据搜索路径。 例如,选择所有表搜索、使用索引或选择其他方法。
9 )《执行计划》的执行
SQL关键字和参数说明
bind_argument
传递给动态SQL语句的表达式的值(IN绑定)或存储动态SQL语句返回值的变量(OUT绑定)。
BULK COLLECT INTO
此子句指定只有在动态SQL语句中可以返回多行时,一个或多个集合存储才会返回行。 此子句需要适当的兼容集合或数组来存储动态SQL语句的查询列。
collection_name
包含动态SQL语句返回的行的声明的集合。
动态_ returning _ clause
如果使用,则仅当动态SQL语句具有RETURNING INTO子句时,才返回受动态SQL语句影响的行的列值、独立变量或记录。 此子句可以包含OUT绑定参数。
dynamic_sql_stmt
表示字符串常量、字符串变量或SQL语句的字符串表达式必须为CHAR、VARCHAR2或CLOB类型。
host_array_name
返回并存储行的数组。 此数组必须在PL/SQL主机环境中声明并传递给PL/SQL绑定参数(冒号)前缀)
IN,OUT,IN OUT
绑定参数的参数模式,IN绑定参数将值传递给动态SQL语句,而OUT绑定参数存储动态SQL语句的返回值。 IN OUT绑定参数将初始值传递给动态SQL语句,并存储动态SQL语句的返回值。 默认绑定参数的参数模式为IN。
国际贸易组织
此外,只有当动态SQL语句是一个SELECT语句时,才能最多返回一行。 此子句指定变量或记录存储返回的行的列值。 动态SQL语句的每个查询列都必须具有相应的自定义变量兼容类型和记录兼容类型。
record_name
保存返回行的用户定义或%rowtype记录。
用户界面
仅当动态SQL语句包含占位符时,才指定绑定参数列表。