SQL语句执行顺序

合集下载

sql 语句的执行顺序

sql 语句的执行顺序

sql 语句的执行顺序SQL语句的执行顺序是指在执行一个SQL查询时,各个子句的执行顺序。

下面将按照常见的SQL查询语句的执行顺序,列举出10个例子。

1. SELECT语句的执行顺序:- FROM子句:确定要查询的数据来源表或视图。

- WHERE子句:对数据进行筛选,仅选择符合条件的记录。

- GROUP BY子句:按指定的列对数据进行分组。

- HAVING子句:对分组后的数据进行筛选,仅选择符合条件的分组。

- SELECT子句:选择要查询的列。

- ORDER BY子句:对查询结果进行排序。

- LIMIT子句:限制查询结果的数量。

2. INSERT语句的执行顺序:- INSERT INTO子句:指定要插入数据的表。

- VALUES子句:指定要插入的数据。

3. UPDATE语句的执行顺序:- UPDATE子句:指定要更新数据的表。

- SET子句:指定要更新的列和值。

- WHERE子句:对要更新的数据进行筛选。

4. DELETE语句的执行顺序:- DELETE FROM子句:指定要删除数据的表。

- WHERE子句:对要删除的数据进行筛选。

5. CREATE TABLE语句的执行顺序:- CREATE TABLE子句:指定要创建的表的名称和列的定义。

- CONSTRAINT子句:指定表的约束条件,如主键、唯一性约束等。

6. ALTER TABLE语句的执行顺序:- ALTER TABLE子句:指定要修改的表的名称。

- ADD COLUMN子句:添加新的列。

- DROP COLUMN子句:删除列。

- ALTER COLUMN子句:修改列的定义。

7. CREATE INDEX语句的执行顺序:- CREATE INDEX子句:指定要创建索引的表和列。

- WHERE子句:对要创建索引的数据进行筛选。

8. DROP TABLE语句的执行顺序:- DROP TABLE子句:指定要删除的表的名称。

9. TRUNCATE TABLE语句的执行顺序:- TRUNCATE TABLE子句:指定要清空的表的名称。

sql语句顺序包含执行顺序和书写顺序

sql语句顺序包含执行顺序和书写顺序

sql语句顺序包含执⾏顺序和书写顺序
分页查询
如果⼀页记录为10条,希望查看第3页记录应该怎么查呢?
第⼀页记录起始⾏为0,⼀共查询10⾏;
第⼆页记录起始⾏为10,⼀共查询10⾏;
第三页记录起始⾏为20,⼀共查询10⾏;
8.3 分页查询
查询语句书写顺序:select – from- where- group by- having- order by-limit
查询语句执⾏顺序:from - where -group by - having - select - order by-limit
注:having与where的区别:
1.having是在分组后对数据进⾏过滤.
where是在分组前对数据进⾏过滤
2.having后⾯可以使⽤分组函数(统计函数)
where后⾯不可以使⽤分组函数。

WHERE是对分组前记录的条件,如果某⾏记录没有满⾜WHERE⼦句的条件,那么这⾏记录不会参加分组;⽽HAVING是对分组后数据的约束。

SQL语句执行顺序

SQL语句执行顺序

SQL语句执⾏顺序
查询执⾏顺序
1. FROM和JOIN
FROM或JOIN会第⼀个执⾏,确定⼀个整体的数据范围. 如果要JOIN不同表,可能会⽣成⼀个临时Table来⽤于下⾯的过程。

总之第⼀步可以简单理解为确定⼀个数据源表(含临时表)
2. WHERE
我们确定了数据来源WHERE语句就将在这个数据源中按要求进⾏数据筛选,并丢弃不符合要求的数据⾏,所有的筛选col属性只能来
⾃FROM圈定的表. AS别名还不能在这个阶段使⽤,因为可能别名是⼀个还没执⾏的表达式
3. GROUP BY
如果你⽤了GROUP BY分组,那GROUP BY将对之前的数据进⾏分组,统计等,并将是结果集缩⼩为分组数.这意味着其他的数据在分组后丢弃.
4. HAVING
如果你⽤了GROUP BY分组, HAVING会在分组完成后对结果集再次筛选。

