使用数据库数据库编码

举报
xcc-2022 发表于 2022/07/24 11:10:54 2022/07/24
【摘要】 7.4 数据库编码在MySQL中,会为创建的每个数据库指定一个字符编码。如果在创建数据库时没有为数据库指定字符编码,则MySQL会为数据库指定一个默认的字符编码,这个默认的字符编码在MySQL的配置文件my.cnf中进行配置。[client]default-character-set = utf8mb4[mysqld]character_set_server = utf8mb4[mysql]...

7.4 数据库编码

在MySQL中,会为创建的每个数据库指定一个字符编码。如果在创建数据库时没有为数据库指定字符编码,则MySQL会为数据库指定一个默认的字符编码,这个默认的字符编码在MySQL的配置文件my.cnf中进行配置。


[client]
default-character-set = utf8mb4
[mysqld]
character_set_server = utf8mb4
[mysql]
default-character-set=utf8mb4

另外,创建数据库后也可以修改数据的字符编码。


7.4.1 创建数据库时指定字符编码

1.语法格式

创建数据库时指定字符编码的语法格式如下:


CREATE DATABASE [IF NOT EXISTS] database_name DEFAULT CHARACTER SET character_name COLLATE collate_name 
[DEFAULT ENCRYPTION='N'];

2.简单示例

在MySQL命令行创建名称为test_character的数据库,并指定数据库的字符编码为UTF-8,校验规则为utf8_unicode_ci,不使用MySQL的加密技术。


mysql> CREATE DATABASE IF NOT EXISTS test_character DEFAULT CHARACTER SET utf8 COLLATE  utf8_unicode_ci 
DEFAULT ENCRYPTION='N';
Query OK, 1 row affected, 2 warnings (0.09 sec)

可以看到,名称为test_character的数据库创建成功。

接下来,查看名称为test_character的数据库的字符编码。


mysql> SHOW CREATE DATABASE test_character \G 
*************************** 1. row ***************************
       Database: test_character
Create Database: CREATE DATABASE `test_character` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_
unicode_ci */ /*!80016 DEFAULT ENCRYPTION='N' */
1 row in set (0.00 sec)

创建的名称为test_character的数据库使用的字符编码为UTF-8,校验规则为utf8_unicode_ci,没有使用MySQL的加密技术。

创建名称为goods的数据库时没有指定字符编码,此时就会使用默认的字符编码utf8mb4,读者可参见7.2.3节中的内容查看goods数据库的字符编码。

MySQL中也提供了查看数据库默认字符编码的SQL语句。


mysql> SHOW VARIABLES LIKE '%character_set_database%';
+------------------------+---------+
| Variable_name           | Value   |
+------------------------+---------+
| character_set_database | utf8mb4 |
+------------------------+---------+
1 row in set (0.00 sec)

MySQL中默认的数据库编码为utf8mb4,与在my.cnf文件中配置的默认字符编码一致。


7.4.2 修改数据库的字符编码

1.语法格式

修改数据库的字符编码的语法格式如下:


ALTER DATABASE database_name CHARACTER SET character_name collate collate_name;

2.简单示例

将名称为test_character的数据库的字符编码修改为utf8mb4,检验规则修改为utf8mb4_0900_ai_ci。


mysql> ALTER DATABASE test_character CHARACTER SET utf8mb4 collate utf8mb4_0900_ai_ci;             
Query OK, 1 row affected (0.00 sec)

接下来,查看test_character数据库的字符编码。


mysql> SHOW CREATE DATABASE test_character \G
*************************** 1. row ***************************
       Database: test_character
Create Database: CREATE DATABASE `test_character` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE 
utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */
1 row in set (0.00 sec)

此时test_character数据库的字符编码为utf8mb4,校验规则为utf8mb4_0900_ai_ci。说明数据库的字符编码修改成功。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。