赞
踩
int(11)、tinyint(4)、smallint(6)、mediumint(9)、bigint(20)
1、整数型的数值类型已经限制了取值范围,有符号整型和无符号整型都有,
而M值并不代表可以存储的数值字符长度,它代表的是数据在显示时显示的最小长度;
2.当存储的字符长度超过M值时,没有任何的影响,只要不超过数值类型限制的范围;
3、当存储的字符长度小于M值时,只有在设置了zerofill用0来填充,才能够看到效果,
换句话就是说,没有zerofill,M值就是无用的。
(M,D)M表示该值的总共长度,D表示小数点后面的长度 M和D又称为精度和标度
MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001。
FLOAT和DOUBLE在不指定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0
CHAR(M), VARCHAR(M)
CHAR(M)定义的列的长度为固定的,M取值可以为0~255之间,当保存CHAR值时,
在它们的右边填充空格以达到指定的长度。当检 索到CHAR值时,尾部的空格被删除掉。
在存储或检索过程中不进行大小写转换。CHAR存储定长数据很方便,CHAR字段上的索引效率级高,
比如定义 char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充。
VARCHAR(M)定义的列的长度为可变长字符串,M取值可以为0~65535之间,
(VARCHAR的最大有效长度由最大行大小和使用 的字符集确定。整体最大长度是65,532字节)。
VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则 使用两个字节)。
VARCHAR值保存时不进行填充。当值保存和检索时尾部的空格仍保留,符合标准SQL。varchar存储变长数据,但存储效率没有 CHAR高。
如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。
VARCHAR类型的实际长度是它的值的实际长度+1。为什么”+1″呢?这一个字节用于保存实际使用了多大的长度。
从空间上考虑,用varchar合适;从效率上考虑,用char合适
从效率上考虑,用char合适,例如:身份证号,手机号,电话,密码等
所以当需要大量查询需求的时候,用char。当对于保存数据量过大的需求时,为了节省储存空间用varchar
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。