MySQL创建数据库,基字符集,数据库排序规则的详解

本文介绍了UTF8和UTF8MB4的区别及其应用场景,同时对比了几种不同的排序方式,包括utf8_bin、utf8_general_ci等,并讨论了它们在实际应用中的优劣。
  1. 一般选择utf8.下面介绍一下utf8与utfmb4的区别。
    utf8mb4兼容utf8,且比utf8能表示更多的字符。至于什么时候用,看你的做什么项目了,unicode编码区从1 ~ 126就属于传统utf8区,当然utf8mb4也兼容这个区,126行以下就是utf8mb4扩充区,什么时候需要存储那些字符,才用utf8mb4,否则会浪费空间。

  2. 排序说明
    排序一般分为两种:utf_bin和utf_general_ci

bin 是二进制, a 和 A 会别区别对待.

  1. 例如你运行:

select * from table where a = ‘a’;
那么在utf8_bin中你就找不到 a = ‘A’ 的那一行, 而 utf8_general_ci 则可以.

utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用。

utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果

utf8_bin:字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容

utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。

utf8_general_ci校对速度快,但准确度稍差。(准确度够用,一般建库选择这个)

utf8_unicode_ci准确度高,但校对速度稍慢。

所以一般选择如下:
在这里插入图片描述

### 关于Navicat新建数据库排序规则为空的问题 当通过Navicat工具创建数据库时,如果发现排序规则选项为空,可能是由于以下几个方面的原因: #### 1. 字符集排序规则的关系 在MySQL中,字符集(Character Set)决定了数据存储的方式以及编码形式,而排序规则(Collation)则定义了如何比较和排序字符数据。每种字符集通常都有一组对应的排序规则[^1]。因此,在选择字符集时如果没有匹配的排序规则可用,则可能导致排序规则显示为空。 #### 2. 客户端环境差异 不同操作系统上的MySQL安装包可能预设不同的默认字符集和支持的排序规则集合。例如,Linux系统版本的MySQL支持更多的内置排序规则,而在Windows环境中,默认情况下可能会缺少某些特定的排序规则[^2]。这明客户端配置或服务器端设置可能存在不一致的情况。 #### 3. Navicat内部实现细节 Navicat作为第三方管理工具,在连接到目标MySQL实例之前,它依赖本地缓存来展示可选参数,比如字符集及其关联的排序规则。如果这些元信息未能成功加载或者存在同步延迟现象,那么界面中的下拉框就可能出现空白状态[^4]。 --- 针对上述分析,以下是具体的解决方案建议: - **确认服务端支持情况** 需要登录至实际运行着的目标MySQL Server,并执行SQL命令`SHOW COLLATION;`查看当前部署的服务端究竟提供了哪些有效的collations供选用。只有那些被正式启用并注册进了系统的collations才会出现在后续操作过程中可供挑选之列。 - **调整Navicat连接属性** 如果确定问题是源于网络传输过程中的数据丢失或者是软件本身的BUG所致的话,可以尝试重新建立一个新的Connection Profile, 并特别留意其中有关Advanced Options的部分设定项是否有异常之处[^3]。 - **手动指定缺省值** 当图形化界面上确实无法正常显示出期望看到的内容时,还可以考虑采用纯文本方式直接编辑CREATE DATABASE语句的形式来进行初始化工作。例如下面这个例子就是强制指定了UTF8MB4 General CI作为新的Schema对象的础属性之一: ```sql CREATE DATABASE my_new_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ``` --- ### 注意事项 以上方法均需谨慎对待生产环境下的变更动作,最好先在一个独立测试区域里验证可行性后再推广实施。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值