utf8和 utf8mb4的區(qū)別
utf8mb4是在Mysql 5.5.3之后添加的,mb4代表most bytes 4,一個(gè)字符最我占用4個(gè)字節(jié),用來(lái)兼容4字節(jié)的Unicode字符,比如微信中的表情字符。utf8其實(shí)是utf8mb3,一個(gè)字符最多占用3個(gè)字節(jié),utf8無(wú)法保存4個(gè)字節(jié)的Unicode字符。utf8mb4是utf8的超集,utf8轉(zhuǎn)成utf8mb4,內(nèi)容不會(huì)發(fā)生任何改變,沒(méi)有任何兼容性問(wèn)題。使用utf8mb4,在不使用char類型的字段時(shí),同樣的字符串也不會(huì)占用更多的空間,所以建議在普遍使用varchar的情況下,都使用默認(rèn)的utf8mb4字符集。
utf8mb4下的Collation(排序規(guī)則)的命名規(guī)則
在創(chuàng)建數(shù)據(jù)庫(kù)時(shí),在選定字符集之后,還需要指定使用該字符集下的哪個(gè)排序規(guī)則,針對(duì)utf8mb4默認(rèn)的Collation是
utf8mb4_0900_ai_ci,是utf8mb4字符集一個(gè)新的通用排序歸類。 中間的0900,它對(duì)應(yīng)的是Unicode 9.0的規(guī)范。最后兩部分_ai_ci,ai表示accent insensitivity,也就是“不區(qū)分音調(diào)”,而ci表示case insensitivity,也就是“不區(qū)分大小寫(xiě)”。
修改字符集的相關(guān)SQL語(yǔ)句
修改數(shù)據(jù)庫(kù)默認(rèn)字符集:
ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...];
把表默認(rèn)的字符集和所有字符列(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;
只是修改表的默認(rèn)字符集:
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;
查看字符集
# 查看數(shù)據(jù)庫(kù)編碼:
SHOW CREATE DATABASE db_name;
# 查看表編碼:
SHOW CREATE TABLE tbl_name;
# 查看字段編碼:
SHOW FULL COLUMNS FROM tbl_name;