首页 > 数据库 >mysql创建数据库排序规则utf8_general_ci和utf8_unicode_ci区别

mysql创建数据库排序规则utf8_general_ci和utf8_unicode_ci区别

时间:2024-02-18 11:44:51浏览次数:36  
标签:ci utf8 general 大小写 unicode mysql 校对

在编程语言中,通常用unicode对中文字符做处理,防止出现乱码,那么在MySQL里,为什么大家都使用utf8_general_ci而不是utf8_unicode_ci呢?

ci是 case insensitive, 即 "大小写不敏感", a 和 A 会在字符判断中会被当做一样的;
bin 是二进制, a 和 A 会别区别对待。
例如你运行:
SELECT * FROM table WHERE txt = 'a'
那么在utf8_bin中你就找不到 txt = 'A' 的那一行, 而 utf8_general_ci 则可以.
utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用。
utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会造成不良后果
utf8_bin:字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容

简短总结

utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。
utf8_general_ci校对速度快,但准确度稍差。
utf8_unicode_ci准确度高,但校对速度稍慢。

如果你的应用有德语、法语或者俄语,请一定使用utf8_unicode_ci。一般用utf8_general_ci就够了,到现在也没发现问题。

详细总结

1、对于一种语言仅当使用utf8_unicode_ci排序做的不好时,才执行与具体语言相关的utf8字符集校对规则。例如,对于德语和法语,utf8_unicode_ci工作的很好,因此不再需要为这两种语言创建特殊的utf8校对规则。
2、utf8_general_ci也适用与德语和法语,除了‘?'等于‘s',而不是‘ss'之外。如果你的应用能够接受这些,那么应该使用 utf8_general_ci,因为它速度快。否则,使用utf8_unicode_ci,因为它比较准确。

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

标签:ci,utf8,general,大小写,unicode,mysql,校对
From: https://www.cnblogs.com/951767619x/p/18018999

相关文章

  • 25个常见的python系统设计源码(python+mysql+vue)
    收集整理了25个常见的python系统设计源码。可以用于课程作业或者毕业设计。所有系统都带源码和文档。1.网上商城系统这是一个基于python+vue开发的商城网站,平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。整个平台包括前台和后台两个部分。......
  • 基于python+django+mysql的小区物业管理系统
    该系统是基于python+django开发的小区物业管理系统。适用场景:大学生、课程作业、毕业设计。学习过程中,如遇问题可以在github给作者留言。主要功能有:业主管理、报修管理、停车管理、资产管理、小区管理、用户管理、日志管理、系统信息。演示地址http://wuye.gitapp.cn/admin后......
  • 【Python】使用Python库中的pymysql执行SQL
    使用Python连接数据库在使用petl执行SQL之前,我们需要先连接到数据库。这里以MySQL为例,我们可以使用pymysql库来连接MySQL数据库。首先,安装pymysql库:pipinstallpymysql然后,编写以下代码来连接MySQL数据库:importpymysqlfrompetlimport*#连接数据库conn=pymysql.co......
  • Docker 安装 Mysql5.7 容器
    1、首先拉取mysql5.7镜像dockerpullmysql:5.72、查询是否下载完成 查询所有镜像dockerimages3、创建mysql容器并启动dockerrun-d\#-d后台运行 -p3306:3306\#端口号映射到主机的端口号前面的端口号可以更改--namemysql\#启动容器的名字-eMYS......
  • MySQL——模糊查询
    MySQL——模糊查询语法结构:select字段名from表名where字段名(需要查询的字段)like‘’;单引号内是需要模糊查询的内容,填写内容如下:匹配任意多个字符:%匹配任意一个字符:_例如:找出名字中含有h的:selectnamefrom表名wherenamelike‘%h%’例如:找出名字第二个字......
  • P6354 [COCI2007-2008#3] TAJNA
    题目描述使用一种加密算法。设字符串的长度为nn,则构造一个矩阵,使得r×c=nr×c=n且在r≤cr≤c的情况下使得rr尽量大。然后把给定的明文按照由上到下,从左到右的顺序填充这个r×cr×c的矩阵。得到的密文就是把矩阵按照从左到右,从上到下的顺序输出的字符串。给定你明文,......
  • P2036 [COCI2008-2009#2] PERKET题解
    【问题分析】分析题目可得此问题为01背包问题因此题数据较小所以可用枚举每一样物品选或不选的方法来写【设计程序】#include<bits/stdc++.h>#include<iostream>#include<stdio.h>#include<cstdio>#include<queue>usingnamespacestd;constintN=10+5;struct......
  • Spring Boot + MyBatis-Plus 实现 MySQL 主从复制动态数据源切换
    MySQL主从复制是一种常见的数据库架构,它可以提高数据库的性能和可用性。动态数据源切换则可以根据业务需求,在不同场景下使用不同的数据源,比如在读多写少的场景下,可以通过切换到从库来分担主库的压力。在本文中,我们将介绍如何在SpringBoot中实现MySQL动态数据源切换,使用My......
  • [ARC165C] Social Distance on Graph
    转化题意,对图进行黑白染色,求最大的\(X\)满足所有\(u,v\)间最短路径小于\(X\)的\(u,v\)异色。很明显是二分答案,假设现在二分到\(mid\),转化为判定型问题。直接\(n^2\)枚举点肯定不对。发现性质:如果\(u,v\)的最短路径长度小于\(X\)且最短路径上经过的边数大于\(......
  • 第二十三天:MYSQL集群Cluster
    一、MySQL主从复制 1、主从复制架构和原理读写分离复制:每个节点都有相同的数据集,向外扩展,基于二进制日志的单向复制2、复制架构(1)一主一从复制架构 (2)一主多从复制架构3、主从复制原理  主从复制相关线程主节点:dumpThread:为每个Slave的I/OThread启动一个dump线......