服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - MySQL基础学习之字符集的应用

MySQL基础学习之字符集的应用

2023-05-17 13:32宁轩 Mysql

这篇文章主要为大家详细介绍了MySQL中字符集的相关使用,例如字符集的查询与修改和比较规则等,文中的示例代码讲解详细,需要的可以参考一下

字符集的查询与修改

MySQL 8.0版本之前, 默认字符集是latin1, 使用默认字符集的时候输入中文会出现乱码问题, 所以我们开发人员经常会将MySQL字符集的格式修改为utf8解决乱码问题, utf8字符集默认指向的是utf8mb3格式编码, 在MySQL 8.0版本开始, 默认的字符集将改为了utf8mb4, 有效的解决了中文乱码问题

查看当前MySQL数据库使用的字符集

?
1
2
3
4
5
show variables like 'character%';
 
-- 或
 
show variables like '%char%';

MySQL基础学习之字符集的应用

MySQL 8.0版本查询默认字符集

MySQL基础学习之字符集的应用

MySQL 5.7版本查询默认字符集

对于MySQL 5.7版本我们可以通过Navicat等工具来对数据库的默认字符集进行修改, 也可以通过修改MySQL的配置文件my.cnf来修改默认字符集

my.cnf文件在Linux系统下的地址是: /etc/my.cnf 在 [mysqld] 下新增 character_set_server=utf8 修改成功之后注意要重启 MySQL, 使配置生效, 重启命令systemctl restart mysqld.service

在上面字符集列表里面有几个属性可以了解一下:

  • character_set_client 服务器解码请求时使用的字符集
  • character_set_connection 服务器处理请求时会把请求字符串从character_set_client转为character_set_connection
  • character_set_results 服务器向客户端返回数据时使用的字符集

字符集比较规则

utf8mb3和 utf8mb4

在日常操作中utf8字符集表示一个字符需要 14个字节, 但是我们常用的一些字符只需要使用 13个字节, 而字符集表示使用一个字符的最大字节长度, 长度不同占用空间大小也不同, 所以在MySQL中定义了utf8mb3utf8mb4:

  • utf8mb3 1~3字节
  • utf8mb4 1~4字节

MySQL中, utf8通常指的是 utf8mb4

查看当前MySQL支持的字符集可输入下列查询:

?
1
2
3
show charset;
-- 或
show character set;

MySQL基础学习之字符集的应用

我们可以看到查询结果一共有四列, 分别是字符集名称, 简介, 该字符集默认排序规则, 使用该字符集最大字节数

MySQL基础学习之字符集的应用

Default collation表示的是该字符集默认的比较规则, utf8_general_ci是一种通用的比较规则,这里可以选择比较规则主要作用于哪种语言 在我们使用Navicat编辑数据库的时候可以看到当前数据库使用的字符集和排序规则

  • utf8_croatiian_ci就是以罗克地亚语的规则比较,
  • utf8_czech_ci 以捷克语的规则比较
  • utf8_danish_ci 以丹麦语规则比较
  • ...

utf8_unicode_ci和 utf8_general_ci对中英文来说没有区别 utf8_general_ci 校对速度快, 准确度较差 utf8_unicode_ci 准确度高, 但校对速度稍慢

一般来讲使用utf8_general_ci就够了, 但是如果应用中使用到德语, 法语或者俄语, 一定要使用 utf8_unicode_ci, 因为 utf8_general_ci是一种比较老的标准 utf8_unicode_ci会更符合这些国家人们的习惯

比较规则后缀含义

后缀 英文释义 描述
_ai accent insensitive 不区分重音
_as accent sensitive 区分重音
_ci case insensitive 不区分大小写
_cs case sensitive 区分大小写
_bin binary 以二进制的方式比较

字符集常用SQL

?
1
2
3
4
5
6
7
8
-- 查看服务器的字符集和比较规则
show variables like '%_server';
-- 查看数据库的字符集和比较规则
show variables like '%_database';
-- 查看具体数据库的字符集
show create database 表名;
-- 修改具体数据库的字符集
alter database 表名 default character set 'utf8' collate 'utf8_general_ci';

修改数据库的默认字符集和比较规则后, 原来已经创建的表的字符集和比较规则并不会改变, 需要单独的去更改

以上就是MySQL基础学习之字符集的应用的详细内容,更多关于MySQL字符集的资料请关注服务器之家其它相关文章!

原文链接:https://juejin.cn/post/7231821116909764664

延伸 · 阅读

精彩推荐
  • Mysql详解windows下mysql的主从同步

    详解windows下mysql的主从同步

    本文主要对windows下的mysql主从同步进行详细介绍。具有很好的参考价值,需要的朋友一起来看下吧...

    肖哥哥5482020-07-06
  • MysqlMysql 自定义随机字符串的实现方法

    Mysql 自定义随机字符串的实现方法

    前段时间接了一个项目,需要用到随机字符串,但是mysql的库函数没有直接提供,需要我们自己实现此功能,下面小编给大家介绍下Mysql 自定义随机字符串...

    小net5102020-06-19
  • MysqlMySQL 5.6.36 Windows x64位版本的安装教程详解

    MySQL 5.6.36 Windows x64位版本的安装教程详解

    这篇文章主要介绍了MySQL 5.6.36 Windows x64位版本的安装教程详解,非常不错,具有参考借鉴价值,需要的的朋友参考下吧 ...

    foolstudio19804492020-07-29
  • Mysqlwin10安装zip版MySQL8.0.19的教程详解

    win10安装zip版MySQL8.0.19的教程详解

    这篇文章主要介绍了win10安装zip版MySQL8.0.19的教程详细,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    SoulBreath11092021-01-07
  • MysqlMySQL 多表关联一对多查询实现取最新一条数据的方法示例

    MySQL 多表关联一对多查询实现取最新一条数据的方法示例

    这篇文章主要介绍了MySQL 多表关联一对多查询实现取最新一条数据的方法,结合实例形式详细分析了MySQL 多表关联一对多查询实现取最新一条数据相关原理、...

    大爱我小宝哥10572021-01-19
  • MysqlMySQL查看所有用户的实现

    MySQL查看所有用户的实现

    本文主要介绍了MySQL查看所有用户的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小...

    呆小呆啊7942023-03-09
  • MysqlMySQL函数Locate的使用详解

    MySQL函数Locate的使用详解

    本文主要介绍了MySQL函数Locate的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小...

    今夜无风亦无雨5972022-08-15
  • Mysqlmysql 8.0.22 winx64安装配置方法图文教程

    mysql 8.0.22 winx64安装配置方法图文教程

    这篇文章主要为大家详细介绍了mysql8.0.22 winx64安装配置方法图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一...

    追梦小男孩12402021-03-11