排序规则选择

mysql中utf8mb4_general_ci与utf8mb4_unicode_ci有什么区别呢?
为什么大家都使用utf8mb4_general_ci而不是utf8mb4_unicode_ci呢?

  1. 使用utf8mb4可以支持emoji表情存储,utf8不支持。
  2. utf8_binutf8_general_ci两者区别。
    ci是 case insensitive, 即 “大小写不敏感”, a 和 A 是一样的;
    bin 是二进制, a 和 A 不同.
    utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用。
    utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果
    utf8_bin 字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容
  3. utf8mb4_unicode_ciutf8mb4_general_ci两者区别。
    utf8mb4_unicode_ciutf8_general_ci对中、英文来说没有实质的差别。
    utf8mb4_general_ci校对速度快,但准确度稍差。
    utf8mb4_unicode_ci准确度高,但校对速度稍慢。
    如果你的应用有德语、法语或者俄语,请一定使用utf8mb4_unicode_ci
    一般用utf8mb4_general_ci就够了,到现在也没发现问题。
    对于数据库的使用,utf8mb4_general_ci 已经足够的准确,并且相较与 utf8mb4_unicode_ci速度上有优势,固可放心采用之。
-- 修改数据库排序规则
ALTER DATABASE base CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
-- 修改表的默认排序规则,表中字段排序规则不变
ALTER TABLE hello DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 修改表和表中字段的排序规则
ALTER TABLE hello CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 修改表中某个字段的排序规则
ALTER TABLE hello MODIFY name varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci default '' null comment '姓名' ;

如果一个数据库很多表都需要修改排序规则怎么办?

-- 查出指定库中所有不符合要求的排序规则表,并生成修正SQL
SELECT TABLE_SCHEMA                                                            '库名',TABLE_NAME                                                              '表名',TABLE_COLLATION                                                         '当前排序规则',CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME,' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') '修正SQL'
from information_schema.tables
where TABLE_SCHEMA = 'base'and TABLE_COLLATION != 'utf8mb4_general_ci';


复制修正SQL,批量执行。

批量修改指定库中的所有表字段排序规则

-- 批量拼接修改字段排序规则SQL
SELECT TABLE_SCHEMA                  '数据库',TABLE_NAME                    '表',COLUMN_NAME                   '字段',COLUMN_TYPE                   '字段类型',COLUMN_DEFAULT                '字段默认值',COLUMN_COMMENT                '字段注释',COLUMN_KEY                    '主键,唯一索引,非唯一索引',IS_NULLABLE                   '字段是否可为NULL',CHARACTER_SET_NAME            '原字符集',COLLATION_NAME                '原排序规则',CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' MODIFY COLUMN ', COLUMN_NAME, ' ', COLUMN_TYPE,' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci ',IF(IS_NULLABLE = 'NO', 'not null ', ''),IF(COLUMN_DEFAULT is null, ' ', CONCAT('default \'', COLUMN_DEFAULT, '\' ')), 'comment \'',COLUMN_COMMENT, '\';') '修正SQL'
FROM information_schema.`COLUMNS`
WHERE TABLE_SCHEMA = 'base'and COLLATION_NAME RLIKE 'utf8_general';

