精华内容
下载资源
问答
  • sql语句书写顺序: select >> from >> where >> group by >> having >> order by 注意: 1. select和from是必须的; 2. where和having不能同时使用; 3. having和group by联合使用; ...
    sql语句的书写顺序:

    select >> from >> where >> group by >> having >> order by >> limit
    注意:
    1. select和from是必须的;
    2. where和having不能同时使用;
    3. having和group by联合使用;

    sql语句的解析顺序 :

    from >> on>> join >> where >> group by >> having >> select >> distinct >> order by >> limit
    注意:虽然select在having后执行,但是mysql中仍然可以在having中使用select语句定义的别名

    select [ALL | DISTINCT | DISTINCTROW | TOP] 字段
    from[inner join  right join | left join2]
    [on 连接条件]
    [where 条件]
    [group by 分组规则]
    [having 分组条件]
    [order by 排序规则]
    [limit 分页规则]
    
    展开全文
  • 1.书写顺序 (8)SELECT (6) avg,sum (9)DISTINCT <select_list> (1)FROM <table> (3)<join_type> JOIN <join_table> (2)ON <join_condition> (4)WHERE <where_condition> (5)...

    1.书写顺序

    (8)SELECT
    (6) avg,sum
    (9)DISTINCT <select_list>
    (1)FROM <table>
    (3)<join_type> JOIN <join_table>
    (2)ON <join_condition>
    (4)WHERE <where_condition>
    (5)GROUP BY <group_by_list>
    (7)HAVING <having_condition>
    (10)ORDER BY <order_by_condition>
    (11)LIMIT <limit_number>

    2.执行顺序

    每个语句前面的数字代表执行的顺序

    具体流程如下:

    第一步:首先对from子句中的前两个表执行一个笛卡尔乘积,此时生成虚拟表 vt1(选择相对小的表做基础表)。 
    第二步:接下来便是应用on筛选器,on 中的逻辑表达式将应用到 vt1 中的各个行,筛选出满足on逻辑表达式的行,生成虚拟表 vt2 。
    第三步:如果是outer join 那么这一步就将添加外部行,left outer jion 就把左表在第二步中过滤的添加进来,如果是right outer join 那么就将右表在第二步中过滤掉的行添加进来,这样生成虚拟表 vt3 。

    第四步:如果 from 子句中的表数目多余两个表,那么就将vt3和第三个表连接从而计算笛卡尔乘积,生成虚拟表,该过程就是一个重复1-3的步骤,最终得到一个新的虚拟表 vt3。 

    第五步:应用where筛选器,对上一步生产的虚拟表引用where筛选器,生成虚拟表vt4,在这有个比较重要的细节不得不说一下,对于包含outer join子句的查询,就有一个让人感到困惑的问题,到底在on筛选器还是用where筛选器指定逻辑表达式呢?on和where的最大区别在于,如果在on应用逻辑表达式那么在第三步outer join中还可以把移除的行再次添加回来,而where的移除的最终的。举个简单的例子,有一个学生表(班级,姓名)和一个成绩表(姓名,成绩),我现在需要返回一个x班级的全体同学的成绩,但是这个班级有几个学生缺考,也就是说在成绩表中没有记录。为了得到我们预期的结果我们就需要在on子句指定学生和成绩表的关系(学生.姓名=成绩.姓名)那么我们是否发现在执行第二步的时候,对于没有参加考试的学生记录就不会出现在vt2中,因为他们被on的逻辑表达式过滤掉了,但是我们用left outer join就可以把左表(学生)中没有参加考试的学生找回来,因为我们想返回的是x班级的所有学生,如果在on中应用学生.班级='x'的话,left outer join会把x班级的所有学生记录找回(感谢网友康钦谋__康钦苗的指正),所以只能在where筛选器中应用学生.班级='x' 因为它的过滤是最终的。 

    第六步:group by 子句将中的唯一的值组合成为一组,得到虚拟表vt5。如果应用了group by,那么后面的所有步骤都只能得到的vt5的列或者是聚合函数(count、sum、avg等)。原因在于最终的结果集中只为每个组包含一行。这一点请牢记。 

    第七步:应用cube或者rollup选项,为vt5生成超组,生成vt6. 
    第八步:应用having筛选器,生成vt7。having筛选器是第一个也是为唯一一个应用到已分组数据的筛选器。 
    第九步:处理select子句。将vt7中的在select中出现的列筛选出来。生成vt8. 

    第十步:应用distinct子句,vt8中移除相同的行,生成vt9。事实上如果应用了group by子句那么distinct是多余的,原因同样在于,分组的时候是将列中唯一的值分成一组,同时只为每一组返回一行记录,那么所以的记录都将是不相同的。 

    第十一步:应用order by子句。按照order_by_condition排序vt9,此时返回的一个游标,而不是虚拟表。sql是基于集合的理论的,集合不会预先对他的行排序,它只是成员的逻辑集合,成员的顺序是无关紧要的。对表进行排序的查询可以返回一个对象,这个对象包含特定的物理顺序的逻辑组织。这个对象就叫游标。正因为返回值是游标,那么使用order by 子句查询不能应用于表表达式。排序是很需要成本的,除非你必须要排序,否则最好不要指定order by,最后,在这一步中是第一个也是唯一一个可以使用select列表中别名的步骤。 

    第十二步:应用top选项。此时才返回结果给请求者即用户。 


     

    展开全文
  • 1. 书写顺序 按以下的顺序书写sql语句 SELECT 查询列表. FROM 表 1 【连接类型】 JOIN 表2 ON 连接条件 WHERE 筛选条件 GROUP BY 分组列表 HAVING 分组后的筛选条件 ORDER BY 排序的字段 LIMIT 起始的条目索引,...

    1. 书写顺序
    按以下的顺序书写sql语句

    SELECT 查询列表.
    FROM 表 1                                      
    【连接类型】 JOIN 表2                           
    ON 连接条件
    WHERE 筛选条件
    GROUP BY 分组列表
    HAVING 分组后的筛选条件
    ORDER BY 排序的字段
    LIMIT 起始的条目索引,条目数;


    即:

    SELECT →FROM → JOIN → ON → WHERE → GROUP BY → HAVING → ORDER BY→ LIMIT

    注意:

    ① 连接类型有:inner、left outer、right outer、cross

    ② 起始条目索引默认从0开始;

    ③ 若 每页显示条目数:pageSize,要显示的页数:page
    则有:

    SELECT * FROM 表 LIMIT (page-1)* pageSize,pageSize


    2. 执行顺序

    SELECT 查询列表                                  
    FROM 表 1                                                      
    【连接类型】 JOIN 表 2                                 
    ON 连接条件                    
    WHERE 筛选条件                
    GROUP BY 分组列表            
    HAVING 分组后的筛选条件        
    ORDER BY 排序的字段            
    LIMIT 起始的条目索引,条目数;    


    即:

    FROM → JOIN → ON → WHERE → GROUP BY → HAVING → SELECT → ORDER BY→ LIMIT

     

    展开全文
  • SQL语句书写格式

    千次阅读 2011-12-19 22:33:03
    微软完全可以解析SQL语句并使之成为更有利于开发的格式。  如果有两个表进行连接,INNER(LEFT/RIGHT) JOIN等语句也应该写在一行。另外,建议使用更简单的英文别名代替中文表名。  呵呵,很简单吧?如果有...
     
    
    1 string  strSQL  =   " SELECT [AddressID], [AddressLine1], [AddressLine2], [City], [StateProvinceID], [PostalCode], [rowguid], [ModifiedDate] FROM [AdventureWorks].[Person].[Address] WHERE City = 'Bothell' ORDER BY AddressID " ;

        这是最普通的一种写法,而且在开发中被广泛采用。

     1                  string  strSQL  =       " SELECT  "   +  
     2                                          " [AddressID],  "   +  
     3                                          " [AddressLine1],  "   +
     4                                          " [AddressLine2],  "   +
     5                                          " [City],  "   +
     6                                          " [StateProvinceID],  "   +
     7                                          " [PostalCode],  "   +
     8                                          " [rowguid],  "   +
     9                                          " [ModifiedDate]  "   +
    10                                      " FROM  "   +
    11                                          " [AdventureWorks].[Person].[Address]  "   +
    12                                      " WHERE  "   +
    13                                          " City = 'Bothell'  "   +
    14                                      " ORDER BY  "   +
    15                                          " AddressID " ;
    16

        第二种写法,除了让人开着舒服一点外,没有任何好处。

        上图所示的写法要更好一点,可以降低维护难度,提高开发效率,团队开发中应该对这些小细节加以规定。其中,图中标示的第一点可以看看在SQL Server 2005中通过下图菜单生成的SQL语句,但不知道为什么SQL Server 2005的查询编辑器生成的SQL语句还是那么蹩脚。微软完全可以解析SQL语句并使之成为更有利于开发的格式。

        如果有两个表进行连接,INNER(LEFT/RIGHT) JOIN等语句也应该写在一行。另外,建议使用更简单的英文别名代替中文表名。

        呵呵,很简单吧?如果有更好的书写SQL语句的改进方案,请告诉我。

    展开全文
  • 文章目录SQL语句书写顺序和执行顺序 SQL语句书写顺序和执行顺序 //书写顺序 select 查询列表(字段)⑦ from 表 ① 连接类型Join 表2 ② on 连接条件 ③ where 筛选条件 ④ group by 分组列表 ⑤ having 分组后的...
  • SQL查询语句书写顺序、执行顺序和注意事项 1,SQL查询语句常用关键字 select 、from、where、group by、having、order by select :指定查看结果集中的那个列或列的计算结果 from :从哪张表查询数据 where :...
  • SQL语句书写顺序和解析顺序

    千次阅读 2018-02-06 17:32:52
    sql语句书写顺序:select ---> from --->where ---> group by ---> having ---> order by 其中where和having是不能同时使用的,并且having和group by 是联合使用的 sql语句的解析顺序 : from --->where --
  • 1.书写顺序 执行顺序
  • 书写优先顺序: (1) SELECT (2) FROM (3) WHERE (4) GROUP BY (5) HAVING (6) ORDER BY (7) LIMIT 例如: SELECT * FROM student WHERE sex = “女” HAVING birthday > ‘2016-12-05’ ORDERBY stuid LIMIT 10; ...
  • SQL语句规范

    2013-05-31 08:47:46
    SQL语句优化指南、写SQL语句时,注意SQL语句格式、基于DBLINK的查询,要考虑尽量减少网络TRIP。
  • 感觉像捅了MySQL窝了,最近报错大多与SQL语句有关,一番排除找到了答案,但是不知到为啥,话不多少,上代码: 这个是错误代码: <update id="user_update" parameterType="map"> update crm_user set User_...
  • SQL查询语句书写顺序和执行顺序

    千次阅读 2019-12-13 21:59:54
    1、一个完整SQL查询语句书写顺序 -- "mysql语句编写顺序" 1 select distinct * 2 from 表(或结果集) 3 where … 4 group by …having… 5 order by … 6 limit start,count -- 注:1、2属于最基本语句,必须含有。...
  • 书写顺序 select -->查询字段–>from–>表名–>where条件–>group by字段–>having条件–>order by 字段 执行顺序 from表–>where条件–>group by 字段 -->having 条件–>select *...
  • 查询语句中select from where group by having order by的执行顺序 1.查询中用到的关键词主要包含六个,并且他们的顺序依次为  select--from--where--group by--having-...与sql语句书写顺序并不是一样的,而是...
  • SQL 常用语句书写格式以及示例

    千次阅读 2018-11-01 16:58:45
    Before insert on 表名 (在对XX表执行insert语句之前触发) For each row (作用到每一行,不写自动默认) When (new.id is null)(当新的一行的ID字段是空的时候) Begin Select 序列名.nextval into:new....
  • sql语句执行与书写顺序

    千次阅读 2018-09-05 14:58:49
    查询语句中select from where group by having order by的执行顺序 1.查询中用到的关键词主要包含六个,并且他们的顺序依次为 select–from–where–group by–having–order by 其中select和...
  • 补充: 1,笛卡尔积,左表的第一行,和 右表的所有行进行关联。 左表的第二行,再和右表的所有行做关联,这样… 所有的行和所有行就用关系了。 2,如果是3张表,就会重复,1,2,3 这个过程, 3,outer join还得 把...
  • SQL语句的执行顺序

    千次阅读 2018-07-26 23:30:15
    SQL语句执行顺序 查询语句中select from where group by having order by的执行顺序   1.查询中用到的关键词主要包含六个,并且他们的顺序依次为  select--from--where--group by--...与sql语句书写顺序...
  • select f.*, g.trueworkload from (select a.username, d.batchcode, c.workflowname, count(*) workload from t_systemuserinfo a, t_genworkflow c, t_batch d
  • SQL语句编写规范

    万次阅读 多人点赞 2018-09-30 08:40:01
    SQL语句编写规范
  • 1. 从多个表中选择记录(表名顺序) 执行顺序为从右往左,即表记录数少的放到右边,即最为基础表。如果有三个以上的表做连接查询,我们将交叉表作为基础...对于SQL Server有两种说法,第一种:不用考虑顺序SQLServ...
  • sql语句书写小技巧

    千次阅读 2018-07-18 14:45:57
    一、sql语句书写顺序 select---&gt;from---&gt;where---&gt;group by---&gt;having---&gt;order by 二、sql语句解析顺序 from---&gt;where---&gt;group by---&gt; having---&...
  • SQL语句书写顺序

    2021-07-26 15:13:46
    查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by from:需要从哪个数据表检索数据 where:过滤表中数据的条件 group by:如何将上面过滤出的数据分组 ...
  • SQL语句的语法顺序和执行顺序

    千次阅读 2018-07-20 15:06:04
    一、语法顺序和执行顺序 ... (1)SQL语句的语法顺序:   SELECT[DISTINCT]  FROM  JOIN  ON  WHERE  GROUP BY  HAVING  UNION  ORDER BY  LIMIT  (2)SQL的执行顺序 ...
  • sql语句书写顺序

    2018-06-17 12:48:01
    SELECT &lt;select_list&gt;FROM &lt;left_table&gt; &lt;join_type&gt; JOIN &lt;rigth_table&gt; ON &lt;join_condition&gt;WHERE &...group_by_lis...
  • sql语句关键字的顺序

    2020-05-06 15:53:45
    sql语句关键字顺序: select——from——join on——where——group by——order by——having——limit sql语句执行顺序: from——join on——where——group by——select | having——order by——limit ...
  • 一同学去面试,面试官让说一下sql的执行顺序,他尽然答错了,面试也就到此结束了!实属不应该。。。
  • 在写sql的时候,group by,order by 和limit之间的先后顺序是有约定的,一定要按照group by,order by 、limit的先后顺序书写,否则会报错!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,654
精华内容 13,461
关键字:

sql语句书写顺序