一直以为如果查询不加order by 就会默认按照自增id顺序排列呢  

偶然发现不加order by id的顺序竟然不是顺序的.

经过了解发现原来跟索引的创建方式也有关系,创建索引时,以下选项会影响结果的排序:


collate在sql中是用来定义排序规则的。排序规则其实就是当比较两个字符串时,根据某种规则来确定哪个比较大,是否相等。各个数据库支持不同的排序规则。 sqlite有三种build in的排序规则:

BINARY二进制比较,直接使用memcmp()比较
NOCASE 将26个大写字母转换为小写字母后进行与BINARY一样的比较
RTRIM 和BINARY一样,忽略结尾的空格


相关推荐

SqLiTE查询不区分大小写 区分大小写

在使用 like的时候,好像默认是不区分大小写的但是查询条件为 = XX 的时候,默认是区分大小写的如果不希望它区分大小写,那么在查询的条件后面加上一个 COLLATE NOCASE 即可解决如下:方

mySqL查询字段忽略大小写

//问题:mysql的字符集改成严格区分大小写后,模糊搜索的时候不能忽略大小写。//解决方案:把数据库字段转为小写,like后的参数也都转为小写 SELECT *FROM 表名 LOWER(字段

SqLiTE创建索引语句 添加索引 增加索引

mysql创建索引alter table 表名 add index 索引名 (列名);sqlite创建索引:CREATE INDEX 索引名 ON 表名 (字段a,字段b);

mySqLSqLiTE 在某字段后面追加字符串

mysql在某个字段的最后面 追加一个字符串:$sql="update 表名 set 某字段=CONCAT(某字段,'要追加的字符串') where id =123"

mySqL SqLiTE取表内最大id语句 取最新插入id 取表行数

取最大ID方法一:select MAX(id) from 表名 方法二:select * from sqlite_sequence where name='表名' 以上两种方法 500

SqLiTE可视化编辑工具 SqLiTESTudio下载

链接:https://pan.baidu.com/s/1NXwtMTDh4y-86RvYZXuzkw 提取码:fipx

20亿行测试 SqLiTE最多可以容纳多少行数据 以及插入速度 每个文件最?

据说 数据库文件最大支持 281 T每个数据库由一个或多个数据页组成,一个数据库内的所有数据页大小都相同,但是不同的数据库可以使用不同的数据页大小,范围从 512 到 65536 字节。从 sqlit

SqLiTE取随机数、随机排序方法

如果是随机排序,可以使用下列语法: ORDER BY random()但是这个语法效率极低,能不用则不用不如直接添加一个新的随机数字段。然后update 表名 set 随机数=random()然后按照

SqLiTE常用语句

增删改查:增加insert into 表名(字段1,字段3,字段3)values(值1,值2,值3)删除delete from 表名 where id=888修改update 表名 set 字段1=值

mySqL SqLiTE 删除旧数据 只保留最新的100条

完整语句:delete from _sql执行记录 where id in (select id from _sql执行记录 order by id desc limit 100,100000)del