更多: 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 子句时会忽略数据库的默认排序规则。
我们可以为数据库中的表指定默认使用的字符集和排序规则。
检查当前字符集和排序规则
要确定数据库的默认字符集和排序规则,请输入以下 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