当前位置: 首页 > article >正文

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 判定是一样的,无法录入数据库。
 


http://www.kler.cn/news/329927.html

相关文章:

  • 架构视图和视角
  • 【重学 MySQL】四十六、创建表的方式
  • 2024 全新体验:国学心理 API 接口来袭
  • ES索引生命周期管理
  • 一次oracle迁移11g到19c后用到的对象数量对比脚本
  • Golang 服务器虚拟化应用案例
  • Django学习笔记四:urls配置详解
  • Geoserver关于忘记密码的解决方法
  • 无头双向不循环链表的模拟
  • 千兆网络变压器HX84801SP POE应用主板
  • 秋招|面试|群面|求职
  • 服务架构的演进之路:从单体应用到Serverless
  • 【初阶数据结构】排序——归并排序
  • Stable Diffusion绘画 | 来训练属于自己的模型:打标处理与优化
  • 接口测试入门:深入理解接口测试!【电商API接口测试】
  • 【Qt】系统相关学习--底层逻辑--代码实践
  • 【Redis】主从复制(上)
  • linux文件编程_进程通信
  • 《中安未来护照阅读器 —— 机场高效通行的智慧之选》
  • 一、前后端分离及drf的概念
  • 15 种高级 RAG 技术 从预检索到生成
  • Linux开发讲课45--- 链表
  • 音视频入门基础:FLV专题(8)——FFmpeg源码中,解码Tag header的实现
  • 【重学 MySQL】五十一、更新和删除数据
  • 没有做商标变更,还做不成商标复审!
  • 自动化运维工具 Ansible
  • C++ 隐式内联函数
  • VSCODE驯服日记(四):配置SFML图形环境
  • 波阻抗,是电场矢量的模值/磁场矢量的模值
  • SQL常用语法