SELECT语句的执行顺序大家比较少关注,下面将为您详细介绍SQL语句中SELECT语句的执行顺序,供您参考,希望对您能够有所帮助。
SELECT语句的执行的逻辑查询处理步骤:
(8)SELECT (9)DISTINCT
(11)<TOP_specification> <select_list>
(1)FROM <left_table>
(3) <join_type> JOIN <right_table>
(2) ON <join_condition>
(4)WHERE <where_condition>
(5)GROUP BY <group_by_list>
(6)WITH {CUBE | ROLLUP}
(7)HAVING <having_condition>
(10)ORDER BY <order_by_list>
每个步骤产生一个虚拟表,该虚拟表被用作下一个步骤的输入。只有最后一步生成的表返回给调用者。如果没有某一子句,则跳过相应的步骤。
1. FROM:对FROM子句中的前两个表执行笛卡尔积,生成虚拟表VT1。
2. ON:对VT1应用ON筛选器。只有那些使<join_condition>为真的行才被插入VT2。
3. OUTER(JOIN):如果指定了OUTER JOIN,保留表中未找到匹配的行将作为外部行添加到VT2,生成VT3。如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到处理完所有的表为止。
4. 对VT3应用WHERE筛选器。只有使<where_condition>为TRUE的行才被插入VT4。
5. GROUP BY:按GROUP BY 子句中的列列表对VT4中的行分组,生成VT5。
6. CUBE|ROLLUP:把超组插入VT5,生成VT6。
7. HAVING:对VT6应用HAVING筛选器。只有使<having_condition>为TRUE的组才会被插入VT7。
8. SELECT:处理SELECT列表,产生VT8。
9. DISTINCT:将重复的行从VT8中移除,产生VT9。
10. ORDER BY:将VT9中的行按ORDER BY子句中的列列表排序,生成一个有表(VC10)。
11. TOP:从VC10的开始处选择指定数量或比例的行,生成表VT11,并返回给调用者。
分享到:
相关推荐
本文将从MySQL总体架构—>查询执行流程—>语句执行顺序来探讨一下其中的知识。 一、MySQL架构总览: 架构最好看图,再配上必要的说明文字。 下图根据参考书籍中一图为原本,再在其上添加上了自己的理解。 从...
-- sql语句最后需要有分号;结尾 -- 显示数据库版本 version select version(); -- 显示时间 select now(); -- 查看当前使用的数据库 select database(); -- 查看所有数据库 show databases; -- 创建...
练习的建表语句及数据
mysql 简单的sql语句
PB11.5 从SQL语句获取数据存储Demo(数据库是用MySQL)。
sql语句中select top n与oracle的rownum与mysql的limit 取前几条数据sql简单用法
执行SQL语句,返回执行结果 ResultSet rs = stat.executeQuery(sql); /** * 理解ResultSet结构: * +----+------+-------+ * | id | name | money | 表头 ←—————————— 指向1 rs....
mysql创建表的sql语句 mysql建表常用sql语句: 连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样) 断开:exit (回车) 创建授权:grant select on 数据库.* to 用户名@登录...
Flora SQL解析器 将简单SQL语句解析为抽象语法树(AST),然后将其转换回SQL。用法为SQL语句创建AST const { Parser } = require ( 'flora-sql-parser' ) ;const parser = new Parser ( ) ;const ast = parser . ...
存储过程,我们可以在一次操作中,执行多个 SQL 语句和逻辑。 以下是一些 MySQL 查询存储过程 SQL 语句样例: 创建存储过程: 创建存储过程需要使用 CREATE PROCEDURE 语句。以下是一个创建存储过程的示例: ...
js-sql-parser 在js中解析/字符串化sql(选择语法)。 sql语法遵循新闻自v1.3.0 起修复bug tableFactor别名从v1.2.2开始,增加了对“`”引号别名的支持 BUG修复字符串化的关键字having自V1.2.1。 自v1.2.0起,错字...
.NET Standard 2.1、.NET 5、.NET 6、.NET 7 版本SQLBuilder,Expression表达式转换为SQL语句,支持SqlServer、MySql、Oracle、Sqlite、PostgreSql;基于Dapper实现了不同数据库对应的数据仓储Repository;
SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK
存储过程,我们可以在一次操作中,执行多个 SQL 语句和逻辑。 以下是一些 MySQL 查询存储过程 SQL 语句样例: 创建存储过程: 创建存储过程需要使用 CREATE PROCEDURE 语句。以下是一个创建存储过程的示例: ...
1.5 查询语句 语法:select [选项] 列名 [from 表名] [where 条件] [group by 分组] [order by 排序][having 条件] [limit 限制] 1.5.1 字段表达式 -- 可以直接输出内容 mysql> select '锄禾日当午'; +------------...
目前还在查看,但是在查阅资料时发现了一些有益的知识,给大家分享一下,就是关于sql以及MySQL语句执行顺序: sql和mysql执行顺序,发现内部机制是一样的。最大区别是在别名的引用上。 一、sql执行顺序 (1)from ...
下面介绍MySQL中如何查询慢的SQL语句 一、MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句 1,slow_query_log 这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。 2,long_query_time 当S
SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; A A ZERO SPACE --------- --------- --------- --------- ...
├─(18) 课时25.R里面使用SQL查询语句.flv ├─(19) 课时4 为什么学习SQL.mp4 ├─(20) 课时5 数Ju库MySQL软件介绍.mp4 ├─(21) 课时6 MySQL 最新版5.71的全程操作演示.mp4 ├─(22) 课时8 SQL的组成.mp4 ├...
sqlplus 连接本地 quit ...cd MySql cd bin cd mysql -h192.168.1.32 -uroot -p ...sql语句执行的顺序:from子句---->where子句---->select子句--->order by子句 ='2010-07-22' 或是 = To_DATE('2010-07-22')