在本教程中,您将了解MySQL校对规则以及如何设置MySQL服务器,数据库,表和列的字符集和校对规则。

MySQL校对规则简介

MySQL校对规则是用于比较特定字符集中的字符的一组规则。 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 |

| cp850 | DOS West European | cp850_general_ci | 1 |

| hp8 | HP West European | hp8_english_ci | 1 |

| koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 |

| latin1 | cp1252 West European | latin1_swedish_ci | 1 |

| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |

| swe7 | 7bit Swedish | swe7_swedish_ci | 1 |

| ascii | US ASCII | ascii_general_ci | 1 |

| ujis | EUC-JP Japanese | ujis_japanese_ci | 3 |

| sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 |

| hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 |

| tis620 | TIS620 Thai | tis620_thai_ci | 1 |

| euckr | EUC-KR Korean | euckr_korean_ci | 2 |

| koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 |

| gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 |

| greek | ISO 8859-7 Greek | greek_general_ci | 1 |

| cp1250 | Windows Central European | cp1250_general_ci | 1 |

| gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 |

| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |

| armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 |

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

| ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 |

| cp866 | DOS Russian | cp866_general_ci | 1 |

| keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 |

| macce | Mac Central European | macce_general_ci | 1 |

| macroman | Mac West European | macroman_general_ci | 1 |

| cp852 | DOS Central European | cp852_general_ci | 1 |

| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |

| utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 |

| cp1251 | Windows Cyrillic | cp1251_general_ci | 1 |

| utf16 | UTF-16 Unicode | utf16_general_ci | 4 |

| utf16le | UTF-16LE Unicode | utf16le_general_ci | 4 |

| cp1256 | Windows Arabic | cp1256_general_ci | 1 |

| cp1257 | Windows Baltic | cp1257_general_ci | 1 |

| utf32 | UTF-32 Unicode | utf32_general_ci | 4 |

| binary | Binary pseudo charset | binary | 1 |

| geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 |

| cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 |

| eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 |

| gb18030 | China National Standard GB18030 | gb18030_chinese_ci | 4 |

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

41 rows in set

默认校对规则列的值指定字符集的默认校对规则。

按照惯例,字符集的校对规则以字符集名称开头,以_ci(不区分大小写)_cs(区分大小写)或_bin(二进制文件)结尾。

要获取给定字符集的所有校对规则,请使用SHOW COLLATION语句如下:

SHOW COLLATION LIKE 'character_set_name%';

例如,要获取latin1字符集的所有校对规则,请使用以下语句:

SHOW COLLATION LIKE 'latin1%';

执行上面语句,得到用于latin1字符集的MySQL校对规则,如下结果 -

mysql> SHOW COLLATION LIKE 'latin1%';

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

| Collation | Charset | Id | Default | Compiled | Sortlen |

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

| latin1_german1_ci | latin1 | 5 | | Yes | 1 |

| latin1_swedish_ci | latin1 | 8 | Yes | Yes | 1 |

| latin1_danish_ci | latin1 | 15 | | Yes | 1 |

| latin1_german2_ci | latin1 | 31 | | Yes | 2 |

| latin1_bin | latin1 | 47 | | Yes | 1 |

| latin1_general_ci | latin1 | 48 | | Yes | 1 |

| latin1_general_cs | latin1 | 49 | | Yes | 1 |

| latin1_spanish_ci | latin1 | 94 | | Yes | 1 |

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

8 rows in set

如上所述,每个字符集都具有默认校对规则,例如latin1_swedish_ci是latin1字符集的默认校对规则。

设置字符集和校对规则

MySQL允许您在四个级别指定字符集和校对规则:服务器,数据库,表和列。

在服务器级别设置字符集和校对规则

注意MySQL使用latin1作为默认字符集,因此,其默认校对规则为latin1_swedish_ci。 您可以在服务器启动时更改这些设置。

如果在服务器启动时仅指定一个字符集,MySQL将使用字符集的默认校对规则。 如果您明确指定了一个字符集和校对规则,MySQL将使用数据库服务器中的字符集和校对规则来创建的所有数据库。

以下语句通过命令行启动并设置服务器使用utf8字符集和utf8_unicode_cs校对规则:

$ mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci

