MySQL修改字符集

壹頁書發表於2014-09-30
伺服器編碼:


實驗內容
初始的表為utf8編碼,修改資料庫,表,欄位的字符集為GBK,檢視效果。

資料初始化:
  1. create table t (name varchar(20),content varchar(20));
  2. insert into t values('測','測');
  3. commit;
  4. select hex(name),hex(content) from t;
1.設定資料庫編碼為GBK,檢視錶是否有影響

檢視t表沒有任何影響

但是新建的表如果沒有指定字符集,會沿用資料庫的預設字符集


也就是說修改資料庫的預設字符集,對原有的表沒有作用
僅針對新建且沒有指定字符集的表有作用。

2.設定表的預設字符集為GBK(實驗之前,還原資料庫的預設字符集編碼為utf8)

可以看到修改表的預設字符集,不會影響原有的資料
雖然表的預設字符集修改為了GBK,但是所有的欄位都沿用了utf8編碼。
如果新建欄位,會預設為GBK編碼


3.轉換表的字符集
這個效果應該符合大多數場景的預期


4.修改欄位的字符集


附常用命令,轉載自

修改資料庫字符集:

ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...];

把表預設的字符集和所有字元列(CHAR,VARCHAR,TEXT)改為新的字符集:

ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...] 如:ALTER TABLE logtest CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

只是修改表的預設字符集:

ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE...];
如:ALTER TABLE logtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

修改欄位的字符集:

ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE ...];
如:ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;

檢視資料庫編碼:

SHOW CREATE DATABASE db_name;

檢視錶編碼:

SHOW CREATE TABLE tbl_name;

檢視欄位編碼:

SHOW FULL COLUMNS FROM tbl_name;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1285916/,如需轉載,請註明出處,否則將追究法律責任。

相關文章