创建表时:ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT=‘城市维度表‘;

-- Table structure for dim_city
-- ----------------------------
DROP TABLE IF EXISTS `dim_city`;
CREATE TABLE `dim_city` (
  `CityID` bigint(20) NOT NULL DEFAULT '0' COMMENT '城市id',
  `CityName` varchar(50) NOT NULL DEFAULT '' COMMENT '城市名称',
  `ProvinceID` bigint(20) NOT NULL DEFAULT '0' COMMENT '省份ID',
  `CityType` int(10) NOT NULL DEFAULT '0' COMMENT '类型(1:省 2:市 3:县/区 4:镇/乡)',
  `SyncTime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '同步时间',
  PRIMARY KEY (`CityID`),
  KEY `idx_provinceId` (`ProvinceID`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='城市维度表';

一. 解释

1、ENGINE=InnoDB

InnoDB:数据库默认的存储引擎,处理大容量数据。

删除表时:InnoDB不会重新建立表,而是一行一行的删除 会在内存中缓冲数据和索引,但是不支持fulltext的索引

2、DEFAULT CHARSET=utf8mb4

数据库默认编码为utf8mb4

这个虽然在my.ini设置过了,但设置的是mysql的的语言编码。而这里创建的时候不设置,就会出现乱码问题,二者的作用域是不一样的,在创建表单的时候,这个charset会作用到这个表上,它代表mysql简历数据库数据表时设定字符集为utf-8mb4。

二、utf8 与 utf8mb4 异同

        MySQL在5.5.3版本之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。其实,utf8mb4是utf8的超集并完全兼容utf8,能够用四个字节存储更多的字符,理论上原来使用utf8,然后将字符集修改为utf8mb4,也会不会对已有的utf8编码读取产生任何问题。但是一般为了节省空间,使用utf8就够了。

       MySQL里实现的utf8最长使用3个字节,但是现在生活中手机常用的表情字符 emoji还有一些不常用的汉字,如 别墅的“墅” ,这些需要四个字节才能编码出来,所以就需要utf8mb4。


文章参考了很多资料,做一个这方面的简单记录,方便后续自己查看,大家可自行查阅。
参考资料:

https://blog.csdn.net/yan791124465/article/details/70738939

https://blog.csdn.net/qq_17555933/article/details/101445526

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值