首先说明下oracle中没有String类型,而是Varchar类型。order by 的顺序是assic(读作:阿斯科马)码表中”字符“列进行排序的。
解释:一般会根据字符串的首字母:大些字母>小写字母>特殊字符>数字。如果首位相同继续排列第二位,直到不同的位。
本文介绍MySQL数据库中执行select查询语句,并对查询的结果使用order
by
子句进行排序。
再来回顾一下SQL语句中的select语句的语法:
Select
语句的基本语法:
Select
<列的集合>
from
<表名>
where
<条件>
order
by
<排序字段和方式>
如果要对查询结果按某个字段排序,则要使用order
by
子句,如下:
select
from
<表名>
order
by
<字段名称>
<排序方式>
下面来看两个例子,第一个查询test表中所有数据,并按t_id正序排列;第二个查询与第一个相反,是逆序排列。
mysql>
select
t_id,t_name
from
test
order
by
t_id;
+------+--------+
|
t_id
|
t_name
|
+------+--------+
|
1
|
name1
|
|
2
|
name2
|
+------+--------+
2
rows
in
set
(000
sec)
mysql>
select
t_id,t_name
from
test
order
by
t_id
desc;
+------+--------+
|
t_id
|
t_name
|
+------+--------+
|
2
|
name2
|
|
1
|
name1
|
+------+--------+
2
rows
in
set
(000
sec)
注意:正序排序时,可以使用asc作为排序方式的关键词,也可以不使用。逆序时,一定要使用desc作为关键词。
关于MySQL中select语句使用order按行排序,本文就介绍这么多,希望对大家有所帮助,谢谢!
插入的时候不存在新增的行在末尾这一说法,不过mysql的myisam引擎貌似可以控制在行尾插入,oracle不带这种功能。。
数据库是以文件形式存储在文件系统中,不存在像堆积木一样,一行行堆上去。。 只能说查询出来的内容可以排序。。
数据表根据字段不同排序方式也不同啊。带索引的字段本身就是有序的,是通过一个具有线索的B+树存放的。其中相关索引(聚合索引)排序最快,因为每个元组的数据都是和它关联的。非索引字段排序是很慢的,要用到堆排序和,锦标赛算法和归并等等,不会用快速排序,因为快排不稳定,而且不能动态规划,必须一次排完,堆排可以只找最大(或最小)的n条记录。
排序的命令是sort,格式是:
SORT TO 新表名 ON 字段名
补充:
例如下面的命令:
use 学生
sort on 学号 to 学生_排序
产生一个新的 学生_排序DBF 文件,里面是排序了的。
如果你只是向按照某个标准进行排序查看一下,不生成新的文件,那么可以使用SQL语句,例如:
SELECT FROM 学生 ORDER BY 总成绩 DESC
假定MySQL服务器和PHP服务器都已经按照最适合的方式来配置,那么系统的可伸缩性(Scalability)和用户感知性能(User-perceived
Performance)是我们追求的主要目标。在实际运行中,MYSQL
中数据往往以
HASH
tables、BTREE
等方式存贮于内存, *** 作速度很快;同时INDEX
已经进行了一些预排序;很多应用中,MySQL
排序是首选。
PHP与MySQL相比具有如下优势:
1、考虑整个网站的可伸缩性和整体性能,在应用层(PHP)中排序明显会降低数据库的负载,从而提升整个网站的扩展能力。而数据库的排序,实际上成本是非常高的,消耗内存、CPU,如果并发的排序很多,DB
很容易到瓶颈。
2、如果在应用层(PHP)和MYSQL之间还存在数据中间层,合理利用,PHP会有更好的收益。
3、PHP在内存中的数据结构专门针对具体应用来设计,比数据库更为简洁、高效;
4、PHP不用考虑数据灾难恢复问题,可以减少这部分的 *** 作损耗;
5、PHP不存在表的锁定问题;
6、MySQL中排序,请求和结果返回还需要通过网络连接来进行,而PHP中排序之后就可以直接返回了,减少了网络IO。
至于执行速度,差异应该不会很大,除非应用设计有问题,造成大量不必要的网络IO。另外,应用层要注意PHP
的
Cache
设置,如果超出会报告内部错误;此时要根据应用做好评估,或者调整Cache。具体选择,将取决于具体的应用。
列出一些PHP中执行排序更优的情况:
1、数据源不在MySQL
中,存在硬盘、内存或者来自网络的请求等;
2、数据存在
MySQL
中,量不大,而且没有相应的索引,此时把数据取出来用PHP排序更快;
3、数据源来自于多个MySQL
服务器,此时从多个
MySQL
中取出数据,然后在PHP中排序更快;
4、除了MySQL
之外,存在其他数据源,比如硬盘、内存或者来自网络的请求等,此时不适合把这些数据存入MySQL
后再排序;
列出一些必须在MySQL中排序的实例:
1、MySQL中已经存在这个排序的索引;
2、MySQL中数据量较大,而结果集需要其中很小的一个子集;比如
1000000
行数据,取TOP
10;
3、对于一次排序、多次调用的情况,比如统计聚合的情形,可以提供给不同的服务使用,那么在MySQL
中排序是首选的。另外,对于数据深度挖掘,通常做法是在应用层做完排序等复杂 *** 作,把结果存入MySQL即可,便于多次使用。
4、不论数据源来自哪里,当数据量大到一定的规模后,由于占用内存/Cache
的关系,不再适合PHP中排序了;此时把数据复制、导入或者存在MySQL
,并用INDEX
优化,是优于PHP
的。不过,用
Java,甚至
C++
来处理这类 *** 作会更好。
有些类似大数据集聚合或者汇总的数据,在客户端排序得不偿失。当然,也有用类似搜索引擎的思路来解决类似应用的情况。
从网站整体考虑,就必须加入人力和成本的考虑。假如网站规模和负载较小,而人力有限(人数和能力都可能有限),此时在应用层(PHP)做排序要做不少开发和调试工作,耗费时间,得不偿失;不如在DB
中处理,简单快速。对于大规模的网站,电力、服务器的费用很高,在系统架构上精打细算,可以节约大量的费用,是公司持续发展之必要;此时如果能在应用层(PHP)
进行排序并满足业务需求,尽量在应用层进行。
关于PHP中执行排序与MySQL中执行排序的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!
1、以日期进行排序
select
Rownum
"ID"
,
日期
,
金额,
商品
From
(select
日期,金额,商品
from
表
order
by
日期)
2、在排序后要求数据库中内容发生变化,如果不是考试的话是没人故意这么玩的。
任何对于数据的ID字段进行手工变动都是愚蠢而白痴的行为。
让然如果是老师故意考你们的话,可以用下面这个简单方法。
①建立临时表,使id字段为自增字段
create
table
tableName
(
id
INT(20)
not
null
AUTO_INCREMENT,
--自增属性
日期
char(20)
not
null,
金额
char(5)
not
null,
商品
char(2)
not
null
);
②将排好的数据插入新建的临时表
Insert
into
tableName(日期,金额,商品)
select
日期,金额,商品
from
原始表
order
by
日期
③将原表改成其他名,并将第二步建的中间表改名为原表名
alter
table
表1
rename
to
表2
我手头没有mysql只能按印象写出代码,你拿去试一下吧。
我印象中mysql对pl的支持不好,所以只给出了用sql语句的方案,你参考下吧。
以上就是关于sql数据库和oracle数据库 string类型字段用orderby排序 分别是根据什么排序的啊全部的内容,包括:sql数据库和oracle数据库 string类型字段用orderby排序 分别是根据什么排序的啊、MySQL中select语句使用order按行排序、SQL数据库怎么排序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)