MySQL 修改表默认字符集行为

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 修改表默认字符集的行为,只是针对新加的字段的在没有指定字符集的时候,给该字段确定字符集。老的字段还是原先的字符集,因此在使用中会出现表的字符集明明是utf8mb4的,但是确存不了emoji。因此,推荐不用要这种方式修改表的默认字符集

转载自For DBA


前言

针对以下修改表字符集的行为做个记录

ALTER TABLE tbl_name DEFAULT CHARACTER SET charset_name;

实验过程

The word DEFAULT is optional. The default character set is the character set that is used if you do not specify the character set for columns that you add to a table later (for example, with ALTER TABLE ... ADD column).

官方文档的意思是修改表的默认字符集行为,只会对后面新增的没有指定字符集的字段有效

我们验证下:

CREATE TABLE `test_default_char` (
  `id` int(11) NOT NULL,
  `name` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

往里面插两条记录,分别带emoji和不带emoji

 insert into test_default_char values  (1,'哈喽');
 insert into test_default_char values  (2,'哈喽');

修改表字符集,添加新的列

 alter table test_default_char  CHARACTER SET utf8mb4;
 alter table test_default_char add c1 varchar(10);

继续往里面插两条记录,分别带emoji和不带emoji

 insert into test_default_char values  (3,'哈喽','哈喽');
 insert into test_default_char values  (4,'哈喽','哈喽');

查看结果

 mysql> select * from test_default_char;
+----+---------+------------+
| id | name    | c1         |
+----+---------+------------+
|  1 | 哈喽    | NULL       |
|  2 | 哈喽?   | NULL       |
|  3 | 哈喽    | 哈喽       |
|  4 | 哈喽?   | 哈喽       |
+----+---------+------------+
4 rows in set (0.00 sec)

我们发现就第四条记录的c1 字段是能看到emoji的

小结

修改表默认字符集的行为,只是针对新加的字段的在没有指定字符集的时候,给该字段确定字符集。老的字段还是原先的字符集,因此在使用中会出现表的字符集明明是utf8mb4的,但是确存不了emoji。因此,推荐不用要这种方式修改表的默认字符集

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
安全 关系型数据库 MySQL
【MySQL】表的增删查改
【MySQL】表的增删查改
|
11天前
|
关系型数据库 MySQL 数据库
数据迁移脚本优化过程:从 MySQL 到 Django 模型表
在大规模的数据迁移过程中,性能问题往往是开发者面临的主要挑战之一。本文将分析一个数据迁移脚本的优化过程,展示如何从 MySQL 数据库迁移数据到 Django 模型表,并探讨优化前后的性能差异。
|
1月前
|
SQL 关系型数据库 MySQL
mysql sql语句删除一个库下的所有表
mysql sql语句删除一个库下的所有表
24 1
|
29天前
|
分布式计算 DataWorks MaxCompute
DataWorks产品使用合集之需要将mysql 表(有longtext类型字段) 迁移到odps,但odps好像没有对应的类型支持,该怎么办
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
18天前
|
存储 自然语言处理 关系型数据库
|
22天前
|
关系型数据库 MySQL
蓝易云 - 如何修复MySQL中损坏的表
最后,为了防止数据丢失,定期备份数据是非常重要的。
58 3
|
10天前
|
SQL 关系型数据库 MySQL
ClickHouse(23)ClickHouse集成Mysql表引擎详细解析
ClickHouse的MySQL引擎允许执行`SELECT`查询从远程MySQL服务器。使用`MySQL('host:port', 'database', 'table', 'user', 'password'[,...])`格式连接,支持简单`WHERE`子句在MySQL端处理,复杂条件和`LIMIT`在ClickHouse端执行。不支持`NULL`值,用默认值替换。系列文章涵盖ClickHouse安装、集群搭建、表引擎解析等主题。[链接](https://zhangfeidezhu.com/?p=468)有更多
16 0
|
10天前
|
SQL 关系型数据库 MySQL
MySQL外键约束行为解析:CASCADE, NO ACTION, RESTRICT, SET NULL
MySQL外键约束行为解析:CASCADE, NO ACTION, RESTRICT, SET NULL
10 0
|
1月前
|
SQL 存储 关系型数据库
MySQL数据库——SQL(1)-SQL通用语法、SQL分类、DDL(数据库操作、表操作)
MySQL数据库——SQL(1)-SQL通用语法、SQL分类、DDL(数据库操作、表操作)
28 1
|
12天前
|
SQL 缓存 关系型数据库
MySQL操作全攻略:库、表、数据、事务全面指南
MySQL操作全攻略:库、表、数据、事务全面指南