MySQL的数据类型
主要包括以下五大类
- 数字类型:整数类型 tinyint、smallint、mediumint、int、bigint
- 数字类型:浮点数类型 float、double、decimal
- 字符串类型 char、varchar、tinyblob、blob、mediumblob、longblob、tinytext、text、mediumtext、longtext、Enum、Set
- 日期类型 Date、DateTime、TimeStamp、Time、Year
其他数据类型:用的比较少
注意:decimal采用的是四舍五入,decimal插入的数据超过精度之后会触发警告。float和double采用的是四舍六入五成双。
什么是四舍六入五成双?
就是5以下舍弃5以上进位,如果需要处理数字为5的时候,需要看5后面是否还有不为0的任何数字,如果有,则直接进位,如果没有,需要看5前面的数字,若是奇数则进位,若是偶数则将5舍掉
说明:表格中的L表示存储的数据本身占用的字节,L 以外所需的额外字节为存放该值的长度所需的字节数。MySQL 通过存储值的内容及其长度来处理可变长度的值,这些额外的字节是无符号整数。
日期类型
注意:日期格式中,大写和小写是有区别的
数据类型选择的一些建议
- 选小不选大:一般情况下选择可以正确存储数据的最小数据类型,越小的数据类型通常更快,占用磁盘,内存和CPU缓存更小
- 简单就好:简单的数据类型的操作通常需要更少的CPU周期,例如:整型比字符操作代价要小得多,因为字符集和校对规则(排序规则)使字符比整型比较更加复杂。
- 尽量避免NULL:尽量制定列为NOT NULL,除非真的需要NULL类型的值,有NULL的列值会使得索引、索引统计和值比较更加复杂。
- 浮点类型的建议统一选择decimal
- 记录时间的建议使用int或者bigint类型,将时间转换为时间戳格式,如将时间转换为秒、毫秒,进行存储,方便走索引
计算数据占用多少空间
有了如上的表格
比如你数据库某一张表有三个字段:一个int
型,一个long
型,一个varchar(100)
型,一个date
型。
int
型占用4个字节
(一个字节8位),long
型占用8个字节
,data
占用8字节
。
那么一行占用:4+8+100+8=120Byte
。
那么100万
行,大约有115M
。这是三列。如果是10列,就可以粗略估计出来了
评论( 0 )