前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL数据表字符集

MySQL数据表字符集

作者头像
灯珑LoGin
发布2022-10-31 09:48:25
1.8K0
发布2022-10-31 09:48:25
举报
文章被收录于专栏:龙进的专栏

字符集是一套符号和编码,校验规则是字符集内用来比较字符的一些规则,也就是字符集的排序规则。MySQL可以使用多种字符集和检验规则来组织字符。

MySQL服务器支持多种字符集,在同一台服务器、同一个数据库甚至是同一个表的不同字段都可以使用不同的字符集。

每种字符集都可能有多种校验规则,并且都有一个默认的校验规则。每个校验规则只针对某个字符集,与其他字符集没有关系。

在MySQL中,字符集的概念和编码方案被看作同义词,一个字符集是一个转换表和一个编码方案的组合。

我们怎么查看我们的数据库支持的字符集呢?

代码语言:javascript
复制
show character set;

查看字符集的校验规则:

代码语言:javascript
复制
show collation;

然后就会哒哒哒地出一堆东西出来,就是你服务器支持的字符集校验规则了。

怎么查看当前数据库的字符集呢?输下面这个命令就好了

代码语言:javascript
复制
show variables like 'character%'\G

然后就会弹出下面这样一堆东西(具体的字符集可能和我这的不一样)

代码语言:javascript
复制
*************************** 1. row ***************************
Variable_name: character_set_client
        Value: gbk
*************************** 2. row ***************************
Variable_name: character_set_connection
        Value: gbk
*************************** 3. row ***************************
Variable_name: character_set_database
        Value: utf8
*************************** 4. row ***************************
Variable_name: character_set_filesystem
        Value: binary
*************************** 5. row ***************************
Variable_name: character_set_results
        Value: gbk
*************************** 6. row ***************************
Variable_name: character_set_server
        Value: utf8mb4
*************************** 7. row ***************************
Variable_name: character_set_system
        Value: utf8
*************************** 8. row ***************************
Variable_name: character_sets_dir
        Value: E:\programFiles\mysql-8.0.21-winx64\share\charsets\
8 rows in set, 1 warning (0.01 sec)

来解释一下这些variable_name的意思

character_set_client:客户端请求数据的字符集

character_set_connection:客户机/服务器连接的字符集

character_set_database:默认数据库的字符集。无论默认数据库如何改变,都是这个字符集;如果没有默认字符集,那就使用character_set_server指定的字符集。这个变量最好不要人为定义。

character_set_filesystem: 把os上的文件名转化成此字符集。也就是说,把character_set_client转换为character_set_filesystem,默认的binary不做任何转换。

character_set_results:结果集,返回给客户端的字符集

character_set_server:数据库服务器的默认字符集

character_set_system: 系统字符集,这个值总是utf8,不需要设置。这个字符集用于数据库对象(如表和列)的名字,也用于存储在目录表中的函数的名字。

怎么查看当前数据库的校验规则呢?

代码语言:javascript
复制
show variables like 'collation%'\G

然后就会返回当前数据库的校验规则

代码语言:javascript
复制
*************************** 1. row ***************************
Variable_name: collation_connection
        Value: gbk_chinese_ci
*************************** 2. row ***************************
Variable_name: collation_database
        Value: utf8_general_ci
*************************** 3. row ***************************
Variable_name: collation_server
        Value: utf8mb4_0900_ai_ci
3 rows in set, 1 warning (0.00 sec)

设置字符集

为数据库指定字符集

在创建数据库的时候,如果不指定字符集,那么默认的字符集就是latin1

我们可以在创建数据库的时候,指定字符集:

代码语言:javascript
复制
 create database lyxt charset=utf8;

当然,也可以修改已经创建好的数据库的字符集

代码语言:javascript
复制
alter database dbname character set utf8;

为数据库指定校验规则

在创建数据库的时候指定校验规则:

代码语言:javascript
复制
create database lyxt default charset utf8 collate utf8_romanian_ci;

修改已经存在的数据库的校验规则:

代码语言:javascript
复制
alter database lyxt collate utf8_romanian_ci;

在创建数据表的时候,为数据表分配字符集

代码语言:javascript
复制
create table table_charset(
    -> c1 varchar(10),
    -> c2 varchar(10)
    -> )engine=innodb default charset=utf8;

为表指定校验规则

代码语言:javascript
复制
 create table table_collate(
    -> c1 varchar(10),
    -> c2 varchar(10)
    -> )engine=innodb default charset utf8 collate utf8_romanian_ci;

为列分配字符集

代码语言:javascript
复制
create table column_charset(
    -> c1 char(10) character set utf8 not null,
    -> c2 char(10) char set utf8,
    -> c3 varchar(10) charset utf8,
    -> c4 varchar(10)
    -> )engine=innodb;

为列分配校验规则

代码语言:javascript
复制
 create table column_collate(
    -> c1 varchar(10) charset utf8 collate utf8_romanian_ci not null,
    -> c2 varchar(10) charset utf8 collate utf8_spanish_ci
    -> )engine=innodb;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年9月9日20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 设置字符集
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档