AS别名也不能在这个阶段使⽤.
5. SELECT
确定结果之后,SELECT⽤来对结果col简单筛选或计算,决定输出什么数据.
6. DISTINCT
如果数据⾏有重复DISTINCT将负责排重.
7. ORDER BY
在结果集确定的情况下,ORDER BY对结果做排序。

因为SELECT中的表达式已经执⾏完了。

此时可以⽤AS别名.
8. LIMIT / OFFSET
最后LIMIT和OFFSET从排序的结果中截取部分数据.。

sql语句的执行顺序

sql语句的执行顺序

sql语句的执行顺序SQL(结构化查询语言)是一种特殊的编程语言,它能够帮助程序员从关系型数据库中检索出所需要的数据。

因此,了解 SQL句的执行顺序是至关重要的。

本文将介绍 SQL句的执行顺序,以及如何有效地提高 SQL句的执行速度。

SQL句的执行顺序SQL句的执行顺序是按照以下步骤实现的:1.解析语句:当 SQL句被输入到数据库系统中时,系统将第一步解析语句,以确定其目标是什么。

在这一步中,系统会检查语法以及语句中是否包含任何已知表格、视图或者数据库对象。

解析期间,系统会把用户输入的 SQL句转换成由数据库系统可以理解的形式,并存储在 SQL存中。

2.验证语句:在解析之后,系统会验证语句的有效性,以确保它满足数据库中的元数据,例如字段类型和长度、表中字段的有效性等等。

如果它不满足相关要求,则会返回错误消息,不会继续执行。

3.优化语句:此步骤可以提高 SQL句的性能,并将其转换成最有效的查询计划。

在这一步中,数据库系统会将用户输入的 SQL句转换成一组最佳查询计划,然后将其存储在优化器的缓存中。

4.存储器:在此步骤中,系统会从数据库中检索出所需的数据。

它会从数据表中取出有效的行以及列,然后将它们存入一个结果表,以供数据库的应用程序使用。

5.结果成型:当 SQL句的查询可以在表格中找到结果集后,数据库系统就会开始成型这些结果,以便适合人们阅读。

在这一步中,它会从结果表中提取出有用的数据并保存在一个结果集中。

6.结果发送:最后,数据库系统会将结果发送给用户的应用程序,以满足用户的要求。

提高 SQL句的执行速度SQL句的执行速度受到很多因素的影响,下面是一些可以提高SQL句执行速度的方法:1.选择正确的数据类型:在定义字段时,应该使用适当的数据类型,比如 int、char、varchar,以减少不必要的空间占用,并提高检索速度。

2.索引:索引可以有效地提高 SQL句的执行速度,一般情况下,在 WHERE句中使用的字段,应该添加索引。

sql语句中各个条件执行顺序

sql语句中各个条件执行顺序

sql语句中各个条件执行顺序SQL语句中各个条件的执行顺序是指SQL语句在执行时,各个条件的执行顺序。

下面列举了10个常见的SQL语句中条件的执行顺序及其相关内容。

1. FROM子句:FROM子句是SQL语句中的第一个执行的部分,用于指定数据表或视图的来源。

在FROM子句中,可以指定一个或多个表,并可以使用JOIN操作将它们进行关联。

2. WHERE子句:WHERE子句是SQL语句中的第二个执行的部分,用于指定查询的条件。

在WHERE子句中,可以使用比较运算符、逻辑运算符和通配符等来定义查询条件。

3. GROUP BY子句:GROUP BY子句是SQL语句中的第三个执行的部分,用于对查询结果进行分组。

在GROUP BY子句中,可以指定一个或多个列名,按照这些列进行分组。

4. HAVING子句:HAVING子句是SQL语句中的第四个执行的部分,用于对分组后的结果进行过滤。

在HAVING子句中,可以使用比较运算符和逻辑运算符来定义过滤条件。

5. SELECT子句:SELECT子句是SQL语句中的第五个执行的部分,用于指定查询的列。

在SELECT子句中,可以指定一个或多个列名,也可以使用聚合函数对结果进行计算。

6. DISTINCT关键字:DISTINCT关键字是SQL语句中的第六个执行的部分,用于对查询结果进行去重。

在SELECT子句中使用DISTINCT关键字,可以去除重复的行。

7. ORDER BY子句:ORDER BY子句是SQL语句中的第七个执行的部分,用于对查询结果进行排序。

