深入浅出MySQL:新建数据库的排序规则详解 (mysql 新建数据库排序规则)

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 databasename1.dbo.tablename t1 inner join databasename2.dbo.tablename2 t2

on t1.col1 = t2.col1

选择只要用【数据颂稿库名.dbo.表名】 即可(可尺樱腔能也不是dbo 看数据库的设置陵衫了)

mySQL分组排序

有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使用起来比较简便。推荐使用。

1. check table 和 repair table

登陆mysql 终端:

mysql -uxx -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排序

—-

SELECT

rowno

,COUNT(*)

AS

Num

FROM

Table1

GROUP

BY

rowno

ORDER

BY

COUNT(*)

用饥竖分组函数烂运大来做,假如悄笑你的表名是table_name

select

a.*

from

table_name

a,(select

product,max(date)

max_date

from

table_name

group

by

product)

b

where

a.product=b.product

and

a.date=b.max_date;

关于mysql 新建数据库排序规则的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 深入浅出MySQL:新建数据库的排序规则详解 (mysql 新建数据库排序规则)