Mysql 排序规则选择

排序规则:是指对指定字符集下不同字符的比较规则。其特征有以下几点:

1、 两个不同的字符集不能有相同的排序规则

2、 两个字符集有一个默认的排序规则

3、 有一些常用的命名规则。如_ci结尾表示大小写不敏感(caseinsensitive),_cs表示大小写敏感(case sensitive),_bin表示二进制的比较(binary).

utf-8有默认的排序规则:

命令:SHOW CHARSET LIKE ‘utf8%‘;

区别:

utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用。
utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会造成不良后果
utf8_bin:字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容

utf8_general_ci校对速度快,但准确度稍差。
utf8_unicode_ci准确度高,但校对速度稍慢。

用一句话概况上面这段话:utf8_unicode_ci比较准确,utf8_general_ci速度比较快。通常情况下 utf8_general_ci的准确性就够我们用的了,在我看过很多程序源码后,发现它们大多数也用的是utf8_general_ci,所以新建数据 库时一般选用utf8_general_ci就可以了

原文地址:https://www.cnblogs.com/tc310/p/11968339.html

时间: 2024-10-05 19:09:54

Mysql 排序规则选择的相关文章

MySQL字符集与排序规则 北京MySQL DBA学习

MySQL提供了多种字符集和排序规则选择,其中字符集设置和数据存储以及客户端与MySQL实例的交互相关,排序规则和字符串的对比规则相关. 字符集的设置可以在MySQL实例.数据库.表.列四个级别.MySQL设置字符集支持在InnoDB.MyISAM.Memory三个存储引擎.查看当前MySQL支持的字符集的方式有两种,一种是通过查看information_schema.character_set系统表,一种是通过命令show character set查看每个指定的字符集都会有一个或多个支持的排

MySql之排序规则问题(2)

今天看到这个Sql语句,之前听说过,但是并未弄懂,因此在此特意做下笔记: userName varchar(20) collate chinese_prc_ci_as null 1.首先,collate是一个子句,可应用于数据库定义或列定义以定义排序规则,或应用于字符串表达式以应用排序规则投影 ::={windows_collation_name}|{sql_collation_name} 参数:collate_name是应用于表达式列定义或数据库定义的排序规则的名称collation_name

MYSQL数据库表排序规则不一致导致联表查询,索引不起作用问题

Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题 表更描述: 将mysql数据库中的worktask表添加ishaspic字段. 具体操作:(1)数据库worktask表新添是否有图片字段ishaspic:新添字段时,报错 [SQL] alter table WorkTask add ishaspic int(10) Null;[Err] 1034 - Incorrect key file for table 'WorkTask'; try to repair it 解决方案:新建

Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别总结

Mysql中的排序规则utf8_unicode_ci.utf8_general_ci的区别总结 用了这么长时间,发现自己竟然不知道utf_bin和utf_general_ci这两者到底有什么区别.. ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的; bin 是二进制, a 和 A 会别区别对待. 例如你运行: SELECT * FROM table WHERE txt = 'a' 那么在utf8_bin中你就找不到 txt

MySql数据库字段排序规则不一致产生的一个问题

最近项目向MySql迁移,迁移完毕后,在获取用户权限时产生了一个异常,跟踪进去获取执行的语句如下, SELECT PermissionId FROM spysxtPermission WHERE (ResourceCategory = 'BaseUser' AND ResourceId = '003bf4bd072243fa90517ee2bc088cb7' AND Enabled = 1 AND DeletionStateCode = 0) UNION SELECT PermissionId

Mysql建库,字符集和排序规则

一般对于中文使用都是用utf8字符集和utf8_general_ci 的排序规则 为什么要选用这两种方式可以参考~~~ 哪篇帖子~下次找到贴上来 mysql>CREATE DATABASE IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_ci; #注意后面这句话 "COLLATE utf8_general_ci",大致意思是在排序时根据utf8变码格式来排序 #那么在这个数据库下创建的所有数据表的默认字符

SQL Server 与MySQL中排序规则与字符集相关知识的一点总结

原文:SQL Server 与MySQL中排序规则与字符集相关知识的一点总结 字符集&&排序规则 字符集是针对不同语言的字符编码的集合,比如UTF-8字符集,GBK字符集,GB2312字符集等等,不同的字符集使用不同的规则给字符进行编码排序规则则是在特定字符集的基础上特定的字符排序方式,排序规则是基于字符集的,是对字符集在排序方式维度上的一个划分.排序规则是依赖于字符集的,一种字符集可以有多种排序规则,但是一种排序规则只能基于某一种字符集的比如中文字符集,也即汉字,可以按照“拼音排序”.“

mysql建数据库的字符集与排序规则

1.字符集说明: 一般选择utf8.下面介绍一下utf8与utfmb4的区别.utf8mb4兼容utf8,且比utf8能表示更多的字符.unicode编码区从1 - 126就属于传统utf8区,当然utf8mb4也兼容这个区,126行以下就是utf8mb4扩充区,什么时候你需要存储那些字符,你才用utf8mb4,否则只是浪费空间. 2.排序规则 排序一般分为两种:utf_bin和utf_general_cibin 是二进制, a 和 A 会别区别对待.例如你运行:SELECT * FROM ta

修改MySql中数据表和字段的字符集和排序规则

由于数据库中的数据表和表字段的字符集和排序规则不统一,找了很多帖子,最后发现如下脚本很好用. 用法儿是:先执行如下脚本生成修改数据表和表字段的脚本,然后再执行这些生成的脚本. 1. 修改指定数据库中所有varchar类型的表字段的字符集为UTF8,并将排序规则修改为utf8_general_ci SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY `', column_name, '` ', DATA_TYPE, '(', CHARACTER