MySQL建立数据库时字符集和排序规则的选择

news2025/2/22 14:04:23

文章目录

  • 前言
  • 一、字符集?
  • 二、Mysql中的字符集
    • 1.Unicode与UTF8、UTF8MB4、UTF16、UTF32关系
    • 2.Mysql新建数据库时选择哪种字符集呢?
  • 三、Mysql排序规则
  • 四、Mysql查询字符集和排序规则常用的命令


前言

在MySQL中,字符集和排序规则是区分开来的,你可以单独设置字符集和排序规则。
MySQL字符集和排序规则有关联而且还不是必选项,如果字符集和排序规则都不填写,Mysql会做默认处理;或者设置其一,比如设置字符集,会默认设置了与字符集相应的排序规则。
我们建立数据库是总要涉及到字符集和排序规则的选择问题?怎么选择呢,有什么区别呢?


一、字符集?

先说字符,字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。

字符集(Character set)是多个字符的集合,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。计算机要准确的处理各种字符集文字,就需要进行字符编码,以便计算机能够识别和存储各种文字。

字符编码(Character encoding)也称字集码,是把字符集中的字符通过编码成为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。常见的例子包括将拉丁字母表编码成摩斯电码和ASCII。其中,ASCII将字母、数字和其它符号编号,并用7比特的二进制来表示这个整数。通常会额外使用一个扩充的比特,以便于以1个字节的方式存储。

二、Mysql中的字符集

在这里插入图片描述在MySQL中,常用的几个字符集有UTF8、UTF8MB4、UTF16、UTF32等,那么Unicode与UTF8、UTF8MB4、UTF16、UTF32是什么关系?我们新建数据库时选择哪种字符集呢?

1.Unicode与UTF8、UTF8MB4、UTF16、UTF32关系

Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。UTF8、UTF16、UTF32是Unicode码一种实现形式,都是属于Unicode编码。

2.Mysql新建数据库时选择哪种字符集呢?

UTF8和UTF8MB4是常用的两种字符集,至于这两个选用哪个要根据自己业务情况而定。UTF8MB4兼容UTF8,比UTF8能表示更多的字符,Unicode编码区从编码区1-126属于UTF8区,当然UTF8MB4也兼容这个区,126行以下就是UTF8MB4扩充区,所以你要根据自己的业务进行选择,一般情况下UTF8就满足需求,当然如果考虑到以后扩展,比如考虑到以后存储emoji,就选择UTF8MB4,否则只是浪费空间。我建议还是选择UTF8MB4,毕竟对于大部分公司而言空间不是什么大问题。

三、Mysql排序规则

在这里插入图片描述UTF8MB4常用的排序规则:utf8mb4_unicode_ciutf8mb4_general_ciutf8mb4_bin,选用哪种方式呢?先来分析一下:

1、准确性:

(1)utf8mb4_unicode_ci 是基于标准的Unicode来排序和比较,能够在各种语言之间精确排序,不区分大小写

(2)utf8mb4_general_ci 没有实现Unicode排序规则,在遇到某些特殊语言或者字符集,排序结果可能不一致,不区分大小写

2、性能:

(1)utf8mb4_general_ci 在比较和排序的时候更快
  (2)utf8mb4_unicode_ci 在特殊情况下,Unicode排序规则为了能够处理特殊字符的情况,实现了略微复杂的排序算法。相比选择哪一种collation,使用者更应该关心字符集与排序规则在db里需要统一。
  (3)utf8mb4_bin:将字符串每个字符用二进制数据编译存储,区分大小写,而且可以存二进制的内容。
  总而言之,utf8mb4_general_ci 和utf8mb4_unicode_ci 是我们最常使用的排序规则。utf8mb4_unicode_ci 校对速度快,但准确度稍差。utf8_unicode_ci准确度高,但校对速度稍慢,两者都不区分大小写。这两个选哪个视自己情况而定,还是那句话尽可能保持db中的字符集和排序规则的统计。

四、Mysql查询字符集和排序规则常用的命令

功能命令
查看数据库字符集show create database 数据库名
查看数据表全部字段排序规则show full columns from 表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/172482.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ArcGIS 小贴士】Pro VS ArcMap及软件获取

