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,并返回给调用者。
分享到:
相关推荐
尽管如此,我将基于标题和描述中提供的关键词“Effective MySQL之SQL语句最优化”来构建知识点。 1. SQL语句最优化的概念:在数据库管理中,对SQL语句进行优化是提高数据库性能的关键环节。最优化的SQL语句能够在...
4. **处理结果集**:对于SELECT语句,执行后会返回ResultSet对象,可以遍历并处理查询结果。 5. **关闭资源**:完成操作后,应关闭ResultSet、Statement和Connection,以释放数据库资源。 在版本差异上,5.1.40相...
标题 "省市区字典sql-mysql-sqlserver.zip" 暗示了这是一个关于数据库管理系统的资源包,其中包含了适用于MySQL和SQL Server两种数据库的SQL语句,主要用于实现省市区的三级联动功能。这种功能常见于地理信息系统的...
本文将深入探讨MySQL数据库系统中的SQL语句执行过程,包括MySQL的架构总览、查询执行流程以及SQL语句的解析顺序。 首先,我们来看MySQL的架构总览。MySQL架构分为两个主要层次:SQL Layer(SQL层)和Storage Engine...
下面是MySQL中一些常用的SQL语句: 创建、删除和基本查询 * 显示数据库:`show databases;` * 创建数据库:`create database db;` * 删除数据库:`drop database db;` * 选择数据库:`use db;` 创建和删除表 * ...
标题 "PB 从SQL语句获取数据存储(MySQL)" 指的是使用PowerBuilder (PB) 开发工具,通过SQL语句从MySQL数据库中检索和处理数据存储的过程。在这个Demo中,PB11.5 版本被用作开发环境,而MySQL作为后台数据库系统。...
在数据库管理系统(如MySQL、Oracle、SQL Server等)中,SQL语句是不可或缺的一部分。 1. SQL基础语法 SQL的基础语法包括SELECT、INSERT、UPDATE、DELETE四大语句,它们分别用于查询、插入、更新和删除数据。 - ...
`Statement`接口用于执行静态SQL语句,而`PreparedStatement`用于预编译SQL语句,提高性能并防止SQL注入攻击。例如: ```java Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(...
这是Java访问数据库的标准接口,提供了多种类和接口,如`java.sql.DriverManager`,`java.sql.Connection`,`java.sql.Statement`,`java.sql.ResultSet`等,它们使得开发人员能够创建数据库连接,执行SQL语句并处理...
- `java.sql.Statement`: 用于执行SQL语句,如SELECT、INSERT、UPDATE和DELETE。 - `java.sql.PreparedStatement`: 提供预编译的SQL语句,性能更优,适用于多次执行相同的SQL。 - `java.sql.ResultSet`: 存储查询...
这个压缩包“多种典型T-SQL语句、备份、优化、常见问题处理集合包.rar”显然是一个专门为SQL Server用户和学习者设计的学习资源,涵盖了从基本的查询到复杂的数据库管理技巧。以下是对这些主题的详细说明: 1. **T-...
它是MySQL官方提供的JDBC(Java Database Connectivity)驱动程序,允许Java开发者在Java环境中执行SQL语句,进行数据的增删改查等操作。 1. **JDBC驱动**: JDBC是Java平台上的标准接口,由Java SDK提供,用于...
MySQL SQL语句练习题及答案 本资源提供了 MySQL SQL 语句的练习题及答案,涵盖了创建表、插入数据、删除数据、更新数据、查询数据等多方面的知识点。 一、创建表 在 MySQL 中,创建表使用 CREATE TABLE 语句。...
5. 执行SQL查询:通过Statement对象的executeQuery()或executeUpdate()方法执行SQL语句。如果是SELECT查询,会返回ResultSet对象;如果是INSERT、UPDATE、DELETE等操作,会返回受影响的行数。 6. 处理结果集:如果...
mysql-connector-java-5.1.26.jar包含了MySQL JDBC驱动的所有必要类和资源,使得Java应用可以通过JDBC API连接到MySQL服务器,执行SQL语句,如SELECT、INSERT、UPDATE、DELETE等操作。它支持标准JDBC接口,如...
MySQL SQL 语句实践指南 MySQL 是一种广泛使用的关系数据库管理系统,SQL 语句是其核心组成部分。今天,我们将介绍六个有用的 MySQL SQL 语句,帮助您更好地使用 MySQL 数据库。 1. 计算年数 计算年数是日常生活...
《Effective MySQL之SQL语句最优化》是一本深入探讨如何提升数据库性能的专业手册,它针对SQL语句的优化提供了一系列实用且高效的策略。在数据库管理领域,SQL优化是提升系统性能的关键环节,尤其是在处理大数据量时...
- SQL语句:`SELECT 列1, 列2, ... FROM 表名;` - 示例:`SELECT id, name FROM classes;` - 解释:此命令只返回表中特定列的数据。 #### 增加数据 1. **全列插入** - SQL语句:`INSERT INTO 表名 VALUES (......
这个驱动实现了Java.sql和javax.sql接口,使得开发者能够在Java程序中执行SQL语句、处理结果集、管理事务等操作。 在描述中提到的"mysql-connector-java-5.1.7"是该驱动的版本号,表示这是MySQL Connector/J的一个...
Python 使用 SQL 语句对 MySQL ...使用 Python 对 MySQL 数据库进行多条件模糊查询需要我们使用字符串拼接的方式构建 SQL 语句,并执行 SQL 语句获取查询结果。同时,我们需要注意参数是否为空,并避免 SQL 注入攻击。