MySQL 修改表默认字符集行为

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 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。因此,推荐不用要这种方式修改表的默认字符集

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
Oracle 关系型数据库 MySQL
【mysql】—— 表的内连和外连
【mysql】—— 表的内连和外连
|
1月前
|
存储 关系型数据库 MySQL
【mysql】—— 表的增删改查
【mysql】—— 表的增删改查
|
1月前
|
关系型数据库 MySQL 存储
【MySQL】——数据类型及字符集
【MySQL】——数据类型及字符集
165 0
【MySQL】——数据类型及字符集
|
1月前
|
分布式计算 DataWorks 关系型数据库
DataWorks支持将ODPS表拆分并回流到MySQL的多个库和表中
【2月更文挑战第14天】DataWorks支持将ODPS表拆分并回流到MySQL的多个库和表中
56 8
|
17天前
|
存储 SQL 关系型数据库
【MySQL】4. 表的操作
【MySQL】4. 表的操作
20 0
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
99 1
|
1月前
|
存储 人工智能 搜索推荐
详解MySQL字符集和Collation
MySQL支持了很多Charset与Collation,并且允许用户在连接、Server、库、表、列、字面量多个层次上进行精细化配置,这有时会让用户眼花缭乱。本文对相关概念、语法、系统变量、影响范围都进行了详细介绍,并且列举了有可能让字符串发生字符集转换的情况,以及来自不同字符集的字符串进行比较等操作时遵循的规则。对于最常用的基于Unicode的字符集,本文介绍了Unicode标准与MySQL中各个字符集的关系,尤其详细介绍了当前版本(8.0.34)默认字符集utf8mb4。
|
16天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
16天前
|
缓存 关系型数据库 MySQL
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
|
1月前
|
存储 人工智能 关系型数据库
详细介绍TiDB 与 MySQL 中的常用字符集及排序规则
一文理清 TiDB 与 MySQL 中的常用字符集及排序规则
115 6