首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

除了会排序,你对ORDER BY的用法可能一无所知!

导读 为什么只有ORDER BY后面可以使用别名 为什么不推荐使用ORDER BY后接数字来排序 为什么视图和子查询里面不能使用ORDER BY …… 小伙伴们进行SQL排序时,都能很自然的使用到...一、ORDER BY返回的是游标而不是集合 SQL理论其实是集合论,常见的类似求数据的交集、并集、差集都可以使用集合的思维来求解。...集合中的行之间没有预先定义的顺序,它只是成员的一种逻辑组合,成员之间的顺序无关紧要。 如下图,每一个括号里的内容就是一条记录,没排序前,他们都是随机分布集合中。...Student对象 二、ORDER BY子句是唯一能重用列别名的一步 这里涉及SQL语句的语法顺序和执行顺序了,我们常见的SQL语法顺序如下: SELECT DISTINCT <select...五、T-SQL中表表达式加了TOP可以使用ORDER BY 我们从第四点的报错信息中可以看到:另外还指定了 TOP、OFFSET 或 FOR XML是可以使用ORDER BY的。 ?

2.3K30

SQL中order by的高级用法

导读 为什么只有ORDER BY后面可以使用别名 为什么不推荐使用ORDER BY后接数字来排序 为什么视图和子查询里面不能使用ORDER BY …… 小伙伴们进行SQL排序时,都能很自然的使用到...一、ORDER BY返回的是游标而不是集合 SQL理论其实是集合论,常见的类似求数据的交集、并集、差集都可以使用集合的思维来求解。...集合中的行之间没有预先定义的顺序,它只是成员的一种逻辑组合,成员之间的顺序无关紧要。 如下图,每一个括号里的内容就是一条记录,没排序前,他们都是随机分布集合中。...Student(ID,Name,Age) Student对象 二、ORDER BY子句是唯一能重用列别名的一步 这里涉及SQL语句的语法顺序和执行顺序了,我们常见的SQL语法顺序如下: SELECT DISTINCT...所以如果你WHERE,GROUP BY,或HAVING后面使用列的别名均会报错。 我们举例测试一下。

7610
您找到你想要的搜索结果了吗?
是的
没有找到

数据库mysql的执行顺序(sql语句大全实例教程)

