01.数据库字符级utf8和utf8mb4

1.1 utf8 和 utf8mb4

  • utf8utf8mb4MySQL数据库的2种字符集。
  • utf8mb4utf8 的扩充,为什么这么说呢?

    • utf8 只支持最长三个字节的字符,即 Unicode 中的基本多文本平面,
    • utf8mb4支持 4 字节长度的 UTF-8 字符
  • 支持的版本 5.5.3+(通过 select version(); 查看)

说明

  • 三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff
  • mb4就是most bytes 4 缩写

1.2 utf8mb4的支持

1.2.1 业务上的新库支持

全新数据库实例(一台完全新的数据库服务器)

设置 my.ini 文件

[client]
default-character-set=utf8mb4
 
[mysql]
default-character-set=utf8mb4
 
[mysqld]
character-set-client-handshake=FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

这样后面实例上,创建新库,可以不用指定,走默认的。

已有实例新库

# 数据库级别的设置
CREATE DATABASE [IF NOT EXISTS] <数据库名>
[[DEFAULT] CHARACTER SET <字符集名>](1)
[[DEFAULT] COLLATE <校对规则名>];

# 表的设置
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    (create_definition,...)
    [table_options]
    [partition_options]
    
    table_option: {
        AUTOEXTEND_SIZE [=] value
      | AUTO_INCREMENT [=] value
      | AVG_ROW_LENGTH [=] value
      | [DEFAULT] CHARACTER SET [=] charset_name(2)
      
# 二次修改表字段
alter_option: {
    table_options
    [DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name]  (3)    
  • (1) 设置字符集,进行字符的设置
  • (2) 设置字符集,做表级别的设置,默认走实例级别的字符集
  • (3) 字段设置字符集

字段修改参考

ALTER TABLE py_comment MODIFY COLUMN content VARCHAR(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT “” COMMENT ‘评论内容’;

1.2.2 已有的库进行维护

参考 1.2.1 的 已有实例新库 方式

1.3 utf8mb4格外说明

utf8mb4char的支持,官方 建议是 采用 varchar 类型

1.4 小结

  • 数据库版本支持,查看方式(select version();)
  • 数据看支持的字符集(即 SHOW CHARACTER SET LIKE 'utf%';)
  • 查看查询Session支持的字符集 (SHOW SESSION VARIABLES LIKE 'character\_set\_%';)
  • 字符集的差异和比较
  • 修改字符集方式有三种,根据实际情况选择处理
posted @ 2021-03-02 20:38  可可逗豆  阅读(216)  评论(0)    收藏  举报