整数类型:整数类型是数据库中最基本的数据类型。标准SQL中支持INTEGER和SMALLINT这两种数据类型。MySQL数据库除了支持这两种数据类型以外,还扩展支持TINYINT、MEDIUMINT和BIGINT。下表从不同整数类型的字节数、取值范围等方面进行对比。
整数类型的附带属性:
(1)类型名称后面的小括号:指定显示宽度(并不是该类型占用的字节数)。如果不显示指定的宽度则默认为tinyint(3)、smallint(5)、mediumint(8)、int(11)和bigint(20)。一般配合zerofill使用,顾名思义,zerofill就是用"0"填充的意思,也就是在数字位数不够的空间用字符"0"填空(和C语言中%xd一样的作用)。
我们首先创建表令int类型的宽度为8并用0来填充,其次再插入数据,最后显示00001001正好是8位。
(2)UNSIGNED(无符号)如果需要在字段里面保存非负数或者需要较大的上限值时,可以用此选项,它的取值范围是正常值的下限取0,上限取原值的2倍,例如int有符号的范围是-2147483648~+2147483647,而无符号的范围是0~4294967295。如果一个列指定为zerofill,则MySQL自动为该列添加属性UNSIGNED属性。
上例中表class1中已为列指定为zerofill,则一定不能添加负数了
如果添加就会添加失败。
下面我们创建属性为unsigned的表来验证。
class2表中我们创建了unsigned属性,因此int的范围变为0~4294967295,则会添加成功。
(3)AUTO_INCREMENT在需要产生位移标识符或顺序值时,可利用此属性,这个属性只用于整数类型。AUTO_INCREMENT值一般从1开始,每行增加1。一个表中最多只能有一个AUTO_INCREMENT列。对于任何想要使用AUTO_INCREMENT的列,应该定义为NOTNULL,并定义为PRIMARY KEY或定义为UNIQUE键。
此时我们创建表class3第一次只对name进行赋值,则会发现id自动变为了1,其次我们再连续添加两组数据:
添加第一组数据时令id为10,添加第二组数据我们只为name进行赋值则会发现他的id为11,由此我们推断出是根据大的id值自动+1。