这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战
4mysql基本类型
整数类型
整数类型:
- tinyint:8位存储空间
- smallint:16位存储空间
- mediumint:24位存储空间
- int:32位存储空间
- bigint:64位存储空间
有unsigned属性,表示不允许为负值。
有符号和无符号类型使用相同的存储空间,具有相同的性能,可以根据实际情况选择合适的类型。
可以为整数类型指定宽度,例如int(10) ,这对大多数应用没有音乐,对于存储和计算来说,int(10)和int(20)相同
实数类型
float和double类型支持使用标准的浮点运算进行近似计算。
decimal类型用于存储精确的小数。mysql5.0和更高版本,decimal类型支持精确计算。
浮点类型在存储同样范围的值时,通常比decimal使用更少的空间,float占4个字节,double占8个字节。
尽量在对小数进行精确计算时才使用decimal,比如存储财务数据。如果数据量比较大,考虑使用bigint类型代替decimal。小数的位数乘以倍数来存储。
字符串类型
varchar
varchar类型用于存储可变长字符串,比定长类型更节省空间
char
char类型是定长的,char适合存储很短的字符串,或者所有值都接近同一个长度。char非常适合存储秘密的md5值,因为是定长的。定长的char类型不容易产生碎片,char比varchar在存储空间更加有效率,char(1)存储只需要一个字节,varchar(1)需要两个字节,一个记录长度的额外字节。
blob
blob存储很大的数据而设计的字符串二进制方式存储
text
存储很大的数据而设计的字符串字符方式存储
当blob和text值太大的时候,Innodb使用专门的外部存储 区域来进行存储,每个值的行内需要1到4个字节存储一个指针,然后在外部存储区域存储实际的值。
blob类型存储是二进制数据,没有排序规则或字符集,text类型有字符集和排序规则
mysql不能将blog和text列全部长度的字符串进行索引,也不能使用这些索引消除排序。
日期类型
datetime
它把日期和时间封装到格式为YYYYMMDDHHMMSS的整数中,使用8字节存储
timestamp
保存从1970年1月1日午夜以来的秒数,使用4字节存储,显示的值依赖于时区,timestamp默认为not null,当插入时候没有指定第一个列的timestamp的值的时候,Mysql设置这个列的值为当前时间。当插入一条数据时也会更新第一个列的值。
通常尽量使用timestamp,因为它比datetime的空间效率更高,更节省空间。