理解MySql字符集

2019-09-18 10:09:05 浏览数 (1)

# 理解MySql字符集

# 字符集

字符集即为字符编码的集合。

常用的编码格式为:ASCII Unicode-8 Unicode-16 Unicode-32 GB2312 等 ,

其中GB2312主要用于【简体汉字】的编码,而BIG5是【繁体汉字】的编码格式,不同的语言文字都有自己的编码格式,其中Unicode编码是一种通用的编码格式,目的是为了同时兼容不同的语言文字编码。

# 字符序

字符序即字符编码集合中每个字符的顺序。

例如:A的十进制可以表示为65,a为97,其中65<97也就是说在字符集中A的顺序在a的前面,但这只是对计算机而言的,因为计算机认识的是二进制语言,对于人来说我们可以理解为A=a,只是书写的形式不同而已。

在字符集中每一个字符都有它自己的顺序,不存在两个字符拥有相同的字符编码。但在数据库中不同,mysql也是如此,所以才会定义出字符序的概念,A与a编码不同,但在数据库中我们可以按照字符序把这两个字符看做相同的,那么也就是说当你选择了不同的字符序时可能A与a表现出来的大小关系也会随着变化。

# MySql中的字符集

MySql是一款关系型数据库,它存储的数据不应该受限于特定的语言文字,所以它支持不同字符集。

通常在数据的存储过程中,为了管理的方便,会将数据不同的数据集合做一下归类,比如:一个数据库是有一个或多个database构成,那么多个table又构成了一个database,table又是由行构成,行的最小单位又为列,列才是我们真正存储数据的地方:要储存必然离不开编码的问题。所以MySQL中我们可以按照这种虚拟关系对:database,table,column分别设置字符集,而它们使用字符集的优先关系为:column > table > database。

# 设置修改MySql中的字符集

  1. MySql默认字符集 在安装MySql的时候我们可以通过源码编译的方式设置字符集,当然这种安装方式比较难就不做说明了,真实的环境中这么做的好处并不明显。
  2. 修改MySql默认字符集 通过配置文件修改默认字符集,如果在创建database的时候我们没有指定字符集,则该设置会默认应用于database上。 # 该配置项会修改默认的字符集编码格式 [mysqld] character-set-server=utf8
  3. 通过环境变量设置字符集 这种方式也不常用,更何况这个docker盛行的年代,如果需要请自行google一下吧。
  4. 设置database的字符集 CREATE DATABASE test CHARACTER SET utf8 COLLATE utf8_general_ci # 修改现有数据库的字符集 alter database test character set utf8 collate utf8_bin
  5. 这是table的字符集 CREATE TABLE [table]( id varchar(40), str varchar(40) ) CHARSET=utf8mb4 COLLATE=utf8mb4_bin # 修改现有表的字符集 alter table [table] CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin
  6. 设置column的字符集 CREATE TABLE [table]( id varchar(40), str varchar(40) charset utf8mb4 collate utf8mb4_bin ) # 修改现有列字符集 alter table [table] change str str varchar(100) character set utf8 collate utf8_bin

# 其它帮助项

查看支持的字符集

代码语言:javascript复制
# 两种方法查看支持的字符集
方法一: 
show character set;
//方法二:
use information_schema;
select * from character_sets;

# 两种方式查看支持的字符序
# 方式一:
show collation;
# 方式二:
use information_schema;
select * from collations;

查看MySql字符集

代码语言:javascript复制
# 查看字符集
show variables like 'character_set_server';

# 查看字符序
show variables like 'collation_server';

查看数据库字符集

代码语言:javascript复制
show create database [dbname];

查看表字符集

代码语言:javascript复制
show create table [table]

查看列字符集

代码语言:javascript复制
show full columns from [table]

0 人点赞