每个数据库都有一个数据库字符集和一个数据库排序。的创建数据库
和修改数据库
语句有用于指定数据库字符集和排序规则的可选子句:
创建数据库db_name(默认的字符集charset_name][(默认)核对collation_name)修改数据库db_name(默认的字符集charset_name][(默认)核对collation_name]
关键字模式
可以用来代替数据库
。
的字符集
和核对
子句使得在同一个MySQL服务器上创建具有不同字符集和排序的数据库成为可能。
数据库选项存储在数据字典中,可以通过检查INFORMATION_SCHEMA。图式
表格
例子:
创建数据库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
系统变量来解释文件中的信息。要重写此操作,请提供显式的字符集
条款。对于存储例程(过程和函数),在例程创建时起作用的数据库字符集和排序规则被用作字符数据参数的字符集和排序规则,其声明中包含no
字符集
或者一个核对
属性。要推翻这一点,请提供字符集
和核对
明确。