您现在的位置是:首页> 网站开发

MYSQL数据库字符集篇含utf8到utf8mb4

  • 2763人已阅读
  • 时间:2020-02-29 13:41:59
  • 分类:网站开发
  • 作者:祥哥

MYSQL数据库字符集篇

#一.查看MYSQL数据库服务器所支持的字符集

#1.查看MYSQL所支持的字符集,查出所有的字符集

show charset;

#2.通过like方式过滤某个特定字符集的信息(查看数据库中是否支持某个特定的字符集)

show character set like '%utf%';

#或者通过where的方式过滤某个特定的字符集

show character set where charset = 'utf8mb4';

#3.通过查看information_schema数据库下character_sets表

desc information_schema.character_sets;

select character_set_name,default_collate_name,description,maxlen from information_schema.character_sets;

#二.MYSQL默认字符集

#方法一:
show variables like '%character%';

#方法二:
show variables like 'collation%';

#联合:
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

#三.查看库的字符集

show create database 库名\G

#四.查看表的字符集

show table status from 库名 like '表名';

#五.查看表中所有列的字符集

show full columns from 表名;


#六.修改字符集

#修改数据库utf8到utf8mb4过程

#1.注意,通过上面命令查看数据库支持utf8mb4不.版本要求5.5.3+

#2.关闭mysql服务

#3.修改配置文件

[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'

#4.重启mysql,并检查变量

show variables like '%character%';


character_set_client    (客户端来源数据使用的字符集)

character_set_connection    (连接层字符集)

character_set_database  (当前选中数据库的默认字符集)

character_set_results   (查询结果字符集)

character_set_server    (默认的内部操作字符集)

#这几个必须是utf8mb4

#七.修改已建库字符集篇

#更改数据库字符集:

ALTER DATABASE 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

#更改表中字符集,注意里面的字段字符集并没有被修改

ALTER TABLE 表名 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 

#更改表中字符集和所有字段字符集:

ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

#如果一个数据库有多个表,批量修改表和表字段字符集

#1.查询某个数据库所有表名的语句:

SELECT TABLE_NAME from information_schema.`TABLES` WHERE TABLE_SCHEMA = '数据库名';
#2.得到所有的表名,我们可以把表名拼接到上面更改表编码(字符集)和表中所有字段的编码(字符集)的语句中去,得到如下语句

SELECT
    CONCAT(
        'ALTER TABLE ',
        TABLE_NAME,
        ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;'
    )
FROM
    information_schema.`TABLES`
WHERE
    TABLE_SCHEMA = 'jiulian5188me';

#3.执行后得到的就是修改数据库中所有表字符集的语句,然后复制这些语句执行就可以了。


Top