网站首页 > 技术文章 正文
MySQL新建数据库时,字符集和排序规则如何选择?本文来简单总结一下。
一、字符集
字符集:就是用来定义字符在数据库中的编码的集合。
常见的字符集:utf8、Unicode、GBK、GB2312(支持中文)、ASCCI(不支持中文)
通常,为了统一前后端编码,尤其是设计到源代码、页面文件、页面输入以及数据库字符集等,若不相统一,往往会照成莫名其妙的乱码现象。现在很多工具都默认为utf8,所以,若无特别需求,一般就用utf8就足矣了 。我这里用的是utf8字符集。
二、字符集排序规则
我们在创建mysql数据库是,通常还有一个选项,就是选择数据库的排序规则。类似如下:
本人用的是utf8_general_ci。简单介绍一下。
- 后缀ci (case insensitive)意味不区分大小写(大小写不敏感),后缀cs (case sensitive)区分大小写(大小写敏感)
- utf8_bin 规定每个字符串用二进制编码存储,区分大小写,可以直接存储二进制的内容
- 如在ci情况下:select name,age from user; 等价于SELECT NAME,AgE FROM user; 大小写字符判断是一样的
- 而在cs情况下:假设字段名严格为name, age,表名:User。那么就必须:select name,age from User; 大小写字符判断有区分
- 而bin意思是二进制,所以小写u和大写U会被区别
例如你运行:
SELECT name FROM UseI WHERE name = 'Solo'
那么在utf8_bin中你就找不到 name = 'solo' 的那一行, 在utf8_general_ci 下可以。
1. utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用。
2. utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果
3. utf8_bin:字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容
utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。
utf8_general_ci校对速度快,但准确度稍差。
utf8_unicode_ci准确度高,但校对速度稍慢。
utf8_unicode_ci比较准确,utf8_general_ci速度比较快。通常情况下 utf8_general_ci的准确性就够我们用的了,在我看过很多程序源码后,发现它们大多数也用的是utf8_general_ci,所以新建数据 库时一般选用utf8_general_ci就可以了。 如果应用有德语、法语或者俄语,请一定使用utf8_unicode_ci;否则 utf8_general_ci 就够了,
总结
排序规则是指对特定字符集下不同字符的比较规则。确定排序规则后,才可以在一个字符集上比较字符之间的大小关系。每个排序规则唯一对应一种字符集,但是一个字符集可以对应多种排序规则,其中一个是默认排序规则。也可以简单的理解为,排序规则,就是指字符比较时是否区分大小写,以及是按照字符编码进行比较还是直接用二进制数据比较。
猜你喜欢
- 2025-07-08 软件测试报错_tomcat运行代码错误日志及问题解决
- 2025-07-08 数据库系统学习基础篇——(一) 初识MySQL
- 2025-07-08 这些MySQL面试题集锦,据说知名互联网公司都用
- 2025-07-08 MySQL 正则表达式最全介绍(mysql replace正则表达式)
- 2025-07-08 深夜整理!55道BAT高频MySQL灵魂拷问,背完跳槽涨薪不再是梦想!
- 2025-07-08 「MySQL学习」MySQL的变量(mysql设置变量命令)
- 2025-07-08 MySQL-SQL介绍(mysql简单介绍)
- 2025-07-08 MySQL低版本升级操作流程(mysql低版本升级操作流程图)
- 2025-07-08 MySQL开发规范(mysql开发工具介绍)
- 2025-07-08 【php学习笔记】php中strtolower()方法使用笔记
- 1509℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 532℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 495℃MySQL service启动脚本浅析(r12笔记第59天)
- 474℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 471℃启用MySQL查询缓存(mysql8.0查询缓存)
- 452℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 431℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 428℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)