mysql collation 选哪个_Mysql系列(四) —— MySQL的Charset和Collation

本文深入探讨了MySQL中的字符集和字符序概念,包括它们的基本定义、MySQL支持的字符集与字符序、设置层级以及如何查看和选择。字符集决定了字符编码,而字符序用于比较字符。MySQL允许在server、database、table和column级别设置字符集和字符序。正确的设置对于避免乱码和确保数据比较的准确性至关重要。文章列举了如何查看MySQL支持的字符集和字符序,并讨论了创建数据库和表时如何指定字符集和字符序。
摘要由CSDN通过智能技术生成

一.内容概述

在MySQL的使用过程中,了解字符集、字符序的概念,以及不同设置对数据存储、比较的影响非常重要。不少同学在日常工作中遇到的“乱码”问题,很有可能就是因为对字符集与字符序的理解不到位、设置错误造成的。

本文由浅入深,分别介绍了如下内容:

字符集、字符序的基本概念及联系

MySQL支持的字符集、字符序设置级,各设置级别之间的联系

server、database、table、column级字符集、字符序的查看及设置

应该何时设置字符集、字符序

二.字符集、字符序的概念与联系

在数据的存储上,MySQL提供了不同的字符集支持。而在数据的对比操作上,则提供了不同的字符序支持。

MySQL提供了不同级别的设置,包括server级、database级、table级、column级,可以提供非常精准的设置。

什么是字符集、字符序?简单的来说:

字符集(character set):定义了字符以及字符的编码。

字符序(collation):定义了字符的比较规则。

举个例子:

有四个字符:A、B、a、b,这四个字符的编码分别是A = 0, B = 1, a = 2, b = 3。这里的字符 + 编码就构成了字符集(character set)。

如果我们想比较两个字符的大小呢?比如A、B,或者a、b,最直观的比较方式是采用它们的编码,比如因为0 < 1,所以 A < B。

另外,对于A、a,虽然它们编码不同,但我们觉得大小写字符应该是相等的,也就是说 A == a。

这上面定义了两条比较规则,这些比较规则的集合就是collation。

同样是大写字符、小写字符,则比较他们的编码大小;

如果两个字符为大小写关系,则它们相等。

三、MySQL支持的字符集、字符序

MySQL支持多种字符集 与 字符序。

一个字符集对应至少一种字符序(一般是1对多)。

两个不同的字符集不能有相同的字符序。

每个字符集都有默认的字符序。

上面说的比较抽象,我们看下后面几个小节就知道怎么回事了。

1.查看支持的字符集

可以通过以下方式查看MYSQL支持的字符集。

方式一:

mysql> SHOW CHARACTER SET;

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

| Charset | Description | Default collation | Maxlen |

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

| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |

| dec8 | DEC West European | dec8_swedish_ci | 1 |

...省略

方式二:

mysql> use information_schema;

mysql> select * from CHARACTER_SETS;

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

| CHARACTER_SET_name | DEFAULT_COLLATE_name | DESCRIPTION | MAXLEN |

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

| big5 | big5_chinese_ci | Big5 Traditional Chinese | 2 |

| dec8 | dec8_swedish_ci | DEC West European | 1 |

...省略

当使用SHOW CHARACTER SET查看时,也可以加上WHERE或LIKE限定条件。

例子一:使用WHERE限定条件。

mysql> SHOW CHARACTER SET WHERE Charset="utf8";

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

| Charset | Description | Default collation | Maxlen |

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

| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |

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

1 row in set (0.00 sec)

例子二:使用LIKE限定条件。

mysql> SHOW CHARACTER SET LIKE "utf8%";

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

| Chars

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值