MySQL排序规则批量修改相关推荐

  1. MySQL学习笔记4:排序规则的修改

    数据库的字符集和排序规则优先级:字段级别>表级别>schema级别>服务器级别(实例级别),如果没有设置字段级别的字符集和排序规则,那么默认就取表的,如果表上也没有设置那就默认取sc ...

  2. mysql排序规则引发的一系列问题

    文章目录 mysql排序规则引发的一系列问题 背景 mysql默认的排序方式 mysql默认排序真的是按照主键进行排序的吗? 如何随机获取更优? mysql排序规则引发的一系列问题 背景 项目中提出需 ...

  3. MySQL 排序规则简介

    在日常工作中,对于MySQL排序规则,很少关注,大部分时候都是直接使用字符集默认的排序规则,常常忽视了排序规则的细节问题,了解排序规则有助于更好的理解MySQL字符比较和排序相关的知识 简述 说起排序 ...

  4. java mysql排序规则_在Java中使用MySQL排序规则

    精简版 我目前正在研究MySQL排序规则的问题以及它们如何影响一组值(使用Hibernate映射,但现在这不重要).我希望使用与MySQL使用相同的排序规则来设置一组字符串.例如.我希望"f ...

  5. Mysql 排序规则-大小写问题

    Mysql 排序规则-大小写问题 xxx_bin:每个字符串用二进制数据编译存储. 查询时区分大小写. xxx_general_cs: 查询时区分大小写. xxx_general_ci:查询时不区分大 ...

  6. mysql字符排序规则utf8mb4_0900_ai_ci修改为utf8_general_ci

    目录标题 0.[一定注意] 1. 查看排序规则 2. 数据库修改 3. 字段修改 4. 表修改 0.[一定注意] 表不能有外键 ,可以有索引 1. 查看排序规则 show variables wher ...

  7. linux中修改mysql排序规则_MySQL中的排序规则

    MySQL中的排序规则.在新建MySQL数据库或表的时候经常会选择字符集和排序规则.数据库用的字符集大家都知道是怎么回事,那排序规则是什么呢? 排序规则:是指对指定字符集下不同字符的比较规则.其特征有 ...

  8. MySQL排序规则修改语句

    -- ------------------------------------------ 表排序规则---------------------------- SELECT 'ALTER TABLE ...

  9. mysql排序规则错误_MySQL中“非法混合排序规则”错误的疑难解答

    阿波罗的战车 更改字符串的一个(或两者)的排序规则以使它们匹配,或者添加一个COLLATE从句到你的表情.这"校对"到底是什么?如下文所述字符集和排序规则:A 字符集是一组符号和编 ...

最新文章

  1. python积分管理系统_python实现每天自动签到领积分的示例代码
  2. 创业思路(1) - 收藏夹分享平台
  3. wp网站链接不带html,解决WordPress网站带与不带WWW网址跳转问题
  4. 论文阅读课8-Chinese Relation Extraction with Multi-Grained Information and External Linguistic Knowledge
  5. Linux工作笔记-ssh中-X属性的使用(Linux传界面)
  6. MySQL中AES_ENCRYPT('密码','钥匙')函数 可以对字段值做加密处理
  7. 正则表达式在NLP的基本应用
  8. 拓端tecdat|R语言极值推断:广义帕累托分布GPD使用极大似然估计、轮廓似然估计、Delta法
  9. Oracle导入导出之dmp
  10. OGNL表达式的介绍
  11. php++jsapi,jsapi:云之家js-api文档 - 云之家·开放平台
  12. 项目管理软件推荐:项目计划变更管理太方便了
  13. 估算CarSim中车辆轮胎的纵向刚度与侧向刚度
  14. markdown在.html中生成目录
  15. 测试hadoop服务器NodeManager无法连接ResourceManager问题
  16. 下载Synechococcus elongatus UTEX 2973(accession no.为GCA_000817325.1 )的基因组注释文件,统计其中染色体序列(CP006471.1)前10
  17. 三年半经验,蚂蚁头条快手怎么选?网友:第一次看到头条比快手offer低的
  18. 05_解决mac百度网盘下载速度慢问题
  19. ORB-SLAM2代码详解09: 闭环线程LoopClosing
  20. 猫猫学IOS(十八)UI之QQ聊天布局_键盘通知实现自动弹出隐藏_自动回复

热门文章

  1. canvas简单的粒子效果的实现
  2. 浅谈线上教学--致2019年的那个寒冬
  3. 100个人围成一个圈(编号从1到100),然后报数,报到3的下去,然后从4开始继续从1开始报数,报到3的下去,依此类推,最后剩下人的编号是?
  4. Construct2小游戏制作体验及新手指南
  5. YOLOV5目标检测记录
  6. C++ stoi()函数的用法
  7. 计算机视觉(十五):综合案例:垃圾分类
  8. 宽带上网知识(如何进行上网流程配置,路由器上网配置)
  9. c++11decltype关键字详解
  10. 又一个beanCopy引发的血案metaspace溢出