如何在不转换列的情况下更改 MySQL 中的表(默认)排序规则[重复]

Posted

技术标签:

【中文标题】如何在不转换列的情况下更改 MySQL 中的表(默认)排序规则[重复]【英文标题】:How to change table (default) collation in MySQL WITHOUT converting the columns [duplicate] 【发布时间】:2016-11-07 08:36:52 【问题描述】:

mysql 表上更改排序规则的常用方法是:

ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

我想要做的是更改表默认排序规则而不更改现有的列排序规则。我怎样才能做到这一点?

【问题讨论】:

ALTER TABLE tbl_name [[DEFAULT] CHARACTER SET charset_name] [COLLATE collation_name] 只需省略 CONVERT TO 部分并设置表格的字符集。现有列将不会被转换。参考:dev.mysql.com/doc/refman/5.7/en/charset-table.html Grrr... 这不是一个重复。这将讨论 tabledefault。另一个谈论混乱的角色(尽管标题是这样说的)。 【参考方案1】:

ALTER TABLE 有两种不同的方法来更改表的字符集。问题中提到的是将所有基于字符的列转换为给定的字符集。

设置表DEFAULT字符集不会改变现有列的字符集。

ALTER TABLE tbl_name
  [[DEFAULT] CHARACTER SET charset_name]
  [COLLATE collation_name]

相关文档条目:

http://dev.mysql.com/doc/refman/5.7/en/alter-table.html http://dev.mysql.com/doc/refman/5.7/en/charset-table.html

【讨论】:

以上是关于如何在不转换列的情况下更改 MySQL 中的表(默认)排序规则[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在不更改特定列的情况下对数据框中的数据进行重新采样?

如何在不删除或移动mysql中的表的情况下重命名数据库? [复制]

在不知道 SQL 中的列的情况下创建表

如何在不命名所有列的情况下合并两个表?

SQL-如何在不自动增加 ID 列的情况下插入行?

如何在不单独指定所有列的情况下对所有列的 SQL 结果进行排序?