每个数据库都有一个数据库字符集和一个数据库排序。的创建数据库
和改变数据库
语句具有用于指定数据库字符集和排序规则的可选子句:
创建数据库db_name(默认的字符集charset_name][(默认)核对collation_name.)修改数据库db_name(默认的字符集charset_name][(默认)核对collation_name.]
关键字模式
可以用来代替数据库
。
所有数据库选项都存储在名为db.opt
可以在数据库目录中找到。
的字符集
和核对
子句使得在同一个MySQL服务器上创建具有不同字符集和排序的数据库成为可能。
例子:
创建数据库db_nameCHARACTER SET latin1 COLLATE latin1_swedish_ci;
MySQL选择数据库字符集和数据库排序的方式如下:
如果两个
字符集
和charset_name
核对
是否指定,字符集collation_name.
charset_name
和排序collation_name.
使用。如果
字符集
没有指定charset_name
核对
,字符集charset_name
并且使用了它的默认排序。要查看每个字符集的默认排序规则,请使用显示字符集
声明或查询INFORMATION_SCHEMA
CHARACTER_SETS
表格如果
核对
没有指定collation_name.
字符集
,字符集与之相关联collation_name.
和排序collation_name.
使用。否则(既不是
字符集
也不核对
),则使用服务器字符集和服务器排序规则。
默认数据库的字符集和排序规则可以从值的值确定character_set_database
和collation_database
系统变量。服务器在默认数据库更改时设置这些变量。如果没有默认数据库,则变量具有与相应的服务器级系统变量相同的值,character_set_server.
和collation_server
。
要查看给定数据库的默认字符集和排序规则,请使用以下语句:
使用db_name;选择@@character_set_database @@collation_database;
或者,在不改变默认数据库的情况下显示值:
从information_schema中选择default_character_set_name, default_collation_name。Schemata where schema_name = 'db_name”;
数据库字符集和排序会影响服务器操作的以下方面:
为
创建表
语句中,如果没有指定表字符集和排序规则,则将数据库字符集和排序规则用作表定义的默认值。要重写此操作,请提供explicit字符集
和核对
表选择。为
加载数据
包含no的语句字符集
子句,服务器使用所示的字符集character_set_database
系统变量来解释文件中的信息。要重写此操作,请提供显式的字符集
条款。对于存储的例程(过程和函数),数据库字符集和在例程创建时间中的排序效果用作字符集和声明包含否的字符数据参数的排序规则
字符集
或者一个核对
属性。覆盖这一点,提供字符集
和核对
明确。