在数据库级别设置字符集和校对规则

创建数据库时,如果不指定其字符集和校对规则,MySQL将使用数据库的服务器的默认字符集和校对规则。

CREATE DATABASE database_name

CHARACTER SET character_set_name

COLLATE collation_name

-- 修改校对规则

ALTER DATABASE database_name

CHARACTER SET character_set_name

COLLATE collation_name

MySQL在数据库级使用数据库中创建的所有表的字符集和校对规则。

在表级别设置字符集和校对规则

数据库可能包含与默认数据库的字符集和校对规则不同的字符集和校对规则的表。

当您通过使用CREATE TABLE语句创建表或使用ALTER TABLE语句更改表的结构时,可以指定表的默认字符集和校对规则。

CREATE TABLE table_name(

)

CHARACTER SET character_set_name

COLLATE collation_name

或者 -

ALTER TABLE table_name(

)

CHARACTER SET character_set_name

COLLATE collation_name

在列级别设置字符集和校对规则

CHAR,VARCHAR或TEXT类型的列可以使用与表的默认字符集和校对规则不同的,自己指定的字符集和校对规则。

可以按照CREATE TABLE或ALTER TABLE语句的列定义中的列指定字符集和校对规则,如下所示:

column_name [CHAR | VARCHAR | TEXT] (length)

CHARACTER SET character_set_name

COLLATE collation_name

以下是设置字符集和校对规则的规则:

如果显式指定字符集和校对规则,则使用字符集和校对规则。

如果指定一个字符集并忽略校对规则,则使用字符集的默认校对规则。

如果指定没有字符集的校对规则,则使用与校对规则相关联的字符集。

如果省略字符集和校对规则,则使用默认字符集和校对规则。

我们来看一些设置字符集和校对规则的例子。

设置字符集和校对规则的示例

首先,我们使用utf8作为字符集创建一个新数据库,将utf8_unicode_ci作为默认校对规则:

CREATE DATABASE mydbdemo

CHARACTER SET utf8

COLLATE utf8_unicode_ci;

因为明确指定mydbdemo数据库的字符集和校对规则,所以mydbdemo数据库不会在服务器级别采用默认字符集和校对规则。

其次,我们在mydbdemo数据库中创建一个名为t1的新表,但不指定字符集和校对规则:

USE mydbdemo;

CREATE TABLE t1(

c1 char(25)

);

如上所示,我们并没有为t1表指定字符集和校对规则; MySQL将检查数据库级别以确定t1表的字符集和校对规则。 在这种情况下,t1表将使用utf8作为默认字符集,utf8_unicode_ci作为默认校对规则。

第三,对于t1表,我们将其字符集更改为latin1,并将其校对规则改为latin1_german1_ci:

ALTER TABLE t1

CHARACTER SET latin1

COLLATE latin1_german1_ci;

t1表中的c1列使用latin1作为字符集,latin1_german1_ci作为校对规则。

第四,将c1列的字符集更改为latin1:

ALTER TABLE t2

MODIFY c1 VARCHAR(25)

CHARACTER SET latin1;

现在,c1列使用latin1字符集,但是它的校对规则呢? 是否从表的校对规则继承了latin1_german1_ci校对规则? 不是的,因为latin1字符集的默认校对规则是latin1_swedish_ci,所以c1列具有latin1_swedish_ci校对规则。

在本教程中,您已经了解了MySQL校对规则以及如何为MySQL服务器,数据库,表和列指定字符集和校对规则。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

