更多: zhilu jiaocheng

更改字符集和排序规则

创建新数据库时,我们将像这样输入 CREATE DATABASE 语句来设置默认字符集和排序规则:

CREATE DATABASE database1
DEFAULT CHARACTER SET latin2
DEFAULT COLLATE latin2_bin;

请注意,这些选项之间没有逗号,这是一个语句。
要更改现有数据库的默认设置,请输入如下 SQL 语句:

ALTER DATABASE database1
DEFAULT CHARACTER SET latin2
DEFAULT COLLATE latin2_bin;

请注意,更改数据库的默认字符集和排序规则不会影响该数据库中已存在的表。
此外,如果在数据库中创建表时提供了 CHARACTER SET 子句,则数据库的 DEFAULT COLLATE 将被忽略,即使为表指定的 CHARACTER SET 与为数据库指定的 CHARACTER SET 相同。
例如:

CREATE DATABASE database2
CHARACTER SET cp1257
COLLATE cp1257_bin;
CREATE TABLE database2.table1 (column1 VARCHAR(16))
CHARACTER SET cp1257;
SHOW CREATE TABLE database2.table1 \G
*** 1. row ***
Table: table1
Create Table: CREATE TABLE `table1` (
`column1` varchar(16) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1257

在 SHOW CREATE TABLE 的输出中没有指定 COLLATE 子句,因为在 CREATE TABLE 语句中显式指定 COLLATE 子句时会忽略数据库的默认排序规则。

在 MySQL 中如何更改数据库的默认字符集和排序规则

我们可以为数据库中的表指定默认使用的字符集和排序规则。

检查当前字符集和排序规则

要确定数据库的默认字符集和排序规则,请输入以下 SQL 语句:

mysql> SHOW CREATE DATABASE database1;
*** 1. row ***
Database: database1
Create Database: CREATE DATABASE `database1`
/*!40100 DEFAULT CHARACTER SET latin1 */

我们还可以使用如下查询从 INFORMATION_SCHEMA 获取此信息:

SELECT SCHEMA_NAME,
DEFAULT_CHARACTER_SET_NAME,
DEFAULT_COLLATION_NAME
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME='database1';
*** 1. row ***
SCHEMA_NAME: database1
DEFAULT_CHARACTER_SET_NAME: latin1
DEFAULT_COLLATION_NAME: latin1_swedish_ci

数据库特征存储在文件系统上数据库目录中的 db.opt 文件中。
如果文件存在,内容将如下所示:

default-character-set=latin2
default-collation=latin2_bin

我们可以使用文本编辑器创建或者编辑此文件,但最好使用下一节中讨论的相关 SQL 语句。

日期:2020-09-17 00:11:07 来源:oir作者:oir