博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL 中的字符集和校对规则
阅读量:4221 次
发布时间:2019-05-26

本文共 2443 字,大约阅读时间需要 8 分钟。

1、查看当前数据库支持的字符集和校对规则

(1)查看字符集:SHOW CHARSET;

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

| Charset  | Description                 | Default collation   | Maxlen |

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

| big5      | Big5 Traditional Chinese    | big5_chinese_ci     |      2 |

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

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

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

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

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

我们常用的支持中文的字符集UTF-8 Unicode,默认的校对规则是utf8mb4_general_ci(这个一般要改为utf8_bin,即大小写敏感),注意:这个以_ci后缀是大小写不敏感的。Maxlen表示当前字符集每个字符可能占用的最大字节数。

(2)校对规则:SHOW COLLATION;

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

| 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_unicode_520_ci      | utf8     | 214 |         | Yes      |       8 |

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

查看校对规则,可以看到utf8的校对规则,大致可以分为两类:其中一类是以_ci结尾,是大小写不敏感,另一类是以_bin结尾,是以二进制存储的,是大小写敏感的。

补充知识点:

校对规则以_cs、_bin结尾的是大小写敏感。

校对规则以_bin结尾的是大小写不敏感的。

(3)举个栗子:

创建表如下:

CREATE TABLE tbl_alter_table(

id INT UNSIGNED NOT NULL AUTO_INCREMENT,

name VARCHAR(20) NOT NULL COLLATE utf8_general_ci,

PRIMARY KEY(id)

)ENGINE INNODB DEFAULT CHARSET=utf8 COLLATE utf8_bin;

这里将整个表的默认字符集设置为utf8,默认校对规则设置为utf8_bin(大小写敏感),但是字段name中的校对规则我们设置为utf8_general_ci(大小写不敏感)。

注意:上述建表语句被修改为如下:

CREATE TABLE `tbl_alter_table` (

  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,

  `name` varchar(20) CHARACTER SET utf8 NOT NULL,

  PRIMARY KEY (`id`)

)ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_bin 

即使int被改为int(10)其实和int是一样的,占用内存仍是32位。

另外:需要注意的是CHARACTER SET utf8应该是使用默认的校对规则,大小写不敏感。

测试输入一些数据:

INSERT INTO tbl_alter_table (name) values (‘tim’);

INSERT INTO tbl_alter_table (name) values (‘TIM’)

查看根据WHERE条件中字段nam=‘tim’,看输出的结果:

SELECT * FROM tbl_alter_table WHERE name=’tim’;

输出结果为:

mysql> SELECT * FROM tbl_alter_table WHERE name='tim';

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

| id | name |

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

|  1 | tim  |

|  2 | TIM  |

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

说明根据大小写不敏感区查询tim会查出所有大小写不敏感的tim。

补充知识点:

字符集和校对规则的覆盖原则是数据库设置<表设置<字段设置

即:如果没有设置则用上一级默认的规则。

转载地址:http://wqomi.baihongyu.com/

你可能感兴趣的文章
libgdx: 2D Particle Editor工具使用
查看>>
eclipse 给jar库添加源码
查看>>
3.0正式版环境搭建(4)-- 运行(3)创建的工程
查看>>
C++ 枚举声明 enum 和 enum class
查看>>
Python optionParser模块的使用方法
查看>>
android 消灭星星出错
查看>>
PyCharm 教程(三)Hello world!
查看>>
PyCharm: 显示源码行号
查看>>
cocos2dx使用第三方字库.ttf,需要注意的事项
查看>>
cocos2dx 音频模块分析(4): 音效部分
查看>>
cocos2dx 音频模块分析(5): 音效部分
查看>>
19、Cocos2dx 3.0游戏开发找小三之Action:流动的水没有形状,漂流的风找不到踪迹、、、
查看>>
cocos2.X版本lua端使用定时器的方法
查看>>
lua math.fmod使用注意小数问题
查看>>
lua 时间转化
查看>>
lua学习笔记之五(Lua中的数学库)
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第一篇:互联网时代U盘化生存方式 【张振华.Jack】
查看>>
CentOS6.4配置Hadoop-2.6.0集群配置安装指南(经过实战演练)【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第二篇:专注的力量 [张振华.Jack]
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第三篇:我的舍与得的2014[张振华.Jack]
查看>>