mysql复习笔记三:字符集(CHARACTER )与校对/排序规则(COLLATE)

一、示例sql:

CREATE TABLE test_index(
	id BIGINT auto_increment  COMMENT '主键',
	PRIMARY key(id) COMMENT '主键',
	user_name VARCHAR(64) not null COMMENT '用户名',
	nick_name VARCHAR(64) not null COMMENT '姓名',
	INDEX name(user_name,nick_name) COMMENT '用户名称',
	age INT(3) not null COMMENT '年龄',
	`code` VARCHAR(21) not null COMMENT '唯一代码',
	UNIQUE(`code`)  COMMENT '唯一代码',
	phone VARCHAR(11) COMMENT '联系电话',
	create_by BIGINT(64) not null COMMENT '创建者',
	create_time datetime not null COMMENT '创建时间'
)CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,COMMENT = '测试索引表',ENGINE = InnoDB;

二、字符集:

2.1对应代码片段:

CHARACTER SET utf8mb4

2.2字符集介绍:

        在MySQL中创建表时,可以选择不同的字符集(character set),这会直接影响到字符的存储和处理方式。不同的字符集能够支持不同语言的字符编码,这对于国际化或多语言的应用尤其重要。

2.2.1以下是一些常见的MySQL字符集及其区别:

(1). **ASCII**
         这是最基本的字符集,仅支持英文和部分控制字符,共128个字符。
         每个字符占用1字节。

(2). **GBK**
         主要用于简体中文,是GB2312的扩展,支持更多的汉字和符号。
         每个字符占用1或2字节。

(3). **GB2312**
         最初的简体中文字符集,支持较少的汉字和符号。
         每个字符占用2字节。

(4). **BIG5**
         用于繁体中文,支持繁体汉字和符号。
         每个字符占用2字节。

(5). **UTF8**(通常指的是`utf8mb3`)
          支持世界上大多数语言的字符,包括中文、日文、韩文等。
          每个字符占用1到3字节,对于ASCII字符集中的字符只占用1字节。

(6). **UTF8MB4**
          这是完整的UTF-8字符集,支持所有Unicode字符,包括表情符号和其他辅助平面字符。
          每个字符占用1到4字节。

2.2.2选择字符集时,需要考虑以下几个因素:
        **存储空间**:多字节字符集比单字节字符集占用更多空间。
        **性能**:多字节字符集可能会影响查询性能,尤其是在全文索引和字符串比较操作上。
        **字符支持**:需要确保所选字符集能支持应用程序中使用的全部字符。

在创建表时,可以使用`CREATE TABLE`语句的`CHARACTER SET`或`CHARSET`子句来指定字符集

三、校对/排序规则:

在MySQL中,字符集通常会伴随一个排序规则(collation),它定义了字符的排序和比较方式。例如:

utf8mb4_general_ci

`utf8mb4_general_ci`表示不区分大小写的排序规则,`utf8mb4_general_cs`表示区分大小写,而`utf8mb4_bin`则表示二进制比较,即区分大小写和特殊字符。

四、注意事项:

1、字符集(CHARACTER ):选错字符集,可能导致有些内容无法存储,比如emoj表情

2、校对/排序规则(COLLATE):两张表不同的规则可能导致无法联表,列入下图:

我的test_index表采用了`utf8mb4_general_ci`规则,test_join采用了`utf8mb4_unicode_ci`规则

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值