在ORDER BY子句中,可以指定一个或多个列名,按照这些列进行升序或降序排序。

8. LIMIT子句:LIMIT子句是SQL语句中的第八个执行的部分,用于限制查询结果的数量。

在LIMIT子句中,可以指定查询结果的起始位置和数量。

9. UNION操作符:UNION操作符是SQL语句中的第九个执行的部分,用于合并多个查询结果。

sql语句中各个条件执行顺序

sql语句中各个条件执行顺序

sql语句中各个条件执行顺序SQL语句中各个条件的执行顺序是根据查询语句中的关键字和语法规则确定的。

以下是关于SQL语句中各个条件执行顺序的十个例子:1. SELECT语句执行顺序:FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY- 首先执行FROM子句,确定要查询的表或视图。

- 然后执行WHERE子句,对表中的记录进行筛选。

- 接下来执行GROUP BY子句,按指定的列对查询结果进行分组。

- 然后执行HAVING子句,对分组后的结果进行筛选。

- 然后执行SELECT子句,选择要查询的列。

- 最后执行ORDER BY子句,对结果进行排序。

2. WHERE子句中的条件执行顺序:括号内的条件 -> NOT -> AND -> OR- WHERE子句中的括号内的条件首先执行。

- 然后执行NOT操作符指定的条件。

- 接下来执行AND操作符指定的条件。

- 最后执行OR操作符指定的条件。

3. JOIN语句中的条件执行顺序:ON -> USING- JOIN语句中的ON条件首先执行,指定连接两个表的条件。

- 如果使用USING关键字,则在ON条件之后执行,指定连接两个表的共同列。

4. GROUP BY子句中的条件执行顺序:列名 -> 表达式 -> 别名- GROUP BY子句中的列名首先执行,按照指定的列进行分组。

- 然后执行表达式,对查询结果进行分组。

- 最后执行别名,对查询结果进行分组。

5. HAVING子句中的条件执行顺序:列名 -> 表达式 -> 别名- HAVING子句中的列名首先执行,对分组后的结果进行筛选。

- 然后执行表达式,对分组后的结果进行筛选。

- 最后执行别名,对分组后的结果进行筛选。

6. SELECT子句中的条件执行顺序:列名 -> 表达式 -> 别名- SELECT子句中的列名首先执行,选择要查询的列。

一条完整sql语句的执行顺序

一条完整sql语句的执行顺序摘要:1.SQL 语句的执行顺序2.SELECT 语句的执行顺序3.INSERT 语句的执行顺序4.UPDATE 语句的执行顺序5.DELETE 语句的执行顺序6.总结正文:SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的编程语言。

SQL 语句的执行顺序遵循一定的规范,本文将详细介绍一条完整SQL 语句的执行顺序。

1.SQL 语句的执行顺序SQL 语句的执行顺序可以分为以下几个步骤:(1)解析:将SQL 语句解析成抽象语法树(Abstract Syntax Tree,AST)。

(2)语义分析:对抽象语法树进行语义分析,检查SQL 语句的语法和语义是否正确。

(3)优化:将语义分析后的SQL 语句进行优化,生成执行计划。

(4)执行:根据优化后的执行计划,执行SQL 语句。

2.SELECT 语句的执行顺序(1)从WHERE 子句中选择满足条件的行。

(2)对SELECT 子句中的列进行投影。

(3)按照ORDER BY 子句中的顺序对查询结果进行排序。

(4)如果存在LIMIT 子句,则按照LIMIT 子句中的限制返回查询结果。

3.INSERT 语句的执行顺序INSERT 语句用于向表中插入数据。

其执行顺序如下:(1)将INSERT 语句解析成抽象语法树。

(2)对抽象语法树进行语义分析,检查INSERT 语句的语法和语义是否正确。

(3)生成插入数据的执行计划。

(4)根据执行计划,向表中插入数据。

4.UPDATE 语句的执行顺序UPDATE 语句用于更新表中的数据。

其执行顺序如下:(1)从WHERE 子句中选择需要更新的行。

(2)对UPDATE 子句中的列进行更新。

(3)如果存在ORDER BY 子句,则按照ORDER BY 子句中的顺序对更新结果进行排序。

(4)如果存在LIMIT 子句,则按照LIMIT 子句中的限制返回更新结果。

