精华内容
下载资源
问答
  • 2019-02-22 14:44:49

    select语句完整语法:

    SELECT 
    DISTINCT <select_list>
    FROM <left_table>
    <join_type> JOIN <right_table>
    ON <join_condition>
    WHERE <where_condition>
    GROUP BY <group_by_list>
    HAVING <having_condition>
    ORDER BY <order_by_condition>
    LIMIT <limit_number>
    
    执行顺序:
    from →join →on →where →group by→having→select→order by→limit
    
    (1)各个关键词的作用:

    from:需要从哪个数据表检索数据
    join:联合多表查询返回记录时,并生成一张临时表
    on:在生成临时表时使用的条件
    where:过滤表中数据的条件
    group by:如何将上面过滤出的数据分组
    having:对上面已经分组的数据进行过滤的条件
    select:查看结果集中的哪个列,或列的计算结果
    order by :按照什么样的顺序来查看返回的数据
    limit:限制查询结果返回的数量

    (2)on与where的用法区别:

    a.on后面的筛选条件主要是针对的是关联表【而对于主表刷选条件不适用】。
    b.如果是想再连接完毕后才筛选就应把条件放置于where后面。对于关联表我们要区分对待。如果是要条件查询后才连接应该把查询件放置于on后。
    c.对于主表的筛选条件应放在where后面,不应该放在on后面

    (3)having和where的用法区别:

    a.having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)。
    b.where肯定在group by 之前,即也在having之前。
    c.where后的条件表达式里不允许使用聚合函数,而having可以。

    (4)count用法

    使用count(列名)当某列出现null值的时候,count(*)仍然会计算,但是count(列名)不会。

    更多相关内容
  • Mysql 语句执行顺序

    千次阅读 2022-01-19 15:46:31
    一、Mysql 语法顺序 ...二、Mysql执行顺序 from on join where group by having select distinct union order by 注: 1)使用distinct要写在所有要查询字段的前面,后面有几个字段,就代表

    一、Mysql 语法顺序

    select[distinct]  
    from  
    join(如left joinon  
    where  
    group by  
    having  
    union  
    order by  
    limit
    

    二、Mysql执行顺序

    from  
    on  
    join  
    where  
    group by  
    having  
    select  
    distinct  
    union  
    order by  
    

    注:

    1)使用distinct要写在所有要查询字段的前面,后面有几个字段,就代表修饰几个字段,而不是紧随distinct的字段;

    2)group by执行后(有聚合函数),group by后面的字段在结果中一定是唯一的,也就不需要针对这个字段用distinct;

    参考:https://blog.csdn.net/jintao_ma/article/details/51253356

    展开全文
  • select语句完整语法: SELECT DISTINCT <select_list> FROM <join> JOIN ON WHERE GROUP BY HAVING ORDER BY ...执行顺序: from →join →on →where →group by→having→select→order
  • 目前还在查看,但是在查阅资料时发现了一些有益的知识,给大家分享一下,就是关于sql以及MySQL语句执行顺序: sql和mysql执行顺序,发现内部机制是一样的。最大区别是在别名的引用上。 一、sql执行顺序 (1)from ...
  • MySQL语句执行顺序

    千次阅读 2022-01-10 11:14:42
    语句中各子句完整执行顺序概括(按照顺序号执行): 每个子句执行顺序分析 语句中各子句完整执行顺序概括(按照顺序号执行): from (注:这里也包括from中的子语句) join on where group by(开始使用select中...

    目录

    语句中各子句完整执行顺序概括(按照顺序号执行):

    每个子句执行顺序分析


    语句中各子句完整执行顺序概括(按照顺序号执行):

    1. from (这里也包括from中的子语句)
    2. join
    3. on
    4. where
    5. group by(开始使用select中的别名,后面的语句中都可以使用;但是不能使用ROW_NUMBER()等窗口函数的别名)
    6. avg,sum.... 等聚合函数
    7. having
    8. select
    9. distinct
    10. order by
    11. limit

    每个子句执行顺序分析

    所有的 查询语句都是从from开始执行的,在执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个执行步骤的输入。

    1. from

    form是一次查询语句的开端。

    • 如果是一张表,会直接操作这张表;
    • 如果这个from后面是一个子查询,会先执行子查询中的内容,子查询的结果也就是第一个虚拟表T1。(注意:子查询中的执行流程也是按照本篇文章讲的顺序哦)。
    • 如果需要关联表,使用join,请看2,3

    2. join

    如果from后面是多张表,join关联,会首先对前两个表执行一个笛卡尔乘积,这时候就会生成第一个虚拟表T1(注意:这里会选择相对小的表作为基础表);

    3.  on

    对虚表T1进行ON筛选,只有那些符合的行才会被记录在虚表T2中。(注意,这里的这里如果还有第三个表与之关联,会用T2与第三个表进行笛卡尔乘积生产T3表,继续重复3. on步骤生成T4表,不过下面的顺序讲解暂时不针对这里的T3和T4,只是从一个表关联查询T2继续说)

    4. where

    对虚拟表T2进行WHERE条件过滤。只有符合的记录才会被插入到虚拟表T3中。

    5.group by

    group by 子句将中的唯一的值组合成为一组,得到虚拟表T4。如果应用了group by,那么后面的所有步骤都只能操作T4的列或者是执行6.聚合函数(count、sum、avg等)。(注意:原因在于分组后最终的结果集中只包含每个组中的一行。谨记,不然这里会出现很多问题,下面的代码误区会特别说。)

    6. avg,sum.... 等聚合函数

    聚合函数只是对分组的结果进行一些处理,拿到某些想要的聚合值,例如求和,统计数量等,并不生成虚拟表。

    7.  having

    应用having筛选器,生成T5。HAVING子句主要和GROUP BY子句配合使用,having筛选器是第一个也是为唯一一个应用到已分组数据的筛选器。

    8.  select

    执行select操作,选择指定的列,插入到虚拟表T6中。

    9.  distinct

    对T6中的记录进行去重。移除相同的行,产生虚拟表T7.(注意:事实上如果应用了group by子句那么distinct是多余的,原因同样在于,分组的时候是将列中唯一的值分成一组,同时只为每一组返回一行记录,那么所以的记录都将是不相同的。)

    10. order by

    应用order by子句。按照order_by_condition排序T7,此时返回的一个游标,而不是虚拟表。sql是基于集合的理论的,集合不会预先对他的行排序,它只是成员的逻辑集合,成员的顺序是无关紧要的。对表进行排序的查询可以返回一个对象,这个对象包含特定的物理顺序的逻辑组织。这个对象就叫游标。

    oder by的几点说明

    • 因为order by返回值是游标,那么使用order by 子句查询不能应用于表表达式。
    • order by排序是很需要成本的,除非你必须要排序,否则最好不要指定order by,
    • order by的两个参数  asc(升序排列)  desc(降序排列)

    11. limit

    取出指定行的记录,产生虚拟表T9, 并将结果返回。

    limit后面的参数可以是 一个limit m ,也可以是limit m n,表示从第m条到第n条数据。

    (注意:很多开发人员喜欢使用该语句来解决分页问题。对于小数据,使用LIMIT子句没有任何问题,当数据量非常大的时候,使用LIMIT m,n是非常低效的。因为LIMIT的机制是每次都是从头开始扫描,如果需要从第60万行开始,读取3条数据,就需要先扫描定位到60万行,然后再进行读取,而扫描的过程是一个非常低效的过程。所以,对于大数据处理时,是非常有必要在应用层建立一定的缓存机制)

    展开全文
  • 记录一下 Mysql 的 SQL 语句执行顺序 from join on where group by (可以使用 select 中的别名,后面的语句中都可以使用) count、sum、svg… having select distinct limit 1、确定范围:确定查询范围,过滤不想要...

    select 语句定义:

    <SELECT clause> 
    	[<FROM clause>] 
    	[<WHERE clause>] 
    	[<GROUP BY clause>] 
    	[<HAVING clause>] 
    	[<ORDER BY clause>] 
    	[<LIMIT clause>] 
    

    select 语句的执行顺序

    1. from
    2. join
    3. on
    4. where
    5. group by (可以使用 select 中的别名,后面的语句中都可以使用)
    6. count、sum、svg…
    7. having
    8. select
    9. distinct
    10. order by
    11. limit

    1、确定范围:确定查询数据范围(1->2->3)
    2、数据处理:过滤不符合的数据,对需要的数据进行分组统计,过滤不符合的统计结果(4->5->6->7)
    3、返回结果:确定返回的列,去重,确定返回条数(8->9->10->11)

    特别注意:

    1、where 语句和 group by 语句后面不可以使用聚合函数(count、sum、svg…)
    2、mysql 中 group by 语句及其之后的语句可以使用 select 中的别名

    • 根据 sql 语句执行顺序,group by 在 select 之前执行,所以 group by 是无法使用 select 后面的别名的
    • mysql 中 group by 之所以能使用 select 后面的别名是因为 mysql 对其进行了扩充,其他数据库不支持
    展开全文
  • 关于sql和MySQL语句执行顺序(必看)

    万次阅读 多人点赞 2016-03-29 12:15:09
    目前还在查看,但是在查阅资料时发现了一些有益的知识,给大家分享一下,就是关于sql以及MySQL语句执行顺序: sql和mysql执行顺序,发现内部机制是一样的。最大区别是在别名的引用上。 一、sql执行顺序 (1)from (3)...
  • mysql语句的书写顺序和执行顺序有很大差异。 书写顺序,mysql的一般书写顺写为: select <要返回的数据列> from <表名> <join> join on where group by <分组条件> having <分组后的筛选条件> ...
  • mysql语句执行顺序

    千次阅读 2018-04-29 17:42:56
    MySQL语句执行顺序MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作。其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入,只是这些虚拟的表对...
  • MySQL语句执行顺序

    2017-12-07 16:32:34
    MySQL语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作。其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入,只是这些虚拟的表对用户来说是透明的,但是...
  • MySQL执行过程以及顺序

    千次阅读 2019-10-10 14:26:09
    前言:MySQL在我们的开发中基本每天都要面对的,作为开发中的数据...MySQL服务端是如何处理请求的,又是如何执行sql语句的?本篇博客将来探讨这个问题: 本篇博客的目录 一:MySQL执行过程 二:MySQL执行过程中的状态 三...
  • 一、sql语句执行顺序 1.sql语句执行顺序 (7)select (8)distinct 字段名1,字段名2... (5)[fun 字段名] (1)from 表名 (2)inner|left|right|full|cross join on 连接条件 (3)where 筛选条件 (4)group by 分组条件...
  • 1.SELECT语句处理顺序 2.where 后条件执行先后顺序 1.SELECT语句处理顺序 (1)from (2)on (3)join (4)where (5)group by (开始使用select中的别名,后面的语句中都可以使用) (6)avg,sum.... (7)having (8...
  • 引言 到目前为止,已经总结了常见的SQL子句,包括 SELECT 、FROM、JOIN ...ON、...除了上述这些子句,下面将会介绍另一个比较常用的子句 LIMIT ,并且总结一下SQL 语句执行顺序。 一、LIMIT 子句 LIMIT 子句...
  • MySQL中SQL语句执行顺序

    千次阅读 2018-06-15 12:46:44
    【1】SQL执行语法顺序 --查询组合字段 (5)select (5-2) distinct(5-3) top(&lt;top_specification&gt;)(5-1)&lt;select_list&gt; --连表 (1)from (1-J)&lt;left_table&gt;&lt;join_...
  • 一、MySQL中SQL的书写顺序和执行顺序 sql编写顺序: select distinct…from…join…on…where…group by…having…order by…limit… sql解析顺序: from…on…join…where…group by…having…select distinct…...
  • 本文将从MySQL总体架构—>查询执行流程—>语句执行顺序来探讨一下其中的知识。 一、MySQL架构总览: 架构最好看图,再配上必要的说明文字。 下图根据参考书籍中一图为原本,再在其上添加上了自己的理解。   从...
  • MySQL,SQL语句执行顺序

    千次阅读 2021-01-19 16:30:59
    1.SQL执行顺序:select 考生姓名, max(总成绩) asmax总成绩fromtb_Gradewhere 考生姓名 is not nullgroup by考生姓名having max(总成绩) > 600order by max总成绩(1). 首先执行 FROM 子句, 从 tb_Grade 表组装...
  • MySql执行顺序及执行计划

    万次阅读 多人点赞 2019-03-06 12:41:12
    一、mySql执行顺序 mysql执行sql的顺序从 From 开始,以下是执行的顺序流程 1、FROM table1 left join table2 on 将table1和table2中的数据产生笛卡尔积,生成Temp1 2、JOINtable2 所以先是确定表,再确定关联...
  • MySQL 查询执行顺序

    2021-05-29 16:40:24
    目录前言一、SQL查询执行顺序二、具体步骤执行顺序简介1、执行FROM语句2、执行ON过滤3、添加外部行(外联结)4、执行WHERE过滤5、执行GROUP BY分组6、执行HAVING过滤7、SELECT列表8、执行DISTINCT子句9、执行ORDER ...
  • 无论什么语言,不管什么框架,在这个大数据的时代,最终都会和数据库打...今天我们一起讨论一下mysql查询语句执行顺序,这对项目开发中编写sql语句非常重要,知道sql语句里各个关键字的作用,从此写sql不是问题!!!
  • MySQL数据据库中我们经常使用SQL SELECT语句来查询数据,那么关于它的执行顺序,下面小编来带大家简单了解一下
  • SQL语句执行顺序MySQL中limit的用法

    千次阅读 2021-01-19 05:12:33
    一、 SQL语句执行顺序MySQL中limit的用法执行顺序:from...where...group by... having.... select ... order by... limitlimit限制查询的结果序号limit off, n: 从off偏移取n个数据limit n: 取前n个数据,相当于...
  • 上一篇讲述了Oracle的SELECT语法的执行顺序,这篇讲述MySQL的SELECT语法的执行顺序MySQL的SELECT语法的执行顺序和Oracle的基本相同,只是增加了MySQL独有的LIMIT语法。目录一、SELECT语句的处理过程1、 FROM阶段2...
  • 主要给大家介绍了SQL语句执行的相关内容,文中一步步给大家深入的讲解,包括MySQL架构总览->查询执行流程->SQL解析顺序,需要的朋友可以参考下
  • 答案:执行顺序是下面代码中的数字标记: (8) SELECT (9)DISTINCT <select_list> (1) FROM <left_table> (3) <join_type> JOIN <right_table> (2) ON <join_condition> (4) WHERE &...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 176,584
精华内容 70,633
关键字:

mysql语句执行顺序

mysql 订阅
友情链接: bookmark_v0.2.2.zip