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

SQL排序两个表,它会永久地改变排序规则吗?

SQL排序两个表不会永久地改变排序规则。排序操作只会在查询时临时改变结果集的排序顺序,不会对表的数据进行实际的物理排序或修改。排序规则的改变只会影响到当前查询的结果集,不会对表的数据进行永久性的修改。

在SQL中,可以使用ORDER BY子句对查询结果进行排序。ORDER BY子句可以指定一个或多个列作为排序的依据,并可以指定升序(ASC)或降序(DESC)排序。排序规则可以根据列的数据类型进行默认排序,也可以通过指定排序规则(如大小写敏感或不敏感)来自定义排序。

例如,对于以下两个表A和B:

表A: | ID | Name | |----|-------| | 1 | Alice | | 2 | Bob | | 3 | Carol |

表B: | ID | Name | |----|--------| | 1 | David | | 2 | Eve | | 3 | Frank |

如果执行以下查询语句:

SELECT * FROM A ORDER BY Name ASC;

将会返回按照Name列升序排序的表A的结果集:

| ID | Name | |----|-------| | 1 | Alice | | 2 | Bob | | 3 | Carol |

但是这个排序操作不会对表A的数据进行永久性的修改,表A的原始数据顺序不会改变。

同样地,如果执行以下查询语句:

SELECT * FROM B ORDER BY ID DESC;

将会返回按照ID列降序排序的表B的结果集:

| ID | Name | |----|--------| | 3 | Frank | | 2 | Eve | | 1 | David |

但是这个排序操作也不会对表B的数据进行永久性的修改,表B的原始数据顺序不会改变。

总结起来,SQL排序操作只会在查询时临时改变结果集的排序顺序,不会对表的数据进行永久性的修改。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

数据库查询优化

例如,两个:学生(学号、姓名、年龄……)和选课表(学号、课程号、成绩)。如果两个要做连接,就要在“学号”这个连接字段上建立索引。 还可以使用并集来避免顺序存取。...为了避免不必要的排序,就要正确增建索引,合理合并数据库(尽管有时可能影响的规范化,但相对于效率的提高是值得的)。如果排序不可避免,那么应当试图简化它,如缩小排序的列的范围等。...在永久和临时的数据行相同的条件下,使用临时没有永久快。但有时还必须得使用临时,如先从存储大量数据的永久中提取符全条件的存放到临时,然后在临时上执行操作。...同样既使用约束又使用默认值或既使用约束又使用规则也会执行多余的工作。 15 在SQL中捕捉异常: 这一条准则应该不能算是优化方面的,只是编写要求。...下面列出一些索引的概念,有助于设计结构和编写SQL语句: 按照存储规则来分: * 聚集索引:该索引中键值的逻辑顺序决定了中相应行的物理顺序。

4.3K20

这是我见过最有用的Mysql面试题,面试了无数公司总结的(内附答案)

一个只能有一个聚集索引 它改变了记录在数据库中的存储方式,因为它通过设置为聚集索引的列对行进行排序。 非聚集索引: 与聚集索引相比,它更慢。...一个可以具有多个非聚集索引。 它不会改变排序方式,但是会在一个内创建一个单独的对象,该对象在搜索后指向原始行。 20.什么是SQL视图? 视图就像逻辑上存储在数据库中的的子集。...一个FOREIGN KEY是用于两个连接在一起的关键。 一个FOREIGN KEY 的与链接的PRIMARY KEY 另一个。 43.一个可以包含多个FOREIGN KEY?...归类定义为一组规则,这些规则确定如何对字符数据进行排序和比较。 使用定义正确字符序列的规则以及用于指定区分大小写,字符宽度,重音符号, 假名字符类型的选项对字符数据进行排序。...排序规则敏感性的不同类型如下 :区分大小写:A和a以及B和b。 假名敏感性:日语假名字符。 宽度灵敏度:单字节字符和双字节字符。 口音敏感度。