目前还在查看,但是查阅资料发现了一些有益的知识,给大家分享一下,就是关于sql以及MySQL语句执行顺序: sql和mysql执行顺序,发现内部机制是一样的。最大区别是别名的引用上。...一、sql执行顺序 from join on where group by(开始使用select中的别名,后面的语句中都可以使用) avg,sum…....sql是基于集合理论的,集合不会预先对他的行排序,它只是成员的逻辑集合,成员的顺序是无关紧要的。对表进行排序的查询可以返回一个对象,这个对象包含特定的物理顺序的逻辑组织。这个对象就叫游标。...排序是很需要成本的,除非你必须要排序,否则最好不要指定order by,最后,在这一步中是第一个也是唯一一个可以使用select列表中别名的步骤。 第十二步:应用top选项。...执行 GROUP BY 子句, 把 tb_Grade 表按 “学生姓名” 列进行分组(注:这一步开始才可以使用select中的别名,他返回的是一个游标,而不是一个表,所以where中不可以使用select

1.5K20

如何写优雅的SQL原生语句?

sql各语句执行顺序概览与讲解 项目实战中的一段sql说明讲解 sql语句中别名使用 书写sql语句的注意事项 前言 上一篇讲Mysql基本架构,以“sql查询语句MySql架构中具体是怎么执行的...sql是基于集合理论的,集合不会预先对他的行排序,它只是成员的逻辑集合,成员的顺序是无关紧要的。对表进行排序的查询可以返回一个对象,这个对象包含特定的物理顺序的逻辑组织。这个对象就叫游标。...sql语句中的别名 别名在哪些情况使用 SQL 语句中,可以为表名称及字段(列)名称指定别名 表名称指定别名 同时查询两张表的数据的时候: 未设置别名前: SELECT article.title,...别名也可以group by与having的时候都可使用 别名可以order by排序的时候被使用 查看上面一段sql delete , update MySQL都可以使用别名别名多表...(级联)删除尤为有用 delete t1,t2 from t_a t1 , t_b t2 where t1.id = t2.id 子查询结果需要使用别名 查看上面一段sql 别名使用注意事项 虽然定义字段别名

1.8K20

关于sql和MySQL的语句执行顺序(必看!!!)

目前还在查看,但是查阅资料发现了一些有益的知识,给大家分享一下,就是关于sql以及MySQL语句执行顺序: sql和mysql执行顺序,发现内部机制是一样的。最大区别是别名的引用上。...一、sql执行顺序 from join on where group by(开始使用select中的别名,后面的语句中都可以使用) avg,sum…....sql是基于集合理论的,集合不会预先对他的行排序,它只是成员的逻辑集合,成员的顺序是无关紧要的。对表进行排序的查询可以返回一个对象,这个对象包含特定的物理顺序的逻辑组织。这个对象就叫游标。...排序是很需要成本的,除非你必须要排序,否则最好不要指定order by,最后,在这一步中是第一个也是唯一一个可以使用select列表中别名的步骤。 第十二步:应用top选项。...执行 GROUP BY 子句, 把 tb_Grade 表按 “学生姓名” 列进行分组(注:这一步开始才可以使用select中的别名,他返回的是一个游标,而不是一个表,所以where中不可以使用select

1.5K30

关于sql和MySQL的语句执行顺序(必看!!!)

请认真看完此文章,对你的sql一定会有很大的提升! ql和mysql执行顺序,发现内部机制是一样的。最大区别是别名的引用上。...一、sql执行顺序 (1)from (3) join (2) on (4) where (5)group by(开始使用select中的别名,后面的语句中都可以使用) (6) avg,sum...sql是基于集合理论的,集合不会预先对他的行排序,它只是成员的逻辑集合,成员的顺序是无关紧要的。对表进行排序的查询可以返回一个对象,这个对象包含特定的物理顺序的逻辑组织。这个对象就叫游标。...排序是很需要成本的,除非你必须要排序,否则最好不要指定order by,最后,在这一步中是第一个也是唯一一个可以使用select列表中别名的步骤。 第十二步:应用top选项。...执行 GROUP BY 子句, 把 tb_Grade 表按 "学生姓名" 列进行分组(注:这一步开始才可以使用select中的别名,他返回的是一个游标,而不是一个表,所以where中不可以使用select

2.9K40

常用SQL语句和语法汇总

WHERE语句来选择记录 SQL常用规则2 SQL语句可以使用AS关键字为列设定别名,设定汉字别名需要使用双引号(’’)括起来 SELECT语句中可以使用DISTINCT来删除重复行 WHERE子句要紧跟在...的形式表现出来 使用GROUP BY 子句,SELECT子句中不能出现聚合键之外的列名 GROUP BY子句中不能使用SELECT子句中定义的别名 只有SELECT子句、ORDER BY子句和HAVING...ORDER BY子句通常写在SELECT语句的末尾 排序键包含NULL,会在开头或者末尾进行汇总 ORDER BY子句中可以使用SELECT子句中定义的别名 ORDER BY子句中可以使用SELECT...定义视图不要使用ORDER BY子句 视图和表需要同时进行更新,因此通过汇总得到的视图无法进行更新 子查询作为内层查询会首先执行 标量字查询就是返回单一值的子查询 细分的组内进行比较需要使用关联子查询...,但可以使用ALL选项,保留重复行 进行联结需要在FROM子句使用多张表 进行内联结必须使用ON子句,并且要书写在FROM 和WHERE之间 使用联结SELECT子句中的列需要按照“.”的格式进行书写

2.5K50

SQL 性能优化 总结

由此可见,要想过滤条件起到正确的作用,首先要明白这个条件应该在什么时候起作用,然后再决定放在那里。 (12)减少对表的查询: 含有子查询的SQL语句中,要特别注意减少对表的查询....(14)使用表的别名(Alias): 当在SQL语句中连接多个表, 请使用表的别名并把别名前缀于每个Column上.这样一来, 就可以减少解析的时间并减少那些由Column歧义引起的语法错误。...: 如果索引是建立多个列上,只有它的第一个列(leadingcolumn)被where子句引用时,优化器才会选择使用该索引.这也是一条简单而重要的规则,当仅引用索引的第二个列,优化器使用了全表扫描而忽略了索引...(28) 用UNION-ALL替换UNION ( 如果有可能的话): 当SQL 语句需要UNION两个查询结果集合时,这两个结果集合会以UNION-ALL 的方式被 合并, 然后输出最终结果前进行排序...效率就会因此得到提高.需要注意的是,UNION ALL 将重复输出两个结果集合中相同记录.因此各位还是要从业务需求分析使用 UNION ALL的可行性.

1.8K20

常用SQL语句和语法汇总

FROM WHERE ; SQL常用规则2 SQL语句可以使用AS关键字为列设定别名,设定汉字别名需要使用双引号(’’)括起来 SELECT语句中可以使用DISTINCT...的形式表现出来 使用GROUP BY 子句,SELECT子句中不能出现聚合键之外的列名 GROUP BY子句中不能使用SELECT子句中定义的别名 只有SELECT子句、ORDER BY子句和HAVING...ORDER BY子句通常写在SELECT语句的末尾 排序键包含NULL,会在开头或者末尾进行汇总 ORDER BY子句中可以使用SELECT子句中定义的别名 ORDER BY子句中可以使用SELECT...SQL常用规则7 集合运算会除去重复的记录,但可以使用ALL选项,保留重复行 进行联结需要在FROM子句使用多张表 进行内联结必须使用ON子句,并且要书写在FROM 和WHERE之间 使用联结...SELECT子句中的列需要按照“.

3.1K80

重学 SQL(一)

并且,大部分数据库都在标准 SQL 上做了扩展。也就是说,如果只使用标准 SQL理论上所有数据库都可以支持,但如果使用某个特定数据库的扩展 SQL,换一个数据库就不能执行了。...查询 SELECT 语句 执行查询前,我们需要先确定我们将要查询的数据库,使用 USE 关键字: USE [database_name]; 注意: SQL 是不区分大小写的语言,但是关键字我们最好使用大写形式...我们把每个子句分别写在一行复杂查询中是十分有用的。 SELECT 子句 我们可以使用 * 返回全部列,或者单独指定希望返回的列名列表。 我们还可以对列进行算数运算,使用 AS 对某列指定别名。...WHERE 子句用于过滤我们的结果集,我们 WHERE 子句中可以使用比较运算符,不等于使用符号表示为 !...需要特别注意, MySQL 中,我们可以使用未选择列进行排序,而其他关系型数据库则会报错。

1.1K20

SQL优化法则小记

由此可见,要想过 滤条件起到正确的作用,首先要明白这个条件应该在什么时候起作用,然后再决定,放在那里. 12.减少对表的查询: 含有子查询的 SQL 语句中,要特别注意减少对表的查询.例子:...能够掌握上面的运用函数解决问题的方法实际 工作中是非常有意义的 . 14.使用表的别名(Alias): 当在 SQL 语句中连接多个表, 请使用表的别名并把别名前缀于每个 column 上.这...这也是一条简单而重要的规则,当仅引用索引的 第二个列,优化器使用了全表扫描而忽略了索引. 28.用 union-all替换 union( 如果有可能的话): 当 SQL 语句需要 union 两个查询结果集合时...需要注意的是, union-all 将重复输出两 个结果集合中相同记录....注意当字符和数值比较, oracle会优先转换数值类型到字符类型 31.需要当心的 where子句: 某些 select语句中的 where子句使用索引. 这里有一些例子.

2K90

Java SQL语句优化经验

由此可见,要想过滤条件起到正确的作用,首先要明白这个条件应该在什么时候起作用,然后再决定放在那里 (12) 减少对表的查询: 含有子查询的SQL语句中,要特别注意减少对表的查询.例子: SELECT...能够掌握上面的运用函数解决问题的方法实际工作中是非常有意义的 (14) 使用表的别名(Alias): 当在SQL语句中连接多个表, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由...当SQL 语句需要UNION两个查询结果集合时,这两个结果集合会以UNION-ALL的方式被合并, 然后输出最终结果前进行排序....需要注意的是,UNION ALL 将重复输出两个结果集合中相同记录. 因此各位还是要从业务需求分析使用UNION ALL的可行性....注意当字符和数值比较, ORACLE会优先转换数值类型到字符类型 (31) 需要当心的WHERE子句: 某些SELECT 语句中的WHERE子句使用索引. 这里有一些例子.

2.6K100

MySQL基础SQL编程学习1

注:在对数据库中的日期字段进行查询筛选的时候,注意不同数据库对日期型数据存在差异; 注:使用REGEXP子句后后面的正则匹配需要采用’ ‘进行包含; INSERT 语句 描述:INSERT INTO...什么时候使用DELETE?...在下面的情况下使用别名很有用: 查询中涉及超过一个表 查询中使用了函数 列名称很长或者可读性差 需要把两个列或者多个列结合在一起 基础语法: -- 列的 SQL 别名语法 SELECT column_name...full join > max(left join, right join) 4.使用 join ,on 和 where 条件的区别如下: - on 条件是在生成临时表使用的条件,它不管 on 中的条件是否为真都会返回左边表中的记录...HAVING 语句 描述:HAVING 子句可以让我们筛选分组后的各组数据; SQL 中增加 HAVING 子句原因是 WHERE 关键字无法与聚合函数一起使用

4.6K20

Oracle SQL性能优化

由此可见,要想过滤条件起到正确的作用,首先要明白这个条件应该在什么时候 起作用,然后再决定放在那里 (12) 减少对表的查询: 含有子查询的SQL语句中,要特别注意减少对表的查询.例子:     ...能够掌握上面的运用函数解决问题的方法实际工作中是非常有意义的 (14) 使用表的别名(Alias): 当在SQL语句中连接多个表, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由...这也是一条简单而重要的规则,当仅引用索引的第二个列,优化器使用了全表扫描而忽略了索引 (28) 用UNION-ALL 替换UNION ( 如果有可能的话): 当SQL语句需要UNION两个查询结果集合时...需要注意的是,UNION ALL 将重复输出两个结果集合中相同记录. 因此各位还是要从业务需求分析使用UNION ALL的可行性....注意当字符和数值比较, ORACLE会优先转换数值类型到字符类型 (31) 需要当心的WHERE子句: 某些SELECT 语句中的WHERE子句使用索引. 这里有一些例子.

2.8K70

SQL语句逻辑执行过程和相关语法详解

group by中不能使用select_list中的别名列。...1.4 关于表别名和列别名 SQL语句中,我们避免不了要对表、列使用别名进行引用。关于别名需要注意两点: (1).定义了表别名后,语句中对该表的引用都必须使用别名,而不能使用原表名。...(2).引用别名,注意查询的逻辑处理过程。某一阶段只能引用该阶段前面阶段定义的别名使用该阶段后才定义的别名将报错。...SQL中没有使用ORDER BY,有不少子句的返回结果(虚拟表)都是随机的,因为实在没办法去保证顺序,但却又要求返回数据。...而且我自己的体会中,深入学习SQL的过程中,经常会感受到SQL和关系、集合之间的联系,这种感受可能不会立刻被自己发现,但回首一想,还真是那么回事。

3.4K20

SQL 性能调优

由此可见,要想过滤条件起到正确的作用,首先要明白这个条件应该在什么时候起作用,然后再决定放在那里 回到顶部 (12) 减少对表的查询 含有子查询的SQL语句中,要特别注意减少对表的查询.例子:    ...能够掌握上面的运用函数解决问题的方法实际工作中是非常有意义的 回到顶部 (14) 使用表的别名(Alias) 当在SQL语句中连接多个表, 请使用表的别名并把别名前缀于每个Column上.这样一来,...这也是一条简单而重要的规则,当仅引用索引的第二个列,优化器使用了全表扫描而忽略了索引 回到顶部 (28) 用UNION-ALL 替换UNION ( 如果有可能的话) 当SQL 语句需要UNION两个查询结果集合时...需要注意的是,UNION ALL 将重复输出两个结果集合中相同记录. 因此各位还是要从业务需求分析使用UNION ALL的可行性....注意当字符和数值比较, ORACLE会优先转换数值类型到字符类型 回到顶部 (31) 需要当心的WHERE子句 某些SELECT 语句中的WHERE子句使用索引. 这里有一些例子.

3.2K10

sql优化的几种方法面试题_mysql存储过程面试题

什么时候【要】创建索引 (1)表经常进行 SELECT 操作 (2)表很大(记录超多),记录内容分布范围很广 (3)列名经常在 WHERE 子句或连接条件中出现 什么时候【不要】创建索引 (1)表经常进行...⑥使用表或列的别名 如果表或列的名称太长了,使用一些简短的别名也能稍微提高一些SQL的性能。毕竟要扫描的字符长度就变少了。。。...⑨SQL写大写 我们在编写SQL 的时候,官方推荐的是使用大写来写关键字,因为Oracle服务器总是先将小写字母转成大写后,才执行 ⑩避免索引列上使用NOT 因为Oracle服务器遇到NOT后,...如果索引是建立多个列上,只有它的第一个列被WHERE子句引用时,优化器才会选择使用该索引。...当只引用索引的第二个列,不引用索引的第一个列,优化器使用了全表扫描而忽略了索引 create index emp_sal_job_idex on emp(sal,job); ———————————-

75120

算法工程师的修养 | 图解SQL

它出现再 FROM 子句中,意味着它的结果也是一个表,只不过是 1 行 1 列的特殊表。 SELECT 子句用于指定需要查询的字段,可以包含表达式、函数值等。...SELECT 关系操作中被称为投影(Projection),看下面的示意图应该就比较好理解了。 除了 SELECT 之外,还有一些常用的 SQL 子句。...需要注意的是,集合理论中的集合不允许存在重复的数据,但是 SQL 允许。...因此,SQL 中的集合也被称为多重集合(multiset);多重集合集合理论中的集合都是无序的,但是 SQL 可以通过 ORDER BY 子句对查询结果进行排序。...06 JOIN SQL 中,不仅实体对象存储关系表中,对象之间的联系也存储关系表中。因此,当我们想要获取这些相关的数据需要使用到另一个操作:连接查询(JOIN)。

67220

图解 SQL,这也太形象了吧!

它出现再 FROM 子句中,意味着它的结果也是一个表,只不过是 1 行 1 列的特殊表。 SELECT 子句用于指定需要查询的字段,可以包含表达式、函数值等。...SELECT 关系操作中被称为投影(Projection),看下面的示意图应该就比较好理解了。 ? 除了 SELECT 之外,还有一些常用的 SQL 子句。...需要注意的是,集合理论中的集合不允许存在重复的数据,但是 SQL 允许。...因此,SQL 中的集合也被称为多重集合(multiset);多重集合集合理论中的集合都是无序的,但是 SQL 可以通过 ORDER BY 子句对查询结果进行排序。...JOIN SQL 中,不仅实体对象存储关系表中,对象之间的联系也存储关系表中。因此,当我们想要获取这些相关的数据需要使用到另一个操作:连接查询(JOIN)。

58010
领券