MySQL 数据库及表编码格式查看和修改

数据库支持的字符集

1.列出MYSQL支持的所有字符集:

1
mysql> SHOW CHARACTER SET;

2.当前MYSQL服务器字符集设置

1
SHOW VARIABLES LIKE 'character_set_%';

3.当前MYSQL服务器字符集校验设置

1
SHOW VARIABLES LIKE 'collation_%';

4.设备客户端显示的字符集(命令行中用select查看的字符集)

1
set names("utf8")

增删改查

1.查看数据库编码格式

1
mysql> show variables like 'character_set_database';

2.查看数据表的编码格式

1
mysql> show create table <表名>;

3.创建数据库时指定数据库的字符集

1
mysql>create database <数据库名> character set utf8;

4.创建数据表时指定数据表的编码格式

1
2
3
4
5
create table tb_books (
name varchar(45) not null,
price double not null,
bookCount int not null,
author varchar(45) not null ) default charset = utf8;

5.修改数据库的编码格式

1
mysql>alter database <数据库名> character set utf8;

6.修改数据表格编码格式

1
2
3
4
5
-- 修改默认字符集,注意此语句不会修改列的属性
mysql>alter table <表名> character set utf8 collate utf8_bin;

-- 修改表和列的属性
mysql>alter table 表名 CONVERT to character set utf8 collate utf8_bin;

7.修改字段编码格式

1
2
3
mysql>alter table <表名> change <字段名> <字段名> <类型> character set utf8;
-- 示例
mysql>alter table user change username username varchar(20) character set utf8 not null;

批量更新字符集

我们可以把表名拼接到上面更改表编码(字符集)和表中所有字段的编码(字符集)的语句中去,得到如下语句:

1
2
3
4
5
6
7
8
9
10
SELECT
CONCAT(
'ALTER TABLE ',
TABLE_NAME,
' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;'
)
FROM
information_schema.`TABLES`
WHERE
TABLE_SCHEMA = 'DATABASE_NAME';

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

配置文件

库字符集,在my.cnf中缺少了如下代码:

1
2
3
4
5
[client]
default-character-set=utf8

[mysqld]
default-character-set=utf8

如果不加以上代码,那么即便MYSQL编译安装时指定的编码是UTF8,那么在建库时其默认编码仍是LATIN1,而由于字符集的继承性,库中的表也是LATIN1的了。


MySQL 数据库及表编码格式查看和修改
https://flepeng.github.io/041-MySQL-31-字段-MySQL-数据库及表编码格式查看和修改/
作者
Lepeng
发布于
2021年3月7日
许可协议