mysql 字符集比较_mysql字符集与比较规则

MySQL有4个级别的字符集和比较规则,分别是:

服务器级别

数据库级别

表级别

列级别

查看服务器级别命令:

mysql> SHOW VARIABLES LIKE 'character_set_server';+----------------------+-------+

| Variable_name | Value |

+----------------------+-------+

| character_set_server | utf8 |

+----------------------+-------+

1 row in set (0.00sec)

mysql> SHOW VARIABLES LIKE 'collation_server';+------------------+-----------------+

| Variable_name | Value |

+------------------+-----------------+

| collation_server | utf8_general_ci |

+------------------+-----------------+

1 row in set (0.00 sec)

创建与修改服务器级别命令:

server]

character_set_server=gbk

collation_server=gbk_chinese_ci

查看数据库级别命令:

mysql>USE charset_demo_db;

Database changed

mysql> SHOW VARIABLES LIKE 'character_set_database';+------------------------+--------+

| Variable_name | Value |

+------------------------+--------+

| character_set_database | gb2312 |

+------------------------+--------+

1 row in set (0.00sec)

mysql> SHOW VARIABLES LIKE 'collation_database';+--------------------+-------------------+

| Variable_name | Value |

+--------------------+-------------------+

| collation_database | gb2312_chinese_ci |

+--------------------+-------------------+

1 row in set (0.00 sec)

创建与修改数据库级别命令:

CREATE DATABASE 数据库名

[[DEFAULT] CHARACTER SET 字符集名称]

[[DEFAULT] COLLATE 比较规则名称];

ALTER DATABASE 数据库名

[[DEFAULT] CHARACTER SET 字符集名称]

[[DEFAULT] COLLATE 比较规则名称];

创建与修改表级别命令:

CREATE TABLE 表名 (列的信息)

[[DEFAULT] CHARACTER SET 字符集名称]

[COLLATE 比较规则名称]]

ALTER TABLE 表名

[[DEFAULT] CHARACTER SET 字符集名称]

[COLLATE 比较规则名称]

创建与修改列名级别命令:

CREATE TABLE 表名(

列名 字符串类型 [CHARACTER SET 字符集名称] [COLLATE 比较规则名称],

其他列...

);

ALTER TABLE 表名 MODIFY 列名 字符串类型 [CHARACTER SET 字符集名称] [COLLATE 比较规则名称];

各级别字符集和比较规则小结

我们介绍的这4个级别字符集和比较规则的联系如下:

如果创建或修改列时没有显式的指定字符集和比较规则,则该列默认用表的字符集和比较规则

如果创建或修改表时没有显式的指定字符集和比较规则,则该表默认用数据库的字符集和比较规则

如果创建或修改数据库时没有显式的指定字符集和比较规则,则该数据库默认用服务器的字符集和比较规则

MySQL中字符集的转换

我们知道从客户端发往服务器的请求本质上就是一个字符串,服务器向客户端返回的结果本质上也是一个字符串,而字符串其实是使用某种字符集编码的二进制数据。这个字符串可不是使用一种字符集的编码方式一条道走到黑的,从发送请求到返回结果这个过程中伴随着多次字符集的转换,在这个过程中会用到3个系统变量,我们先把它们写出来看一下:

系统变量描述

character_set_client

服务器解码请求时使用的字符集

character_set_connection

服务器处理请求时会把请求字符串从character_set_client转为character_set_connection

character_set_results

服务器向客户端返回数据时使用的字符集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值