MySQL是一款非常流行的关系型数据库管理系统,它可以帮助我们存储、管理和检索数据。在使用MySQL时,我们可能需要创建新数据库。在创建新数据库时,我们还需要为其指定一种排序规则。那么,本文将深入浅出地介绍MySQL中的排序规则,帮助大家更好地理解如何新建数据库。
一、什么是排序规则
排序规则(Collation)是数据库中一个非常重要的概念。它决定了数据如何进行排序和比较。在MySQL中,每种排序规则都有一个唯一的标识符,称之为Collation ID。排序规则是根据Unicode字符集或者ASCII字符集来进行排序的。
在MySQL中,排序规则的选择是非常重要的。如果我们选择了不合适的排序规则,就有可能导致在比较和排序时出现错误的结果。因此,在选择排序规则时,我们需要根据具体的业务需求进行选择。
二、MySQL中的排序规则
MySQL中有很多种排序规则。其中,大部分排序规则是基于Unicode字符集进行排序的,但也有一部分排序规则是基于ASCII字符集进行排序的。
在MySQL中,每个排序规则都有唯一的标识符。这些标识符是通过将字符集名和排序规则名合并而成的。例如,对于排序规则utf8_general_ci来说,utf8表示字符集名称,general_ci表示排序规则名称。
1. Unicode字符集
Unicode字符集是目前最为普遍的字符集。MySQL中有很多种基于Unicode字符集的排序规则。下面,我们将介绍更受欢迎的一些排序规则。
(1)utf8_general_ci
这是MySQL中最常用的排序规则之一。它是不区分大小写的,即不管是大写字母还是小写字母,都会被视为相同的。在做比较时,它也会忽略一些其他的字符,例如空格和标点符号。因此,如果你的应用程序需要忽略大小写并且忽略其他字符,那么utf8_general_ci是一个不错的选择。
(2)utf8_unicode_ci
与utf8_general_ci类似,utf8_unicode_ci也是不区分大小写的。但是,它比utf8_general_ci更加精确。在做比较时,它会将字符按照Unicode规范进行排序,这样就可以确保各种字符都能够被正确地排序。如果你的应用程序需要处理多种语言和多种字符集,那么utf8_unicode_ci是一个不错的选择。
(3)utf8_bin
utf8_bin是一种区分大小写的排序规则。在做比较时,它会严格按照字符的二进制编码进行排序。如果你的应用程序需要处理二进制数据,并且需要精确地比较大小写,那么utf8_bin是一个不错的选择。
2. ASCII字符集
除了基于Unicode字符集的排序规则外,MySQL中还有一些基于ASCII字符集的排序规则。下面,我们将介绍几种常用的基于ASCII字符集的排序规则。
(1)latin1_swedish_ci
latin1_swedish_ci是MySQL中最常用的基于ASCII字符集的排序规则之一。它是不区分大小写的,并且会忽略一些其他的字符,例如空格和标点符号。在做比较时,它会按照字典序进行排序。如果你的应用程序只需要处理英语字符,并且需要忽略大小写和其他字符,那么latin1_swedish_ci是一个不错的选择。
(2)latin1_bin
latin1_bin是一种区分大小写的排序规则。在做比较时,它会严格按照字符的二进制编码进行排序。如果你的应用程序需要处理二进制数据,并且需要精确地比较大小写,那么latin1_bin是一个不错的选择。
三、如何选择排序规则
在MySQL中选择排序规则时,我们需要根据具体的业务需求进行选择。下面,我们提供一些选择排序规则的建议:
1. 如果你的应用程序需要处理多种语言和多种字符集,那么你可以选择utf8_unicode_ci或者utf8_general_ci。
2. 如果你的应用程序只需要处理英语字符,并且需要忽略大小写和其他字符,那么你可以选择latin1_swedish_ci。
3. 如果你的应用程序需要处理二进制数据,并且需要精确地比较大小写,那么你可以选择latin1_bin或者utf8_bin。
在选择排序规则时,我们需要根据具体的业务需求和数据类型进行选择。只有选择了正确的排序规则,才能保证数据在比较和排序时得到正确的结果。
四、结语
通过本文的介绍,我们对MySQL中的排序规则有了更加深入的了解。虽然MySQL中有很多种排序规则,但是只要我们根据具体的业务需求进行选择,就一定能够得到正确的结果。希望本文能够对大家在使用MySQL时有所帮助。
相关问题拓展阅读:
mysql的服务器连接排序规则怎么选择
这个还真不好选择啊,自己看着办吧啊
select * from>mySQL分组排序
有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。
1. check table 和 repair table
登陆mysql 终端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:
repair table tabTest;
进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk适用于MYISAM类型的数枣绝据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:

myisamchk tablename.MYI
进行检测,如果需要修复的话,凳粗姿可以使用:
myisamchk -of tablename.MYI
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是更好在进行检测时把MySQL服务器Shutdown掉。
另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:
&& /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己凳慎的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。
需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动!检测修复所有数据库(表)
1、按rowno分组困陵后,每个rowno只有一条数据。所以辩尺姿排序不可能同时按rowno,
count来携绝排序。
2、感觉你应该只按count排序
用饥竖分组函数烂运大来做,假如悄笑你的表名是table_name
table_name
product,max(date)
table_name
a.product=b.product
a.date=b.max_date;
关于mysql 新建数据库排序规则的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
香港服务器首选树叶云,2H2G首月10元开通。树叶云(www.IDC.Net)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
mysql中sql语句中的排序语句是不是也要用索引?
索引的使用,不是越多越好,个人认为如果表不大的话,完全可以不加索引,如果表确实够大查询速度慢的话,在一个主要的查询字段添加索引就可以,比如说自己生成一个0222这样的一个时间字段,你在每次查询的时候,让这个字段索引做必须的查询条件就可以,order by不需要添加索引了。
SelectnameAs数据库名,database_idAs数据库id,create_dateAs创建时间,compatibility_levelAs兼容级别,collation_nameAs排序规则,recovery_model_descAs恢复模式
mysql查询优化,1万条数据居然要30秒
索引创建规则:1、表的主键、外键必须有索引;2、数据量超过300的表应该有索引;3、经常与其他表进行连接的表,在连接字段上应该建立索引;4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;5、索引应该建在选择性高的字段上;6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:A、正确选择复合索引中的主列字段,一般是选择性较好的字段;B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;8、频繁进行数据操作的表,不要建立太多的索引;9、删除无用的索引,避免对执行计划造成负面影响;以上是一些普遍的建立索引时的判断依据。 一言以蔽之,索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。 因为太多的索引与不充分、不正确的索引对性能都毫无益处:在表上建立的每个索引都会增加存储开销,索引对于插入、删除、更新操作也会增加处理上的开销。 另外,过多的复合索引,在有单字段索引的情况下,一般都是没有存在价值的;相反,还会降低数据增加删除时的性能,特别是对频繁更新的表来说,负面影响更大。
发表评论