2009-04-12 154 views
138
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命令的作用是什麼?

+0

的可能重複[更改數據庫歸類(http://stackoverflow.com/questions/5906585/change-database-collat​​ion) – 2014-02-14 10:40:35

+0

你不妨改變正確答案爲自己和許多人似乎同意第二個是正確的。 – 2014-06-28 15:42:48

+1

@GregMiernicki完成。 – dharm0us 2014-06-30 06:30:57

回答

485

要更改默認的字符集和校對錶,包括那些現有列的(注意轉換爲條款):

alter table <some_table> convert to character set utf8 collate utf8_unicode_ci; 
9

它爲該表設置默認排序規則;如果你創建一個新的列,那應該與latin_general_ci整理 - 我想。嘗試指定個別列的排序規則,看看是否有效。關於它如何處理這個問題,MySQL有一些非常奇怪的行爲。

+32

向下滾動以解決問題 – Moak 2012-12-17 03:53:27

29

MySQL有4個級別的排序規則:服務器,數據庫,表,列。 如果更改服務器,數據庫或表的排序規則,則不會更改每列的設置,但會更改默認排序規則。

例如,如果更改數據庫的默認排序規則,則在該數據庫中創建的每個新表都將使用該排序規則,並且如果更改了表的默認排序規則,則在該表中創建的每個列都將得到該排序規則。

+4

事實上,MySQL有** FIVE **排序等級,有一個字符集級別的默認排序規則設置,很多人都忘記了。 – Devy 2015-09-24 18:07:36

0

可能需要更改架構不僅表

ALTER SCHEMA <table name> DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

(MariaDB的10)