赞
踩
目录
1、float、double、decimal?
float、double、decimal都是用来表示小数的。
大家都看到了,这三个数据类型很特别,后面都跟着M,D。
此MD,非彼MD。
M的意思是精度
D的意思是标度
2、M和D什么意思?
举个例子(定义一列数据):
test 是数据的名字,具体语法先不管。
3对应的就是M
1对应的就是D
此时定义的这种数据只能够存储:
12.3、11.1、23.1这类数据。
也就是说:
D是小数点后有几位;
M是数字的总位数
3、M和D有什么用?
因为规定了精度,所以可以大致测算数据的最大容量是多少,这个开企业开发中是尤为重要的数据。
其次,在设置精度后,MySQL会“勤俭持家”,只会分配给定大小的内存给到数据。
比如:
12.1就只会分配12.1存储的最大占用内存给到数据;
1112223333.1212 也会分配其存储的最大占用内存给到数据;
可以起到节省内存的作用。
上述数据类型的大小范围:
大小范围都是根据最大占用内存用二进制换算出来的。
比如tinyint占用内存1个字节,也就8个比特位,那么最多可以表示2^8-1个数字。
上述数据类型都是含有符号的数据类型,也就是含有正负号。
MySQL中也有其对应的无符号类型。(unsign,和C语言中的那个概念一样的)
但是强烈不推荐用!
原因是:
在由于无符号类型的存储逻辑,在对无符号类型进行计算的时候,可能会出现溢出,导致程序后序运行逻辑出错,造成不可估量的后果。
就连MySQL官方文档中也说过,不建议使用无符号类型,甚至会在今后的版本中不在支持无符号数据。
注:
1) MySQL中没有字符类型,只有字符串类型。
也因此在表示字符串时,可以用单引号,也可以用双引号。
(但,这在含有字符类型的编程语言中是不允许的。例如java)
2)varchar和char括号中的SIZE代表可以填入的最大字符串长度。
但SIZE也不能超过两种数据类型可以表示的范围。
1、可变长
可变长(varchar)就类似于JAVA中的可变长二维数组。
意思是,可以根据输入的数据长度,分配给数据相应大小的内存,这样可以节省空间。
但是定长(char)不行,即使储存一个字符,‘s’,它分配的内存也是255个字节。
2、blob
带blob的都是二进制数据,很少用,因为效率不高且不方便管理。
对于二进制数据,一般会采用专门的文件服务器进行存储。
data、time、datatime用的相对较多一些。
注意少用timestamp,因为它会在2038年失效。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。