首页 > 数据库 >带你5分钟读懂MySQL字符集

带你5分钟读懂MySQL字符集

时间:2022-10-06 17:04:14浏览次数:44  
标签:字符 MySQL 字符集 读懂 规则 排序 级别

前言

在日常开发中经常遇到“乱码”问题,很有可能就是因为对字符集的理解不到位、设置错误造成的,本文主要总结一下MySQL字符集的相关知识,以及如何设置字符集,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。

什么是字符集

字符集定义了字符以及字符的编码,规定了字符在数据库中的存储格式,比如占用多少空间,支持那些字符等等。

在我们确定了字符集表示字符的范围以及编码规则后,我们还需要比较两个字符的大小,排序规则是指对指定字符集下不同字符的比较规则。

带你5分钟读懂MySQL字符集_mysql字符集

MySQL常用字符集

常见的MySQL字符集主要有以下四种:

字符集

长度

说明

GBK

2

支持中文,但是不是国际通用字符集

UTF-8

3

支持中英文混合场景,是国际通用字符集

latin1

1

MySQL默认字符集

utf8mb4

4

完全兼容UTF-8,用四个字节存储更多的字符

  • 如果系统开发面向国外企业,需要处理不同国家、不同语言,则应该选择utf-8或者utf8mb4。
  • 如果只需要支持中文,没有国外业务,则为了性能考虑,可以采用GBK。

MySQL字符集操作

查看字符集

1、查看当前MySQL中支持的字符集

show charset [LIKE 匹配的模式];

带你5分钟读懂MySQL字符集_mysql字符集_02

2、查看支持的比较规则

SHOW COLLATION [WHERE Charset = 字符集限定条件];

带你5分钟读懂MySQL字符集_mysql_03

3、查看MySQL数据库中关于字符集的相关设置

show variables like 'character_set%';

带你5分钟读懂MySQL字符集_排序规则_04

修改字符集

1、更改默认字符集

alter database 表名 default character set utf8;

2、在创建表时指定字符集及排序规则

CREATE TABLE 表名 (列的信息)

[[DEFAULT] CHARACTER SET 字符集名称]

[COLLATE 排序规则名称]]

3、修改指定字符集及排序规则

ALTER TABLE 表名

[[DEFAULT] CHARACTER SET 字符集名称]

[COLLATE 排序规则名称]

字符集和排序规则级别

MySQL有4个级别的字符集和比较规则,分别是:

  • 服务器级别:可以通过设置​​character_set_server​​和​​collation_server​​系统变量指定服务器字符集和排序规则;
  • 数据库级别:给数据库指定字符集和排序规则;
  • 表级别:可以指定表的字符集和排序规则;
  • 列级别:同一个表中不同的列也可以有不同的字符集和排序规则。

小结

  1. 字符集指的是某个字符范围的编码规则。
  2. 排序规则是针对某个字符集中字符比较大小的一种规则。
  3. 在MySQL中,一个字符集可以有多种排序规则,都有一个默认的排序规则,一个排序规则必须对应一个字符集。

标签:字符,MySQL,字符集,读懂,规则,排序,级别
From: https://blog.51cto.com/u_15773567/5733911

相关文章

  • 【MySQL系列】- 浅析undo log
    undolog是什么undolog可以称为撤销日志、undo日志,它记录着事务回滚前的数据。官方定义:Astorageareathatholdscopiesofdatamodifiedbyactivetransactions.翻......
  • MySQL存储引擎详解(一)-InnoDB架构
    前言目前MySQL8.x版本数据库已经支持了很多存储引擎了,但是一般我们常用的就几种,容易形成思维固化不会轻易采取其他存储引擎,从而错失很多优化存储的功能。因此对现支持的九种......
  • MySQL 基础语法
    SELECT基础用法SELECTname,ageFROMuserDISTINCT——对检索结果去重应用于所有列而不仅是它后面的一列,所有列的值都不同才会被认为不同。SELECTDISTI......
  • MySQL索引底层:B+树详解
    前言当我们发现SQL执行很慢的时候,自然而然想到的就是加索引。对于范围查询,索引的底层结构就是B+树。今天我们一起来学习一下B+树哈~公众号:「捡田螺的小男孩」树简介、树种类......
  • MySQL面试题(二)
    11、列对比运算符是什么?在SELECT 语句 的列比较中使用=,<>,<=,<,>=,>,<<,>>,<=>,AND,&nbs***bsp;或 LIKE 运算符。12、  BLOB 和 TEXT 有什么区别?BLOB 是一个二进......
  • ERROR! The server quit without updating PID file (/home/mysql/data/VM-0-13-cento
    服务器中是已经安装了mysql数据库的,但是运行过程中,显示服务不存在了,查看了日志less-n VM-0-13-centos.err显示  尝试修改配置innodb_buffer_pool_size=64M......
  • 使用docker安装mysql数据库并数据挂载
    下面是关于:单机版的mysql安装部署+数据挂载。1、首先安装docker,以及docer的基本配置包括镜像加速等,相关教程前面有讲过,可以参考docker安装部署和卸载_咛果果的博客-......
  • mysql count函数
    1.count(1)andcount(字段)两者的主要区别是(1) count(1) 会统计表中的所有的记录数,包含字段为null 的记录。(2) count(字段) 会统计该字段在表中出现的次数,忽略字段......
  • linux下mysql常见错误(2003,1045)
    ‘2003错误’然后连接navicat会报1045,解决方法如下: 附加MySQL在linux下的大小写敏感问题解决方法: ......
  • Can't exec "mysql_config": No such file or directory at Makefile.PL line 89.
     001、问题Can'texec"mysql_config":NosuchfileordirectoryatMakefile.PLline89.  002、解决方法(base)[[email protected]]#yuminstal......