2019-07-19 SQL 修改库表编码,与统一库表编码的作用

数据库不同的编码支持的字符集是不一样的,(比如utf8不支持emoji,utf8mb4可以支持)。如果数据库中的表的编码不一致,轻则能够影响关联查询的效率(无法使用索引),重则直接出错(无法关联)。因此,绝大多数情况下,统一库表编码是有必要的。

下面给出修改表编码的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.修改表的表下所有字段

此方式,强制统一整个表的所有字段编码。

alter table `test` convert to character set utf8mb4 ,COLLATE utf8mb4_general_ci  ;

4.修改整个库

似乎没有一个sql完成的方式,可以使用脚本,show tables ,循环读表 ,执行第三步。

统一库表编码的作用

当进行多表join操作时,如果join的两个字段编码不一致,查询可能会报错,即使不报错,也会影响查询性能。

你可能感兴趣的:(2019-07-19 SQL 修改库表编码,与统一库表编码的作用)