学网站建设 去哪里,购买的网站如何换背景,福清手机网站建设,阿里云物联网平台文章目录 概念1、字符集1.1、举例1.2、常见字符集 utf8 和 utf8mb4 区别1.3、字符集 使用 2、排序规则2.1、举例2.2、常见的排序规则 utf8mb4_bin 、utf8mb4_general_ci、utf8mb4_unicode_ci2.3、使用 概念
在 MySQL 中#xff0c;字符集#xff08;character set#xff0… 文章目录 概念1、字符集1.1、举例1.2、常见字符集 utf8 和 utf8mb4 区别1.3、字符集 使用 2、排序规则2.1、举例2.2、常见的排序规则 utf8mb4_bin 、utf8mb4_general_ci、utf8mb4_unicode_ci2.3、使用 概念
在 MySQL 中字符集character set和排序规则collation是两个相关但不同的概念
字符集character set定义了如何将字符存储到字节中。 排序规则collation定义了如何比较字符以及在排序和搜索时如何处理字符。
1、字符集
1.1、举例 1.2、常见字符集 utf8 和 utf8mb4 区别
字符支持范围
utf8仅支持最多3字节的UTF-8字符。这意味着它只能表示基本多语言平面BMP的字符即 Unicode 范围内的 U0000 至 UFFFF 的字符。这种字符集无法表示一些扩展的 Unicode 字符例如表情符号和某些东亚文字。 utf8mb4支持最多4字节的UTF-8字符。这意味着它可以表示所有的 Unicode 字符包括基本多语言平面的字符以及补充平面字符例如表情符号和历史文字。
存储需求
utf8每个字符最多需要3个字节。 utf8mb4每个字符最多需要4个字节。因此在存储相同数量的字符时utf8mb4 可能比 utf8 占用更多的存储空间。
兼容性
utf8 和 utf8mb4 在表示基本多语言平面BMP字符时是兼容的但在表示补充平面字符时只有 utf8mb4 能正确处理这些字符。
选择建议 如果你的应用程序需要处理表情符号或者某些特定的Unicode字符如东亚的历史文字建议使用 utf8mb4。 如果你只需要处理基本多语言平面的字符utf8 也可以满足需求但一般建议使用 utf8mb4 以确保更广泛的字符集支持和未来的兼容性。
1.3、字符集 使用
定义表结构 DEFAULT CHARSETutf8mb4 CREATE TABLE example (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;
在配置文件中定义 可以确保在新建数据库、表和列时默认使用 utf8mb4 字符集。 [client]
default-character-set utf8mb4[mysql]
default-character-set utf8mb4[mysqld]
character-set-server utf8mb4
collation-server utf8mb4_unicode_ci2、排序规则
2.1、举例 2.2、常见的排序规则 utf8mb4_bin 、utf8mb4_general_ci、utf8mb4_unicode_ci 简单说需要支持大小写的就用 utf8mb4_bin utf8mb4_general_ci不区分大小写比较速度较快但支持的Unicode特性不如utf8mb4_unicode_ci。 utf8mb4_unicode_ci不区分大小写支持完整的Unicode排序规则处理更为精确和全面。 utf8mb4_bin 的特点 区分大小写utf8mb4_bin 是区分大小写的因为它是基于字符的二进制值进行比较。例如‘a’ 和 ‘A’ 被认为是不同的字符。 区分字符顺序比较时严格按照每个字符的二进制编码值进行utf8mb4_bin 会区分所有字符的顺序包括大小写字母和其他符号。 使用场景 精确比较当需要对字符串进行精确的、区分大小写的比较时utf8mb4_bin 是理想的选择。例如密码比较和需要区分大小写的标识符。 存储敏感数据存储对大小写敏感的数据时比如用户名、产品代码等可以使用 utf8mb4_bin 以确保数据的准确性。
2.3、使用
在表结构定义时使用 COLLATEutf8mb4_bin CREATE TABLE example (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_bin;
在进行查询时使用
SELECT * FROM example WHERE name ExampleName COLLATE utf8mb4_bin;