SQL查询语句(where、jion、limit、groupby、having等等)执行先后顺序

SQL查询语句(where、jion、limit、groupby、having等等)执⾏先后顺序⼀个查询语句同时出现了where,group by,having,order by的时候,执⾏顺序和编写顺序是:1.执⾏where xx对全表数据做筛选,返回第1个结果集。

2.针对第1个结果集使⽤group by分组,返回第2个结果集。

3.针对第2个结果集中的每1组数据执⾏select xx,有⼏组就执⾏⼏次,返回第3个结果集。

4.针对第3个结集执⾏having xx进⾏筛选,返回第4个结果集。

5.针对第4个结果集排序。

通过⼀个顺⼝溜总结下顺序:我(W)哥(G)是(SH)偶(O)像。

按照执⾏顺序的关键词⾸字母分别是W(where)->G(Group)->S(Select)->H(Having)->O(Order),对应汉语⾸字母可以编成容易记忆的顺⼝溜:我(W)哥(G)是(SH)偶(O)像1.查询中⽤到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by其中select和from是必须的,其他关键词是可选的,这六个关键词的执⾏顺序与sql语句的书写顺序并不是⼀样的,⽽是按照下⾯的顺序来执⾏from:需要从哪个数据表检索数据where:过滤表中数据的条件group by:如何将上⾯过滤出的数据分组having:对上⾯已经分组的数据进⾏过滤的条件select:查看结果集中的哪个列,或列的计算结果order by :按照什么样的顺序来查看返回的数据2.from后⾯的表关联,是⾃右向左解析⽽where条件的解析顺序是⾃下⽽上的。

也就是说,在写SQL语句的时候,尽量把数据量⼩的表放在最右边来进⾏关联(⽤⼩表去匹配⼤表),⽽把能筛选出⼩量数据的条件放在where语句的最左边(⽤⼩表去匹配⼤表)其他参考资源:。

sql语句逻辑顺序

SQL语句的逻辑顺序与我们在查询中写下的顺序并不完全相同。

以下是SQL SELECT语句各部分的逻辑执行顺序:
FROM + JOIN:这一步是确定从哪些表中检索数据,以及如何通过JOIN操作将这些表连接起来。

WHERE:过滤不满足条件的记录。

GROUP BY:将结果集按照一个或多个列进行分组。

HAVING:过滤分组后的结果集,通常与GROUP BY一起使用,用于过滤不满足条件的分组。

SELECT:确定要显示的列。

DISTINCT:消除重复的行。

ORDER BY:对结果集进行排序。

LIMIT / OFFSET:限制返回的记录数,并确定从哪里开始返回记录。

当我们写SQL查询时,虽然逻辑执行顺序如上所述,但为了可读性和易于理解,我们通常按照以下顺序书写:
sql
SELECT [DISTINCT]
FROM
[JOIN]
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT / OFFSET;
这种书写顺序更直观,并且与大多数SQL开发者的习惯相符。

但了解逻辑执行顺序对于优化查询和理解查询行为是非常有帮助的。

sql 条件的先后顺序

sql 条件的先后顺序
(原创版)
目录
1.SQL 条件语句的执行顺序
2.MySQL 和 Oracle 中条件执行的先后顺序
3.WHERE 子句中操作符的优先级
正文
在 SQL 语句中,条件语句的执行顺序对于查询结果至关重要。

不同
的数据库系统可能具有不同的执行顺序。

本文将介绍 MySQL 和 Oracle 中条件执行的先后顺序以及 WHERE 子句中操作符的优先级。

首先,针对 MySQL,其条件执行顺序是从左往右,自上而下。

这意味着 MySQL 会按照 WHERE 子句中条件的顺序依次执行,从第一个条件开始,如果满足则继续执行下一个条件,直至找到满足所有条件的记录。

而对于 Oracle,其条件执行顺序则是从右往左,自下而上。

这意味
着 Oracle 会首先执行最后一个条件,然后逐个向上执行条件,直至找到满足所有条件的记录。

在 WHERE 子句中,可能会同时出现 AND 和 OR 操作符。

在这种情
况下,操作符的优先级也需要考虑。

一般来说,括号 () 的优先级最高,其次优先级是 AND,然后是 OR。