mysql设置校对规则_MySQL校对规则相关推荐

  1. mysql设置字符集命令_mysql命令设置字符集

    2页 1财富值 修改数据库字符集 2页 2财富值 mysql字符集 3页 2财富值 MySQL字符集 3页 免费 MySQL字符集问题 7页 2财富值喜欢此文档的还喜欢 ...... 默认字符集的方法 ...

  2. mysql设置user_name唯一_mysql如何设置唯一性

    mysql设置唯一性的方法: 1.命令行操作 分为两种.一种是在建表时就想好要加上唯一性,另一种是在后期才发现需要设置唯一性. 建表时:CREATE TABLE `t_user` ( `Id` int ...

  3. mysql 设置为空_MySQL中可为空的字段设置为NULL还是NOT NULL

    经常用mysql的人可能会遇到下面几种情况: 1.我字段类型是not null,为什么我可以插入空值 2.为什么not null的效率比null高 3.判断字段不为空的时候,到底要用 select * ...

  4. mysql校对规则_MYSQL校对规则

    一.前言 有时候遇到这种情况,你用一个like语句查询,查到的结果中有一些并没有包含你查询的关键词的纪录: 有时候遇到这种情况,你的数据库自作聪明的大小写不敏感,让你在更新时把大小写不同的两条记录都更 ...

  5. mysql设置外键_mysql怎么增加外键

    mysql增加外键的方法:1.在CREATE TABLE语句中,通过FOREIGN KEY关键字来添加外键:2.在ALTER TABLE语句中,通过ADD和FOREIGN KEY关键字来添加外键. M ...

  6. mysql设置主键_mysql如何添加主键?

    "主键(PRIMARY KEY)"的完整称呼是"主键约束".MySQL 主键约束是一个列或者列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键 ...

  7. mysql 设置查询变量_MySQL查询优化--调整内部变量的详解

    MySQL是如此的开放,所以可轻松地进一步调整其缺省设置以获得更优的性能及稳定性.需要优化的一些关键变量如下: 改变索引缓冲区长度(key_buffer) 一般,该变量控制缓冲区的长度在处理索引表(读 ...

  8. mysql设置定时入伍_mysql 集群自动化配置

    #!/bin/sh #文 件 名: autogen_mysql.sh #功 能: 自动生成Mysql集群配置文件,生成环境自动部署,自动运行脚本等 #创建时间: 2012-02-05 #自动化生成的文 ...

  9. mysql设置数据库同步_MySQL数据库配置主从同步

    1.环境说明:DB master: 172.16.1.55 DB slave:172.16.1.56 2.Server-id 配置(/etc/my.cnf): 主库配置server-id要比从库的ID ...

  10. mysql设置id起点_mysql自增ID起始值修改方法

    在MysqL中很多朋友都认为字段为AUTO_INCREMENT类型自增ID值是无法修改,其实这样理解是错误的,下面介绍MysqL自增ID的起始值修改与设置方法. 通常的设置自增字段的方法:创建表格时添 ...

最新文章

  1. linux 启动脚本 tty,Linux启动过程简介
  2. 光有面罩不是能防护的
  3. MacOS 的 zsh 和 bash 切换
  4. 奇安信代码安全实验室帮助谷歌修复高危漏洞,获官方致谢
  5. 搭建ftp服务器根目录文件夹,ftp服务器根目录传文件夹
  6. Spring框架中的aop操作之一 及aspectjweaver.jar与aopalliance-1.0.jar下载地址 包含beans 注解context 和aop的约束
  7. 什么样的Java程序员可以去BAT公司上班?
  8. 移动数据统计平台分析
  9. 显卡组超级计算机,NVIDIA发布全新显卡 在家就能拥有超级计算机
  10. 两行代码激活windows系统
  11. 教你怎样查询快递查询单号并保存物流信息
  12. 备战蓝桥杯单片机倒数第四天 小蜜蜂老师公众号更新内容
  13. 环信群聊头像和发送gif图片
  14. 提问的艺术 | 如何聪明地提问
  15. GLES2.0中文API-glBlendFuncSeparate
  16. 数字电路 常用组合逻辑电路
  17. 基于openCV的视频人脸识别——演员的诞生视频人脸识别
  18. Flutter版本管理器-FVM
  19. shell脚本--let、expr、bc、scale的用法
  20. 终于解决了QQ互联总是系统繁忙,请稍后再试的问题。内详!

热门文章

  1. hyperv 安装xp
  2. 每日一题: 第十四题
  3. Supervisor管理springboot应用
  4. 如何设置无需fn直接按F1~F10(HP Pavilion Notebook )
  5. 微信小程序如何实现点击地图控件后位置移动到当前的定位点
  6. Python遥感开发之GDAL读写遥感影像
  7. 微信投票显示服务器异常,为何微信投票显示账号异常
  8. unity学习笔记(二)—— 制作第一个小游戏
  9. Qt系列文章之 mousePressEvent
  10. 就业指导期末试题(含正确答案)