MySQL数据库中只能对数据库使用的字符集和校对规则进行修改。可以使用 ALTER SCHEMA 语句修改已存在的数据库,和ALTER DATABASE语句相同。语法格式如下:
ALTER SCHEMA <数据库名> [[DEFAULT] CHARACTER SET <字符集名>] [[DEFAULT] COLLATE <校对规则名>];
[ ]中的内容是可选的,{}是集合,| 代表或,<>是中文解释,DEFAULT 为默认。语法说明:
<数据库名>:要修改的数据库的名称。
[DEFAULT] CHARACTER SET:指定数据库的字符集。指定字符集的目的是为了避免在数据库中存储的数据出现乱码的情况。
[DEFAULT] COLLATE:指定字符集的校对规则。
MySQL 的字符集(CHARACTER)和校对规则(COLLATION)是两个不同的概念。字符集是用来定义 MySQL 存储字符串的方式,校对规则定义了比较字符串的方式。后面我们会单独讲解 MySQL 的字符集和校对规则。 |
修改前先显示创建数据库定义声明
mysql> SHOW CREATE SCHEMA test; +----------+---------------------------------------------------------------------------------------+ | Database | Create Database | +----------+---------------------------------------------------------------------------------------+ | test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */ | +----------+---------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
创建成功
使用命令行工具将数据库 test 的指定字符集修改为 gb2312,默认校对规则修改为 gb2312_unicode_ci,输入 SQL 语句与执行结果如下所示:
mysql> ALTER SCHEMA test -> DEFAULT CHARACTER SET gb2312 -> DEFAULT COLLATE gb2312_chinese_ci; mysql> SHOW CREATE DATABASE test; +----------+-----------------------------------------------------------------+ | Database | Create Database | +----------+-----------------------------------------------------------------+ | test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET gb2312 */ | +----------+-----------------------------------------------------------------+ 1 row in set (0.00 sec)