數(shù)據(jù)庫不同的編碼支持的字符集是不一樣的恤浪,(比如utf8不支持emoji汤求,utf8mb4可以支持)俏险。如果數(shù)據(jù)庫中的表的編碼不一致,輕則能夠影響關聯(lián)查詢的效率(無法使用索引)扬绪,重則直接出錯(無法關聯(lián))竖独。因此,絕大多數(shù)情況下挤牛,統(tǒng)一庫表編碼是有必要的莹痢。
下面給出修改表編碼的DDL命令
1.修改表
此方式,是修改表的默認不編碼墓赴,單字段如果單獨指定了編碼不受影響
ALTER TABLE `test`
COLLATE = utf8mb4_general_ci ;
2.修改字段
此方式竞膳,修改表指定字段的編碼。
ALTER TABLE `test`
COLLATE = utf8mb4_general_ci ,
CHANGE COLUMN `product_id` `product_id` VARCHAR(45) CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci' NOT NULL COMMENT '商品id' ;
3.修改表的表下所有字段
此方式诫硕,強制統(tǒng)一整個表的所有字段編碼坦辟。
alter table `test` convert to character set utf8mb4 ,COLLATE utf8mb4_general_ci ;
4.修改整個庫
似乎沒有一個sql完成的方式,可以使用腳本章办,show tables 锉走,循環(huán)讀表 滨彻,執(zhí)行第三步。
統(tǒng)一庫表編碼的作用
當進行多表join操作時挪蹭,如果join的兩個字段編碼不一致亭饵,查詢可能會報錯,即使不報錯梁厉,也會影響查詢性能辜羊。