MySql8中常用的六种数据类型:
整数类型
实数类型
字符串类型
日期和时间类型
位数类型
JSON类型
-
整数类型:INT(最常用),TINYINT(用于小数据,对应Byte)。
MySql 可以为整数类型指定宽度,例如INT(11) -
实数类型:又叫小数类型,一般使用DECIMAL较多
注意:FLOAT和DOUBLE可表示的范围不是完全连续的浮点数,由于精度的限制,有些极小的小数是表示
不了的。(精度丢失)
涉及到金额计算,在数据量比较大的时候,可以考虑用BIGINT代替DECIMAL。 -
字符串类型:CHAR和VARCHAR使用最多
定长字符串:规定多少字节就多少字节,不能改动
边长字符串:根据字节的大小而改变,但不能超过自身的字节
CHAR类型时定长的,会根据定义的长度分配控件。当存储CHAR值时,MySQL会删除所有的末尾空格。
CHAR很适合存储很短的字符串,或者所有的值都接近同一个长度。对于经常变动的数据,CHAR也比VARCHAR更好,因为定长的CHAR类型不容易产生碎片。
对于非常短的列,CHAR比VARCHAR在存储空间上也更有优势,例如CHAR(1)来存储只有Y和N的值,如果采用单字节只需1个字节,但是VARCHAR(1)却需要2个字节,因为还需要一个记录长度的额外字节。
哪些情况使用VARCHAR类型比较合适呢?
字符串的列长度比平均长度打很多
列的更新很少,碎片不是问题
使用了像utf-8这样复杂的字符集,每个字符都使用了不同的字节数进行存储
4. 日期和时间类型
- JSON类型:MySQL8支持直接存储到json格式字符串,对应的是json数据类型。
Json数据列会自动验证json的数据格式,如果格式不正确会报错。
最优化存储格式。Json数据类型会把json格式的字符串转换成内部格式,能够快速的读取其中的元素。
小结:更小的更好
简单就好
尽量避免null