有朋友问我,ArcGIS Pro是不是比ArcMap好用。 我觉得用Pro的感觉,用Pro的感觉比ArcMap Ribbon界面 Pro采用的是Ribbon用户界面,与现在的微软的Office软件相似,功能的组织更加清晰。10.x版本的ArcGIS则是传统的工具条界面 有些朋友…

day42|● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零

1049. 最后一块石头的重量 II 1.代码 class Solution { public:int lastStoneWeightII(vector<int>& stones) {int sum 0;for(int i: stones) {sum i;}int t sum;sum sum /2;vector<int>f(sum 1);for (int i 0; i < stones.size(); i) {for (int j …

【Pytorch基础(2)】张量的索引,切片与维度变换

一、张量的维度索引 张量的索引是从第零维度开始的。让我们来创建一个四维的张量做举例说明&#xff1a;torch.Tensor(2,3,64,64) 此时&#xff0c;这个张量可以表示两张边长为64的正方形彩色图像&#xff0c;具体来说&#xff0c;张量的第零维表示图像的数量&#xff1b;第一…

Apollo星火计划学习笔记——Control 专项讲解(LQR)

文章目录1. 算法相关基础1.1 一阶倒立摆1.2 二自由度车辆横向跟踪偏差模型1.3 车辆横向跟踪偏差模型1.4 车辆横向跟踪偏差倒车模型1.5 轮胎侧偏角与侧偏刚度1.6 LQR 线性二次型问题:2. LQR代码解析2.1 WriteHeaders&#xff08;调试过程中的状态量&#xff09;2.2 LatControlle…

Android APK 瘦身

Android APK 瘦身的几个方法将项目中的图片由png、jpg转为webp格式。如下操作&#xff1a;1.1选中图片或者含有图片的文件夹 右键选择Convert toWebP..1.2根据自身情况选择有损压缩还是无损压缩备注&#xff1a;官网连接&#xff1a;https://developer.android.google.cn/studi…

leetcode-每日一题-强密码检验器II(简单,数学逻辑)

如果一个密码满足以下所有条件&#xff0c;我们称它是一个 强 密码&#xff1a;它有至少 8 个字符。至少包含 一个小写英文 字母。至少包含 一个大写英文 字母。至少包含 一个数字 。至少包含 一个特殊字符 。特殊字符为&#xff1a;"!#$%^&*()-" 中的一个。它 不…

Golang 从菜鸟到大咖的必经之路_GO 语言的转义字符、注释、规范和代码风格要求

目录 一、GO 语言转义字符 A.Golang 常用的转义字符&#xff08;escape char&#xff09;: B.课程练习 二、Go 语言注释&#xff1a; A.注释&#xff08;Comment&#xff09;: B.Go 语言中的注释类型&#xff1a; C.注释不会被编译 D.shifttab 三、规范的代码风格要求…

聚焦儿童羽绒服产业,看用友YonSuite打造领先实践的数智创新小灯塔

有一种冷“是妈妈觉得你冷”。每每想起小时候&#xff0c;为了应对寒冷的冬季&#xff0c;都会“全副武装”&#xff0c;裹得厚厚的&#xff0c;里三层外三层。 放到如今&#xff0c;有了羽绒服的萌娃们&#xff0c;已不再像我们当年一样穿得厚厚的了。现在的年轻爸妈喜欢装扮…

Udev 为设备节点起别名

查看设备信息&#xff1a; 操作udev&#xff0c;可以使用udevadm命令&#xff0c;如果我们要查看/dev/sda 设备节点信息&#xff0c;我们可以使用下面命令&#xff1a; 命令&#xff1a;udevadm info -a --namesda rootubuntu:/sys/kernel/debug/usb# udevadm info -a --nam…

【C语言】文件操作(1)

文件操作一、关于文件的基础知识1.为什么要学习文件2.什么是文件3.文本文件与二进制文件二、文件的打开和关闭1. 文件指针2.文件的打开和关闭3.文件结尾三、文件的顺序读写1.fputc与fgetc2.fputs与fgets3.fprintf与fscanf4.fwrite与fread5.三个标准流一、关于文件的基础知识 1…

低代码平台的优缺点

全文 1518 字 阅读时间约 5 分钟 本文首发于码匠技术博客 目录 低代码平台的优点 低代码平台的缺点 写在最后 低代码工具大大减少了开发者需要编写的代码量&#xff0c;通过增加可复用代码和组件的数量来帮助企业适应发展需求&#xff0c;设计和部署自定义应用程序以紧跟市…

科研快报|二代加三代扩增子测序探究苏铁植物根部复杂微生物群落组成

背景介绍苏铁俗称铁树&#xff0c;是地球上现存最古老的活化石植物&#xff0c;也是种子植物中最原始的种群。我国是世界上苏铁植物资源最丰富的国家之一&#xff0c;本文对我国的特有种德保苏铁&#xff08;Cycas debaoensis&#xff09;和仙湖苏铁&#xff08;Cycas fairylak…

【复习 自用】JavaScript知识汇总(基础版)

注&#xff1a;之前学过JavaScript&#xff0c;本贴仅用于复习(自用)&#xff0c;建议没基础的朋友先学基础。会混入typescript&#xff01; 更新中~~~~~~~~~~ 对象.属性和对象[‘属性’]的区别&#xff1a;总的来说没啥区别&#xff0c;但是&#xff0c; &#xff01;&#…

办公必备的快捷键,轻松助你键步如飞

作为职场人&#xff0c;你不会只会用Ctrl C和Ctrl V吧&#xff1f;掌握更多的办公快捷键&#xff0c;可以大大提高工作效率&#xff01;今天教大家几个好用的快捷键&#xff01;现在收收藏起来吧&#xff01;快捷键一&#xff1a;winL&#xff08;锁屏&#xff09; 电脑锁屏可以…

【NI Multisim 14.0虚拟仪器设计——放置虚拟仪器仪表(功率表)】

目录 序言 &#x1f34d;放置虚拟仪器仪表 &#x1f349;功率表 序言 NI Multisim最突出的特点之一就是用户界面友好。它可以使电路设计者方便、快捷地使用虚拟元器件和仪器、仪表进行电路设计和仿真。 首先启动NI Multisim 14.0&#xff0c;打开如图所示的启动界面&#x…

opencv的图像基本操作_2

import cv2 #图像BGRimport numpy as npimport matplotlib.pyplot as plt #Matplotlib是RGB腐蚀操作kernel np.ones((3,3), np.uint8) #选择3*3卷积核&#xff0c;3*3括起来&#xff0c;(3,3)erosion cv2.erode(img, kernel, iterations 1) #erode腐蚀函数&#xff0c; iter…

【LeetCode】生命游戏 [M](矩阵)

289. 生命游戏 - 力扣&#xff08;LeetCode&#xff09; 一、题目 根据 百度百科 &#xff0c; 生命游戏 &#xff0c;简称为 生命 &#xff0c;是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 给定一个包含 m n 个格子的面板&#xff0c;每一个格子都可以看成是一个…

2023年mybatis常见面试题10道

1. MyBatis是什么&#xff1f;Mybatis 是一个半 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;它内部封装了 JDBC&#xff0c;开发时只需要关注 SQL 语句本身&#xff0c;不需要花费精力去处理加载驱动、创建连接、创建statement 等繁杂的过程。程序员直接编写原生…

Hyper-V三种虚拟网络类型的理解

Windows 10除家庭版之外都内置了Hyper-V&#xff0c;但是Win10系统上Hyper-V虚拟网络的设置方法却与之前版本的Hyper-V有些不同&#xff0c;最近在折腾了无数遍之后&#xff0c;总算有些心得&#xff1a;先说说虚拟网络的三种类型。Hyper-v支持外部、内部、专用三种网络&#x…

蓝桥杯STM32G431RBT6学习——定时器中断

蓝桥杯STM32G431RBT6学习——定时器中断 前言 从网络上的资料来看&#xff0c;蓝桥杯嵌入式好像并不考外部中断&#xff08;毕竟通常只是个按键应用&#xff09;&#xff0c;因此跳过进行定时器的学习。 STM32单片机的定时器通常分为高级定时器、通用定时器、基本定时器三种&…