27.1K20
  • 【数据库设计和SQL基础语法】--SQL语言概述--SQL的基本结构和语法规则(一)

    SQL支持两种主要类型的注释:单行注释和多行注释。 单行注释: 在单行注释中,可以在语句的任何位置添加注释。在SQL中,单行注释使用两个连续的减号(–)标识。...COLLATE collation_name; 其中,character_set_name是要使用的字符集,而collation_name是要使用的排序规则。...3.4 删除SQL中,要删除,可以使用DROP TABLE语句。DROP TABLE语句会永久性地删除整个,包括中的所有数据和结构。...Tip: 删除是一个危险的操作,因为它会永久删除中的所有数据,且无法撤销。在执行此操作之前,请确保你真的希望删除该。...在实际应用中,请替换为你要删除的的实际名称。 3.5 约束的使用 在SQL中,约束(Constraints)用于规定中的数据规则,以保证数据的完整性和一致性。

    79910

    定义和构建索引(一)

    请注意,这些全局变量指定的是持久性类名(区分大小写),而不是SQL名。如果USEEXTENTSET=0并指定了DEFAULTGLOBAL,则指定的全局名称将替换永久类名。...可选的排序规则表达式。 它包含一个排序规则名称,后面可选跟着一个或多个以逗号分隔的排序规则参数列表。 不能为惟一索引、IdKey索引或PrimaryKey索引指定索引排序规则。...这个限制是InterSystems SQL内部机制所要求的。 在IdKey属性中使用||会导致不可预知的行为。多个属性的索引可以在两个或多个属性(字段)的组合上定义索引。...以下规则控制索引和属性之间的排序规则匹配:匹配的排序规则类型总是最大限度使用索引。...要在索引定义中显式为属性指定排序规则,语法如下:Index IndexName On PropertyName As CollationName; IndexName是索引的名称 PropertyName

    61310

    MySQL性能优化的最佳20+条经验

    7883 行,而后一个只是搜索了两个的 9 和 16 行。...无缓冲的查询 正常的情况下,当你在当你在你的脚本中执行一个SQL语句的时候,你的程序会停在那里直到没这个SQL语句返回,然后你的程序再往下继续执行。你可以使用无缓冲查询来改变这个行为。...示例二: 你有一个叫 “last_login” 的字段,它会在每次用户登录时被更新。但是,每次更新时会导致该的查询缓存被清空。...小心“永久链接” “永久链接”的目的是用来减少重新创建MySQL链接的次数。当一个链接被创建了,它会永远处在连接的状态,就算是数据库操作已经结束了。...这就是为什么这种“永久链接”的机制工作不好的原因。在你决定要使用“永久链接”之前,你需要好好考虑一下你的整个系统的架构.

    61810

    PawSQL周更新 | 新增6个SQL审查重写规则

    概述 本文介绍PawSQL上一周新增的四个SQL审查规则 避免使用STRAIGHT_JOIN 避免使用Natural Join 避免使用CROSS JOIN 避免COUNT DISTINCT多个可空列...以及两个重写优化规则, NPE问题重写 显式禁止结果排序 这六个新的规则在PawSQL Cloud已可以正常使用。...避免使用STRAIGHT_JOIN Straight Join是MySQL中的一种连接方式,它会强制以的定义顺序来进行连接,在结果上它等价于内连接。...避免使用CROSS JOIN CROSS JOIN会将第一张的每一行与第二张的每一行进行笛卡尔乘积。它会生成1行数x2行数的记录。理论上它等价于条件为1=1的内连接。...显式禁止结果排序 在MySQL的早期版本中,即使没有order by子句,group by默认也会按分组字段排序,这就可能导致不必要的文件排序,影响SQL的查询性能。

    8210

    【建议收藏】MySQL 三万字精华总结 —锁机制和性能调优(四)

    数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。...❝MySQL 遇到过死锁问题,你是如何解决的?...改变事务隔离级别 如果出现死锁,可以用 show engine innodb status;命令来确定最后一个死锁产生的原因。...永久配置 修改配置文件my.cnf或my.ini,在[mysqld]一行下面加入两个配置参数 [mysqld] slow_query_log = ON slow_query_log_file = /var...例如,整数比字符操作代价更低,因为字符集和校对规则排序规则)使字符比较比整型比较复杂。 尽量避免NULL:通常情况下最好指定列为NOT NULL

    93010

    你真的会玩SQL?表表达式,排名函数

    你真的会玩SQL?系列目录 你真的会玩SQL?之逻辑查询处理阶段 你真的会玩SQL?和平大使 内连接、外连接 你真的会玩SQL?三范式、数据完整性 你真的会玩SQL?...查询指定节点及其所有父节点的方法 你真的会玩SQL?让人晕头转向的三值逻辑 你真的会玩SQL?EXISTS和IN之间的区别 你真的会玩SQL?无处不在的子查询 你真的会玩SQL?...Case也疯狂 你真的会玩SQL?表表达式,排名函数 你真的会玩SQL?简单的 数据修改 你真的会玩SQL?你所不知道的 数据聚合 你真的会玩SQL?透视转换的艺术 你真的会玩SQL?...冷落的Top和Apply 你真的会玩SQL?实用函数方法汇总 你真的会玩SQL?玩爆你的数据报表之存储过程编写(上) 你真的会玩SQL?...使用形式:from 派生 as 派生表列名 规则: 所有列必须有名称 列名必须唯一 不允许使用order by(除非指定了top) 不同于标量和多值子查询,派生不能是相关的,它必须是独立的。

    1.9K90

    《深入浅出SQL》问答录

    SQL能控制多位用户同时访问的行为,能够授予或撤销对整个数据库的访问权,这有时比控制每张的权限要简单的多。 我发现CREATE DATABASE 命令的字母全是大写,一定要这样?...NULL是什么都没有的意思? A:当然不是!! 它从来就不等于0。而且它也不等于另一个NULL,事实上,两个NULL根本不能放在一起比较。...A:因为中的记录排序方式没有一定的规则,而且我们很快又要调整查询结果的记录,所以实在无法保证的最后一条记录是最后插入的记录。除非我们记住哪份数据先进来。...ORDER BY排序 1、升序排序:ASC | 降序排序:DESC 2、SQL排序规则 ? 多列排序: 越靠前的列权重越高,拥有对后面列的一票否决权。...START TRANSACTION; --持续追踪后续所有SQL语句 COMMIT; --提交所有程序代码造成的改变 ROLLBACK; --回滚,回到事务开始前 可以查看以创建的视图?

    2.9K50

    【建议收藏】MySQL 三万字精华总结 —锁机制和性能调优(四)「建议收藏」

    锁的分类 从对数据操作的类型分类: 读锁(共享锁):针对同一份数据,多个读操作可以同时进行,不会互相影响 写锁(排他锁):当前写操作没有完成前,它会阻断其他写锁和读锁 从对数据操作的粒度分类...❝ MySQL 遇到过死锁问题,你是如何解决的?...改变事务隔离级别 如果出现死锁,可以用 show engine innodb status;命令来确定最后一个死锁产生的原因。...永久配置 修改配置文件my.cnf或my.ini,在[mysqld]一行下面加入两个配置参数 [mysqld] slow_query_log = ON slow_query_log_file =...例如,整数比字符操作代价更低,因为字符集和校对规则排序规则)使字符比较比整型比较复杂。

    83730

    MYSQL性能优化

    EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据是如何被搜索和排序的……等等,等等。...无缓冲的查询 正常的情况下,当你在当你在你的脚本中执行一个SQL语句的时候,你的程序会停在那里直到没这个SQL语句返回,然后你的程序再往下继续执行。你可以使用无缓冲查询来改变这个行为。 14....示例二: 你有一个叫 “last_login” 的字段,它会在每次用户登录时被更新。但是,每次更新时会导致该的查询缓存被清空。...ORM 还可以把你的SQL语句打包成一个事务,这会比单独执行他们快得多得多。 21. 小心“永久链接” “永久链接”的目的是用来减少重新创建MySQL链接的次数。...这就是为什么这种“永久链接”的机制工作不好的原因。在你决定要使用“永久链接”之前,你需要好好考虑一下你的整个系统的架构

    1.8K31

    二十种实战调优MySQL性能优化的经验

    EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据是如何被搜索和排序的……等等,等等。...在Join的时候使用相当类型的例,并将其索引 如果你的应用程序有很多 JOIN 查询,你应该确认两个中Join的字段是被建过索引的。这样,MySQL内部会启动为你优化Join的SQL语句的机制。...无缓冲的查询 正常的情况下,当你在当你在你的脚本中执行一个SQL语句的时候,你的程序会停在那里直到没这个SQL语句返回,然后你的程序再往下继续执行。你可以使用无缓冲查询来改变这个行为。...小心“永久链接” “永久链接”的目的是用来减少重新创建MySQL链接的次数。当一个链接被创建了,它会永远处在连接的状态,就算是数据库操作已经结束了。...这就是为什么这种“永久链接”的机制工作不好的原因。在你决定要使用“永久链接”之前,你需要好好考虑一下你的整个系统的架构。 版权申明:内容来源网络,版权归原创者所有。

    1.1K20

    Calcite技术研究

    改变特质的值不会改变已经计算过的逻辑表达式的值,举例:某个运算符已经产生的行数不会被改变。 在优化过程中,Calcite试图在关系表达式上强制执行某些traits,比如某些列的排序。...这个特质使得calcite能够满足查询运行在多个引擎上时,优化可以透明进行。 ? 例如上图所示,mysql中有products,Splunk中有orders。...一个规则匹配树的一个模式并在不改变语义的前提下执行转换。Calcite包含几百个优化规则。当然也可以添加自己的规则到calcite中。 例如,Calcite提供了Cassandra适配器。...下推sort到cassandra的规则必须符合两个条件: 1) 对表的查询过滤后只会到一个分区中(因为行在一个分区中是有序的) 2) Cassandra的分区排序和要求的排序有相同的前缀 若要符合这两个条件...它会一直触发规则直到它产生的表达式不再被任何规则改变。这个规划器在不考虑表达式成本的场景下是有用的,它可以快速执行规则。 用户可以根据自己的需求选择规划器引擎,也可以从一种引擎切换到另一种。

    2.3K40

    其实 MySQL 中的 like 关键字也能用索引!

    上篇文章中,松哥和大家分享了索引的两个使用规则: 索引上不要使用函数运算。 使用覆盖索引避免回。 当然,凡事有个度,用哪一种策略也要结合具体的项目来定,不能为了 SQL 优化而抛弃了业务。...今天,松哥在前文的基础上,再来和大家分享一条索引规则,一起来学习下。 我们常说,MySQL 中的 like 要慎用,因为会全扫描,这是一件可怕的事!...我们来看如下一条 SQL: select username,age from user2 where username='javaboy'; 由于我的中没有为 username 字段建立的索引,那么它会不会使用已有的复合索引呢...user2 where age>99; 我举了两个查询的例子,大家一起来看下这两条 SQL 的执行计划,其实没啥差异: 这个查询计划我们该如何解释呢?...回顾第一小节的最后 like '%j' 和 like '%j%' 的执行计划,不就是上面这个

    3.1K20

    MySQL 性能优化的最佳 20+ 条经验

    EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据是如何被搜索和排序的……等等,等等。...在Join的时候使用相当类型的例,并将其索引 如果你的应用程序有很多 JOIN 查询,你应该确认两个中Join的字段是被建过索引的。这样,MySQL内部会启动为你优化Join的SQL语句的机制。...无缓冲的查询 正常的情况下,当你在当你在你的脚本中执行一个SQL语句的时候,你的程序会停在那里直到没这个SQL语句返回,然后你的程序再往下继续执行。你可以使用无缓冲查询来改变这个行为。...小心“永久链接” “永久链接”的目的是用来减少重新创建MySQL链接的次数。当一个链接被创建了,它会永远处在连接的状态,就算是数据库操作已经结束了。...这就是为什么这种“永久链接”的机制工作不好的原因。在你决定要使用“永久链接”之前,你需要好好考虑一下你的整个系统的架构。

    39930

    mysql性能优化的几条重要建议

    EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据是如何被搜索和排序的……等等,等等。...在Join的时候使用相当类型的例,并将其索引 如果你的应用程序有很多 JOIN 查询,你应该确认两个中Join的字段是被建过索引的。这样,MySQL内部会启动为你优化Join的SQL语句的机制。...无缓冲的查询 正常的情况下,当你在当你在你的脚本中执行一个SQL语句的时候,你的程序会停在那里直到没这个SQL语句返回,然后你的程序再往下继续执行。你可以使用无缓冲查询来改变这个行为。...小心“永久链接” “永久链接”的目的是用来减少重新创建MySQL链接的次数。当一个链接被创建了,它会永远处在连接的状态,就算是数据库操作已经结束了。...这就是为什么这种“永久链接”的机制工作不好的原因。在你决定要使用“永久链接”之前,你需要好好考虑一下你的整个系统的架构。

    99360

    神奇的 SQL ,高级处理之 Window Functions → 打破我们的局限!

    开心一刻   今天儿子跟老婆聊天   儿子:妈妈,我为什么没有两个爸爸呀   老婆:每个人都只有一个爸爸呀,你看谁有两个爸爸了   儿子一脸真诚的看着老婆:那你为什么就有两个爸爸呢   老婆一脸疑惑的望向儿子...儿子有点不服气,温柔地说道:你管爷爷叫爸爸,你管姥爷还叫爸爸,这不就是两个爸爸   老婆轻声解释道:虽然我管他们两个都叫爸爸,但是姥爷才是我的爸爸,爷爷是爸爸的爸爸,是我公公,明白了吗   儿子两眼朝天上看了下...,告诉 窗口函数 以怎样的规则去实现功能 PARTITION BY 类似 GROUP BY ,指定分组规则 ORDER BY 就跟我们平时使用的 ORDER BY 一样,指定排序规则   看完这个语法介绍...sale_unit_price DESC) AS ranking FROM tbl_ware; PARTITION BY 对表的横向进行分组,类似 GROUP BY ,但不具备聚合功能 ORDER BY 则决定了纵向排序规则...因为 窗口函数 是对 WHERE 子句或者 GROUP BY 子句处理后的“结果”进行的逐行操作   我们换个角度来看, 窗口函数 是不会改变结果行数的,而 WHERE 是会改变结果行数的,那把 窗口函数

    19610

    SQL优化:一篇文章说清楚Oracle Hint的正确使用姿势

    一个很常见的错误时,在使用提示的时候最易犯的错误是与的别名有关。正确的规则是,当在提示中使用时,只要有别名就应该使用别名而不是名。...这个提示强制oracle优先使用预定义的一组规则,而不是对数据进行统计;同时该提示还会使这个语句避免使用其他提示,除了DRIVING_SITE和ORDERED(不管是否进行基于规则的优化,这两个提示都可使用...也就是说,尽可能使用其他查询条件最大程度缩减查询范围之后,再执行子查询。 4、和连接顺序相关的 这些提示可以调整连接的顺序。...由于ORDERED只能调整连接的顺序并不能改变连接的方式,所以为了改变的连接方式,经常将USE_NL、USE_MERGE提示与ORDERED提示放在一起使用。...假设将两个连接在一起,从每个返回的行集将被排序,然后再被合并(也就是合并排序),从而组成最终的结果集。由于每个行先被排序之后才进行合并,所以在给定查询中检索所有行时,速度将会最快。

    7.1K340
    领券