MySQL的字符集与字符排序规则
- 字符集
规定存储的数据编码格式。 - 字符排序规则
在规定的存储的数据编码格式下的比较规则,如区分不区分大小写等
以前开发中常使用的MySQL字符集是utf8,字符排序规则是utf8_general_ci
说明:
-
常见的字符集有
utf8和utf8mb4两种,在MySQL中utf8编码最多支持3字节的数据,utf8mb4最多支持4个字节的数据,移动端的表情数据是4个字节的字符,所以必须使用utf8mb4格式才能正确的存储. -
常见的字符排序规则有
utf_bin和utf_general_ci两种,bin 是二进制, a 和 A 会别区别对待.例如你运行:select * from table where a = 'a';那么在utf8_bin中你就找不到 a = ‘A’ 的那一行, 而utf8_general_ci则可以.utf8_general_ci校对速度快,但准确度稍差。(准确度够用,一般建库选择这个)
现在的说法是 为了获取更好的兼容性,应该总是使用 utf8mb4 而非 utf8. 对于 CHAR 类型数据,utf8mb4 会多消耗一些空间,根据 Mysql 官方建议,使用VARCHAR替代CHAR。
查看当前MySQL的字符集与字符排序规则
\s简单的查看MySQL的字符集

SHOW VARIABLES LIKE'%char%'详细单的查看MySQL的字符集

SHOW VARIABLES LIKE'%collation%'详细单的查看MySQL的字符排序规则

MySQL的字符集与字符排序规则设置
-
设置MySQL数据库的编码方式有三种,分别是基于
session会话的、基于全局gloable的、永久性改变的。-
session会话级别设置MySQL的字符集与字符排序规则
- 命令:
set character_set_database=utf8;
set character_set_server=utf8; - 作用范围: 本次会话,只在这个命令窗口有效
- 命令:
-
全局设置MySQL的字符集与字符排序规则
- 命令:
set global character_set_database=utf8;
set global character_ser_server=utf8; - 作用范围: 本次服务有效,重启服务失效
- 命令:
-
永久性设置MySQL的字符集与字符排序规则
- 在MySQL的配置文件
my.ini中修改: - 作用范围:永久有效。
- 在MySQL的配置文件
-
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
查看某个数据库的字符集与字符排序规则
show create database database_name

use information_schema;
select * fromSCHEMATAwhereSCHEMA_NAME= 'mytest';

数据库或表的字符集与字符排序规则设置
- MySQL提供了不同级别的设置,包括
server级、database级、table级、column级,可以根据具体的需求非常精准的设置具体的编码。- database 级设置
-- 创建数据库时指定编码
CREATE DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
-- 修改原有的数据库编码
ALTER DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
- table级设置
-- 创建数据库时指定编码
CREATE DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
-- 修改原有表的编码
ALTER TABLE tbl_name
[[DEFAULT] CHARACTER SET charset_name]
[COLLATE collation_name]
参考
数据库字符集和排序规则
utf8和utf8mb4的区分
设置MySQL的字符编码
再见乱码:5分钟读懂MySQL字符集设置
表字符集和排序规则
本文介绍了MySQL的字符集和字符排序规则,包括字符集的作用、常见的字符集与排序规则,如`utf8`和`utf8mb4`,以及`bin`和`general_ci`。讲解了如何查看和设置MySQL的字符集与排序规则,包括session、全局和永久性设置,并提到了数据库和表级别的设置方法。同时强调了在处理表情数据时,应使用`utf8mb4`以保证正确存储。
328

被折叠的 条评论
为什么被折叠?



