MySQL数据类型
可以被分为3类:
1.整型,数值类型
2.日期和时间类型
3.字符串(字符)类型
整型
数据类型 | 大小 | M (默认值) |
范围(有符号) | 范围(无符号) | 用途 |
tinyint [(M)] [UNSIGNED] [ZEROFILL] | 1字节 | 4 | -128~127 (-27~27-1) | 0 ~ 255 (0 ~ 28-1) | 非常小整数值 |
smallint [(M)] [UNSIGNED] [ZEROFILL] | 2字节 | 6 | -32768~32767(-215 ~ 215-1) | 0 ~ 65535 (0 ~ 216-1) | 较小整数 |
mediumint [(M)] [UNSIGNED] [ZEROFILL] | 3字节 | 9 | -8388608 ~ 8388607 (-223 ~ 223-1) | 0 ~ 16777215 (0 ~ 224-1) | 中等大小整数 |
int [(M)] [UNSIGNED] [ZEROFILL] | 4字节 | 11 | -2147483648 ~ 2147483647(-231 ~ 231-1) | 0 ~ 4294967295 (0 ~ 232-1) | 标准整数 |
integer [(M)] [UNSIGNED] [ZEROFILL] | 4字节 | 11 | -2147483648 ~ 2147483647(-231 ~ 231-1) | 0 ~ 4294967295 (0 ~ 232-1) | 和int相同 |
bigint [(M)] [UNSIGNED] [ZEROFILL] | 8字节 | 20 | -9223372036854775808 ~9223372036854775807 (-263 ~ 263-1) |
0 ~ 18446744073709551615 (0 ~ 264-1) |
较大整数 |
注:取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。
方括号(“[”和“]”)指出可选的类型修饰符的部分
M :指出最大的显示尺寸。最大的合法的显示尺寸是 255 。 在MySQL中创建整型字段INT(或其它像tinyint)时,可以设定该字段的位数。如int(11),int(5),如果不指定位数,INT型默认长度为11。字段插入长度与int设定的M无关,当插入长度大于设定的M时,字段值不会被截断,还是按照类型的实际精度进行保存。
D :适用于浮点类型并且指出跟随在十进制小数点后的数码的数量。最大可能的值是30,但是应该不大于M-2。
ZEROFILL: 填零,即在数字长度不够的数据前面填充0,以达到设定的长度,MySQL中字段设置为该属性时,将为该列自动地增加UNSIGNED属性.整型字段有个ZEROFILL属性,在数字长度不够的数据前面填充0,以达到设定的长度。M值只当属性为ZEROFILL时,才有区别效果。如表结构为id1 int(10) ,id2 int(5),对应数据为 第一行为(1,1),第二行为(1111111,1111111),当id1,id2字段设置为ZEROFILL属性时,显示数据为第一行为(0000000001,00001),第二行为(0001111111,1111111),不够的位数会以0补齐。
UNSIGNED
为“无符号”的意思, 即为非负数。是MYSQL自定义的类型,非标准SQL。unsigned 属性只针对整型,用途:
1.UNSIGNED 可用来约束数据的范围,例如有些年龄这种值一般能是负数,那么就可以设置一个 UNSIGNED ,这样可以不允许负数插入。
2.可以增加数值范围(相当于把负数那部分加到正数上)。不过少用,不方便移植。
整型的每一种都分有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的正整数数据,比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。另外,unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int。