MySQL踩坑点:字符集和排序规则

一、utf8 和utf8mb4

1、utf8  不支持生僻字和表情包等

2、utfmb4  支持生僻字和表情包等

在国内,使用最多就是这两个字符集。

二、mysql的默认排序规则

1、字符集utf8的默认排序规则:

  • uft8_general_ci,  不区分大小写
  • uft8_bin, 区分大小写

2、字符集utfmb4的默认排序规则:

  • utf8mb4_general_ci  ,不区分大小写
  • uft8mb4_bin ,  区分大小写

三、新建时自定义排序规则

3.1、新建库时指定

1、uft8字符集,utf8_bin排序规则

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin;

2、utf8mb4字符集,utf8mb4_bin排序规则

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin;

3.2、创建表时,指定字段

1、uft8字符集,utf8_bin排序规则

CREATE TABLE my_table (
    id INT PRIMARY KEY AUTO_INCREMENT,
    column_name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin
);

2、utf8mb4字符集,utf8mb4_bin排序规则

CREATE TABLE another_table (
    id INT PRIMARY KEY AUTO_INCREMENT,
    column_name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
);

四、修改现有库和表

4.1、修改库

注意:

  • 已经存在的表,无法因为数据库被修改而修改。

  • 修改的库,新建的表就是使用修改后的排序方式了

1、查看数据库的字符集和排序规则

SHOW CREATE DATABASE your_database_name;

2、修改数据库的字符集和排序规则

字符集修改成utf8,排序规则修改成utf8_bin:

ALTER DATABASE your_database_name CHARACTER SET utf8 COLLATE utf8_bin;

字符集修改成utf8mb4,排序规则修改成utf8mb4_bin:

ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

4.2、修改表

1、查看表的字符集和排序规则

SHOW CREATE TABLE your_table_name;

2、修改表的字符集和排序规则

utf8字符集和utf8_bin排序规则:

ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;

utf8mb4字符集和utf8mb4_bin 排序规则:

ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

五、短链系统

1、自建一个短链系统时,使用mysql做存储,创建表时,没有去自定义排序方式。

2、使用的短链生成方式:使用自增id值,对base62取模求余,通过余数去循环获取字符,拼接成code。

3、用来存短链code的字段设置了unique唯一性限制,使用字符集uft8,使用默认排序方式是不区分大小写。

4、导致记录到表时出现唯一性报错了,5tc 与5tC 判定是一样的,无法录入数据库。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值