mysql 字符集相关特性

字符集与校对集



查看数据库默认字符集
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;  --结果以数据本身的字符集方式显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值