Mysql数据库字符集支持(看这一篇你就能了解mysql字符集和校对规则了)

什么是Mysql字符集?什么是校对规则?

        字符集是一套符号和编号。校对规则是在字符集内用于比较字符的一套规则。宇符(character)是人类语言中最小的表义符号。例如字母A、B等:给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encoding)。例如,我们给字符A赋子数值 0,给字符B赋予数值 1,则0就是字符A的编码,1就是字符B的编码;给定一系列宇符并赋子对应的编码后,所有这些字符和编码对组成的集合就是字符集(Character Set)。其实很好理解,就是相当于大家去菜鸟取件,每个取件码对应一个取物柜。但每个取物柜里面不一定只有一个快递哦!这个接下来会有体现。

        校对规则是指在同一字符集内字符之间的比较规则;确定校对规则后,才能在一个字符集上定义什么是等价的字符,以及字符之间的大小关系。

注意:

        每个校对规则唯一对应一种字符集;

        一个字符集可以对应多种校对规则,其中有一个是默认校对规则(Default Collation);

        两个不同的字符集不能有相同的校对规则。

服务器、数据库、表、列都可以选择不同的字符集(有小伙伴就会想每个使用不同的字符集和规则不会有问题吗?当然是不会的啦!只要是在所支持的范围内,会根据校对规则进行转换的哦~) 

mysql> show collation;  #列出校对规则
mysql> show character set;  #列出可用字符集
mysql> show variables like 'character%'; #列出默认字符集
mysql> show variables like 'character_%'; #列出默认字符集




#服务器字符集和校对规则
#Mysql服务器又一个服务器字符集和一个服务器校对规则,且不能为空
#设置字符集和校对规则,不设置则默认为latin1、latinl_swedish_ci
#下面三串代码的效果是一样的
mysald
mysqld --default-character-set=latin1
mysqId --default-character-set=latinl --default-collation=latinl_swedish_ci


#数据库字符集和校对规则
#每一个数据库都有一个数据库字符集和数据库校对规则,且不能为空
#如果没有指定则默认为服务器字符集和校对规则
create database b_name default CHARACTER SET latin1 COLLATE latin1_swedish_ci;


#表字符集和校对规则
#每个表拥有一个字符集规则和校对规则,且不能为空
create table t1 ( ... ) default CHARACTER SET latin1 COLLATE latin1_danish_ci;


#列字符集和校对规则
#每列拥有一个字符集规则和校对规则,且不能为空
#如果没有指定则默认表字符集和校对规则
create table table1
(
column1 VARCHAR(5) CHARACTER SET latin1 COLLATE 	latin1_german1_ci
);


#查看字符集和校对规则

#修改字符集和校对规则

#设置默认字符集

mysql> set character_set_client=utf8;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> show variables like 'character%';
+--------------------------+------------------------------------------------------+
| Variable_name            | Value                                                |
+--------------------------+------------------------------------------------------+
| character_set_client     | utf8mb3                                              |
| character_set_connection | utf8mb4                                              |
| character_set_database   | utf8mb4                                              |
| character_set_filesystem | binary                                               |
| character_set_results    | utf8mb4                                              |
| character_set_server     | utf8mb4                                              |
| character_set_system     | utf8mb3                                              |
| character_sets_dir       | /usr/local/mysql-8.2.0-macos13-arm64/share/charsets/ |
+--------------------------+------------------------------------------------------+
8 rows in set (0.01 sec)

大家可以根据自己需要进行相关变量配置,也可以根据上面代码进行熟悉练习~

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ApLinuxor

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值