create table check2(f1 varchar(20),f2 varchar(20));

创建一个默认排序规则为latin1_general_ci的表;

alter table check2 collate latin1_general_cs;
show full columns from check2;

显示列的单个排序规则为"latin1_general_ci".

那么alter table命令的效果是什么?

推荐答案

要更改表including those of existing columns的默认字符集和排序规则(请注意convert to子句):

alter table <some_table> convert to character set utf8mb4 collate utf8mb4_unicode_ci;

由于一些 comments 的提示,编辑了答案:

应该避免推荐utf8.它几乎从来都不是你想要的,而且经常会导致意想不到的混乱.utf8字符集与UTF-8不完全兼容.如果你想要UTF-8,utf8mb4字符集就是你想要的Rich Remer 2018年3月28日23:41

That seems quite important, glad I read the comments 和 thanks @RichRemer . Nikki , I think you should edit that in your answer considering how many views this gets. See here https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-utf8.html 和 here What is the difference between utf8mb4 和 utf8 charsets in MySQL? – Paulpro Mar 12 at 17:46

Mysql相关问答推荐

MySQL binlog事件上的并发事务行为

如何在Sequelize中将查询作为选项?

MySQL:获取连续记录的数量(日期)?

为什么我的 SQL 查询不更新 Node.js 和 MySQL 中用户以外的用户属性?

当mysql中只有一个索引列时,为什么使用范围条件锁定读取会锁定每条记录?

将 Go var 传递给 MySQL - try 在 Go lang 程序 (MySQL db) 中执行 db.Exec 时出错

谁能帮我优化低性能的mysql查询

MySql部分匹配基于部分查询代码

带有 PARTITION BY 子句的 ROW_NUMBER() 停止在 MariaDB 上工作

插入二进制数据会导致Data too long for column...

如何在 MYSQL 中使用多个表进行插值

MySQL过滤食谱上的多对多 - 成分表

加快 MySQL 中的行计数

MySQL - 如何 Select 值在数组中的行?

将 Django DB 从 SQLite 迁移到 MySQL 的最佳方法是什么?

MySQL如何为数据库中的所有表生成DDL

如何用一系列日期填充表格?

如何计算表格的列数

PHP mySQL - 将新记录插入表中,主键自动递增

MySQL连接查询使用like?