字符集与校对集
查看数据库默认字符集
mysql> show variables like '%charact%';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 45169
Current database: information_schema
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | bina
ry |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
查看数据库默认的校对集
mysql> show variables like '%collation%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | utf8_general_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)
mysql>
建立库的时候,没有指定字符集,那么应用配置
若是指定了字符集和校对集,那么数据库就用这样的配置。
若是只指定了字符集,那么数据库的校对集为字符集对应的校对集。
若是只指定了校对集,那么数据库的字符集为校对集默认对应的字符集。
若是字符集和校对集都没有指定,那么数据库的字符集沿用
character_set_server===>character_set_database;
collation_server=====>collation_database
字符集与校对集的对应关系查看information_schema.collatios与information_schema.character_sets
查看库的默认字符集和校对集
mysql>use mysql; --进入你要查询的库。
mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8 | utf8_general_ci |
+--------------------------+----------------------+
1 row in set (0.00 sec)
或者:
查看每个库的字符集与校对集
SELECT SCHEMA_NAME,DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM INFORMATION_SCHEMA.SCHEMATA ;
如果库的字符集与校对集指定了,那么建表(存储过程,load data)的时候不指定,会沿用库的字符集与校对集到表。
当然你也可以给表(存储过程,load data)指定自己希望的字符集与校对集。
如果表的字符集与校对集指定了,那么建列的时候不指定,会沿用表的字符集与校对集到列。
当然你也可以给列指定自己希望的字符集与校对集。
只要char,varchar,text列类型涉及到列字符集与校对集。
字符串的字符集与校对集指定如下:
SELECT 'string';
SELECT _latin1'string';
SELECT _latin1'string' COLLATE latin1_danish_ci;
总结:
数据库,表,列,字符串的字符集与校对集决定方式都是一样的。
列的若是没指定,沿用表的,若是表的没指定沿用库的,若是库的没指定沿用服务的。
set character_set_results = NULL; --结果以数据本身的字符集方式显示。
11-07
11-07