这意味着在 WHERE 子句中,如果有多个条件需要同时满足或排除,需要使用括号明确指定优先级,以避免出现意外的结果。

总之,在编写 SQL 语句时,需要注意条件执行的先后顺序和操作符
的优先级,以确保查询结果的准确性。

第1页共1页。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、sql语句的执行步骤:
1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义。

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

3)视图转换,将涉及视图的查询语句转换为相应的对基表查询语句。

4)表达式转换,将复杂的 SQL 表达式转换为较简单的等效连接表达式。

5)选择优化器,不同的优化器一般产生不同的“执行计划”
6)选择连接方式,ORACLE有三种连接方式,对多表连接 ORACLE 可选择适当的连接方式。

7)选择连接顺序,对多表连接 ORACLE 选择哪一对表先连接,选择这两表中哪个表做为源数据表。

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

9)运行“执行计划”
二、oracle 共享原理:
ORACLE将执行过的SQL语句存放在内存的共享池(shared buffer pool)中,可以被所有的数据库用户共享当你执行一个SQL语句(有时被称为一个游标)时,如果它和之前的执行过的语句完全相同, ORACLE就能很快获得已经被解析的语句以及最好的执行路径. 这个功能大大地提高了SQL的执行性能并节省了内存的使用
三、oracle 语句提高查询效率的方法:1: where column in(select * from ... where ...); 2:... where exists (select 'X' from ...where ...); 第二种格式要远比第一种格式的效率高。

在Oracle中可以几乎将所有的IN操作符子查询改写为使用EXISTS的子查询使用EXIST,Oracle系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间 Oracle系统在执行IN子查询时,首先执行子查询,并将获得的结果列表存放在在一个加了索引的临时表中避免使用having字句避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销
SQL Select语句完整的执行顺序:
1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用聚集函数进行计算;
5、使用having子句筛选分组;
6、计算所有的表达式;
7、使用order by对结果集进行排序。

Oracle sql语句执行顺序
四、SQL Select语句完整的执行顺序:
1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用聚集函数进行计算;
5、使用having子句筛选分组;
6、计算所有的表达式;
7、select 的字段;
8、使用order by对结果集进行排序。

SQL语言不同于其他编程语言的最明显特征是处理代码的顺序。

在大多数据库语言中,代
码按编码顺序被处理。

但在SQL语句中,第一个被处理的子句式FROM,而不是第一出现
的SELECT。

SQL查询处理的步骤序号:
(8)
1 SELECT (9) DISTINCT (11) <TOP_specification> <select_list>
2 (1) FROM <left_table>
3 (3) <join_type> JOIN <right_table>
4 (2) ON <join_condition>
5 (4) WHERE <where_condition>
6 (5) GROUP BY <group_by_list>
7 (6) WITH {CUBE | ROLLUP}
8 (7) HAVING <having_condition>
9 (10) ORDER BY <order_by_list>
以上每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。

这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。

只有最后一步生成的表才会会给调用者。

如果没有在查询中指定某一个子句,将跳过相应的步骤。

逻辑查询处理阶段简介:
1、 FROM:对FROM子句中的前两个表执行笛卡尔积(交叉联接),生成虚拟表VT1。

2、 ON:对VT1应用ON筛选器,只有那些使为真才被插入到TV2。

3、 OUTER (JOIN):如果指定了OUTER JOIN(相对于CROSS JOIN或INNER JOIN),保留表中未找到匹配的行将作为外部行添加到VT2,生成TV3。

如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到处理完所有的表位置。

4、 WHERE:对TV3应用WHERE筛选器,只有使为true的行才插入TV4。

5、 GROUP BY:按GROUP BY子句中的列列表对TV4中的行进行分组,生成TV5。

6、 CUTE|ROLLUP:把超组插入VT5,生成VT6。

7、 HAVING:对VT6应用HAVING筛选器,只有使为true的组插入到VT7。

8、 SELECT:处理SELECT列表,产生VT8。

9、 DISTINCT:将重复的行从VT8中删除,产品VT9。

10、ORDER BY:将VT9中的行按ORDER BY子句中的列列表顺序,生成一个游标(VC10)。

11、TOP:从VC10的开始处选择指定数量或比例的行,生成表TV11,并返回给调用者。

where子句中的条件书写顺序
1、基本上对sql性能没有影响。

相关文档
最新文档