MySQL中的character set和collation

来自CloudWiki
Cloud17讨论 | 贡献2020年6月23日 (二) 08:54的版本
跳转至: 导航搜索

character set和collation的是什么

character set即字符集

我们常看到的UTF-8、GB2312、GB18030都是相互独立的character set。即对Unicode的一套编码。

collation即比对方法

用于指定数据集如何排序,以及字符串的比对规则。

每个character set会对应一定数量的collation。查看方法是在MySQL的Console下输入:

MariaDB [mxshop]> show collation like 'utf8%';

+--------------------------+---------+-----+---------+----------+---------+
| Collation                | Charset | Id  | Default | Compiled | Sortlen |
+--------------------------+---------+-----+---------+----------+---------+
| utf8_general_ci          | utf8    |  33 | Yes     | Yes      |       1 |
| utf8_bin                 | utf8    |  83 |         | Yes      |       1 |
| utf8_unicode_ci          | utf8    | 192 |         | Yes      |       8 |
| utf8_icelandic_ci        | utf8    | 193 |         | Yes      |       8 |
| utf8_latvian_ci          | utf8    | 194 |         | Yes      |       8 |
。。。
。。。
+--------------------------+---------+-----+---------+----------+---------+
47 rows in set (0.00 sec)

查看全局字符集

MariaDB [mxshop]> show variables like '%character%';

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

8 rows in set (0.00 sec)

MariaDB [mxshop]> show variables like 'collation%';

+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+

查看数据库字符集

MariaDB [mxshop]> show create database mydb2;


+----------+----------------------------------------------------------------+
| Database | Create Database                                                |
+----------+----------------------------------------------------------------+
| mydb2    | CREATE DATABASE `mydb2` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+

设置字符集

创建时设置

MariaDB [mxshop]> create database mydb3 CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Query OK, 1 row affected (0.00 sec)

MariaDB [mxshop]> show create database mydb3;

+----------+----------------------------------------------------------------------------------------+
| Database | Create Database                                                                        |
+----------+----------------------------------------------------------------------------------------+
| mydb3    | CREATE DATABASE `mydb3` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */ |
+----------+----------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

创建后设置

MariaDB [mxshop]> ALTER DATABASE mydb2 CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Query OK, 1 row affected (0.01 sec)

MariaDB [mxshop]> show create database mydb2;

+----------+----------------------------------------------------------------------------                                                                     ------------+
| Database | Create Database                                                                                                                                             |
+----------+----------------------------------------------------------------------------                                                                     ------------+
| mydb2    | CREATE DATABASE `mydb2` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_un                                                                     icode_ci */ |
+----------+----------------------------------------------------------------------------                                                                     ------------+
1 row in set (0.00 sec)


参考文档:https://www.cnblogs.com/yangmingxianshen/p/7999428.html

https://www.it1352.com/1658430.html