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命令的作用是什么?
要更改包含现有列的表的默认字符集和排序规则(注意convert to子句):
alter table <some_table> convert to character set utf8mb4 collate utf8mb4_unicode_ci;
由于一些评论的提示,编辑了答案:
应避免推荐 utf8。它几乎从来都不是你想要的,而且经常会导致意想不到的混乱。utf8 字符集与 UTF-8 不完全兼容。如果你想要 UTF-8,你想要 utf8mb4 字符集。– Rich Remer 2018 年 3 月 28 日 23:41
和
这似乎很重要,很高兴我阅读了评论并感谢@RichRemer。Nikki,我认为你应该在你的答案中编辑它,考虑到有多少浏览量。请参阅此处https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-utf8.html和此处MySQL 中的 utf8mb4 和 utf8 字符集有什么区别?– Paulpro 3 月 12 日 17:46
MySQL 有 4 级排序规则:服务器、数据库、表、列。如果更改服务器、数据库或表的排序规则,则不会更改每列的设置,而是更改默认排序规则。
例如,如果您更改数据库的默认排序规则,您在该数据库中创建的每个新表都将使用该排序规则,如果您更改表的默认排序规则,您在该表中创建的每一列都将使用该排序规则。
它设置表的默认排序规则;如果您创建一个新列,则应与 latin_general_ci 进行整理——我认为。尝试为单个列指定排序规则,看看是否有效。MySQL 在处理这个问题方面有一些非常奇怪的行为。
可能不仅需要更改 SCHEMA 表
ALTER SCHEMA `<database name>` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci ;
正如里奇所说 - utf8mb4
(玛丽亚数据库 10)