簡體   English   中英

如何更改表的默認排序規則?

[英]How to change the default collation of a table?

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 18 年 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 ;

正如 Rich 所說 - utf8mb4

(瑪麗亞DB 10)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM