MYSQL字符集和字符序

**

字符集定义:

字符是人类语言最小的表意符号,例如‘A’,‘B’等,给定一系列字符,并对每个字符赋予一个数值,用数值来代表对应的字符,这个数值就是字符的编码。俩如,假设给字符‘A’赋予整数65,给字符‘B’赋予整数66,则65就是字符‘A’的编码,66就是字符‘B’的编码。给定一系列字符并赋予对应的编码后,所有这些字符和编码对的集合就是字符集。

字符序(collation)定义:

字符序是指在同一字符集内字符之间的比较规则。只有确定字符序后,才能在一个字符集上定义什么是等价的字符,以及字符之间的大小关系。一个字符集可以包含多种字符序,每个字符集有一个默认的字符序(default collation),每个字符序唯一对应一种字符集。

mysql字符序命名规则

以字符序对应的字符集名称开头,以国家名居中,以ci, cs或bin结尾。以ci结尾的字符序表示大小写不敏感,以cs结尾的字符序表示大小写敏感,以bin结尾的字符序表示按二进制编码值比较。例如,Latin1字符集有latin1_swedish_ci,latin1_general_cs,latin1_bin等字符序,器中在字符序latin1_swedish_ci规则中,字符’a’和’A’是等价的。

字符集的地区和存储

不同的字符集支持不同地区的字符,例如latin1支持西欧字符,希腊字符,gbk支持中文简体字符,big5支持中文繁体字符,utf8几乎支持世界所有国家的字符。每种字符集占用的存储空间不相同。由于希腊字符比较少,占用一个8字节的存储空间即可表示所有latin1字符;中文简体字符较多,占用两个字节的存储空间才可以表示所有gbk字符;utf8字符数最多,通常需要占用3个字节的存储空间才可以表示世界上所有国家的所有字符。

查看字符集和字符序

(1)show character set;
查看当前MYSQL服务实例支持的字符集,字符集默认的字符序以及字符集占用的最大字节长度等信息。
在这里插入图片描述

(2)show variables like ‘character%’;
查看当前MYSQL服务实例使用的字符集
在这里插入图片描述

character_set_client : MYSQL客户机的字符集。
character_set_connection: 数据通信链路的字符集, 当MYSQL客户机向服务器发送请求时,请求数据以该字符集进行编码。
character_set_database: 数据库字符集
character_set_filesystem: MYSQL服务器文件系统的字符集,该值是固定的binary。
character_set_results : 结果集的字符集,MYSQL服务器向MYSQL客户机返回执行结果时,执行结果以该字符集进行编码。
character_set_server:MYSQL服务实例字符集
character_set_system:元数据(字段名,表名,数据库名等)的字符集,默认值utf8
(3)show collation
查看MYSQL服务实例支持的字符序
(4)show Variables like ‘collation%’;
查看当前MYSQL服务实例使用的字符序

字符集和字符序在MYSQL运行中的作用的地方

在命令提示符窗口中输入MYSQL命令或SQL语句,回车后,这些命令和语句转换为character_set_client定义的字符集。当命令语句沿着"通信链路"传送的时候,转换为character_set_connection定义的字符集。MYSQL服务实例收到数据通信链路中的命令语句,转换为character_set_server定义的字符集;若命令语句是针对某个数据库进行操作,此时则将character_set_database定义的字符集;得到执行结果设置为character_set_results定义的字符集;执行结果回传客户机后,转换为character_set_client字符集。

设置字符集和字符序

(5)set character_set_client = gbk;
修改当前会话的字符集
(6)set_collation_server = gbk_chinese_ci;
修改当前会话的字符序

字符集的使用

mysql字符集的设置可以细化到表,甚至可以是表的各个字段。创建数据库表时,如果没有设置字段的字符集,那么字段将沿用表的字符集,如果没有指定表的字符集,那么表将沿用数据库的字符集-character_set_database,如果没有指定数据库的字符集,那么数据库将沿用MYSQL服务实例的字符集character_set_server

设定字符集的方法

(1)修改my.ini配置文件(windows)或者my.cnf配置文件(linux)
将[mysql]选项组中的default_character_set参数值修改为gbk,则character_set_client,character_set_connection以及character_set_results参数的默认值修改为gbk。
将[mysqld]选项组中的character_ser_server参数值修改为gbk,则character_set_database以及character_set_server参数的默认值修改为gbk,保存修改后,重启即可。
(2)临时修改当前会话的字符集以及字符序
set character_set_client= gbk;
set collation_connection = gbk_chinese_ci;

(3)MYSQL命令"set names gbk"可以临时一次性设置

character_set_client,character_set_connection以及character_set_results的字符集为gbk。
(4)连接MYSQL服务器时指定字符集
mysql --default-character-set=字符集 -h 服务器ip -u 账户名 -p 密码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值