MySQL学习-字符集(一)

53 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第26天,点击查看活动详情

前言

上篇我们学习完了MySQL中的触发器。有兴趣的小伙伴可以阅读(# MySQL学习-触发器(二))。
下面我们继续学习MySQL中的字符集。

修改MySQL5.7字符集

在MySQL8.0版本之前,默认字符集是latin1,utf8字符集指向的是utf8mb3。开发中,我们经常会把编码修改为utf8字符集。如果忘记修改默认的编码,就会出现乱码的问题。从MySQL8.0开始,数据库的默认编码将改为utf8mb4,从而避免出现乱码的问题。

查看默认使用的字符集

SHOW VARIABLES like `character%`;
#或
SHOW VARIABLES like `%char%`;

使用以上语句,就可以查到数据库中拥有哪些字符集。在数据库中运行有以下几个参数结果:

  1. character_set_client:服务器解码请求时使用的字符集。
  2. character_set_connection:服务器处理请求时会把请求字符串从character_set_client转character_set_connection。
  3. character_set_database:当前数据库的字符集。
  4. character_set_server:服务器级别的字符集。
  5. character_set_results:服务器客户端返回数据时使用的字符集。

查看数据库的字符集

语法如下:

SHOW CREATE DATABASE testdb;

修改数据库的字符集

语法如下:

ALTER DATABASE [数据库名] CHARACTER SET [字符集名称];

查看数据表的字符集

语法如下:

SHOW CREATE TABLE [表名];

修改数据表的字符集

语法如下:

ALTER TABLE [表名] CHARACTER SET [字符集名称];

各级别的字符集

MySQL有4个级别的字符集分别是:

  1. 服务器级别:由character_set_server指定。
  2. 数据库级别:数据库级别的字符集默认跟随服务器级别的字符集,也可以自行指定不同的字符集。
  3. 表级别:表级别的字符集默认跟随数据库级别的字符集,也可以自行指定不同的字符集。
  4. 列级别:列级别的字符集默认跟随表级别的字符集,也可以自行指定不同的字符集。

今天先学到这里,明天继续。