数值类型
1.位类型
bit(M)
M指定位数,默认为1。M范围是1到64,所以存储的数据范围是0到2^64-1.
2.整型
tinyint 一个字节,对应Java中的Byte
smallint 两个字节,对应Java中的Short
int四个字节,对应Java中的Integer
bigint 八个字节,对应Java中的long类型
3.浮点型
float(M,D) 四个字节,M指定长度,D指定小数位数
double(M,D) 八个字节
4.定点型
decimal(M,D) M/D的最大值加2个字节,M指定长度,D指定小数位数
与浮点型相比,decimal的精度更高。但运算速度变慢,占用空间更多
numeric和decimal一样
注意
数值类型可以指定为无符号的,表示不取负数。
对于整型,有符号的范围是-2^(类型字节数*8-1)到2^(类型字节数*8-1)-1;无符号的范围是0~2^(类型字节数*8)-1,因为一个字节是8个比特位
注意,尽量不使用unsigned,因为如果由于某些操作(比如小数减大数)导致出现负数后,系统无法显示负数,就会变成很大很大的正整数。
字符串类型
1.varchar(size)
范围是0~65535字节
varchar是变长字符串,size表示该类型里最多存几个字符(注意不是字节)
注意:当我们指定size为10,不是说当下立即分配是个字符的空间,而是先分配一个比较小的空间,如果不够再自动扩容
2.text
范围是0~65535个字节,一般用于存放长文本数据,或者是在不知道字符串长度范围无法指定size大小是使用
3.mediumtext
范围是0~16777215字节,中等长度文本数据
4.blob
范围是0~65535字节,存放二进制形式的长文本数据,对应java中的byte[ ]。
日期类型
1.datetime
八字节
范围是从1000年到9999年,不会进行时区的检索以及转换
2.timestamp
四字节。范围是从1970年到2038年,自动检索当前时区并转换
由于它只能表示到2038年,所以现在不建议再用timestamp,而一般用datetime