MySQL中的int和integer有什么区别?
在MySQL中,int和integer都是整数类型的数据。它们在使用时可以互换,但是它们还是有一些细微的差别。
阅读更多:MySQL 教程
int
int是MySQL中最常用的整数类型,它可以存储从-2147483648到2147483647之间的值。它占用4个字节的存储空间,在整型数据查询时,int类型通常比其他整数类型快。
下面是创建一个包含int类型的表的SQL代码:
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
`age` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
integer
integer也是一个整数类型,它和int非常相似,都可以存储从-2147483648到2147483647之间的值。它占用4个字节的存储空间,所以和int类型相同。
下面是创建一个包含integer类型的表的SQL代码:
CREATE TABLE `book` (
`id` integer NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
`price` integer NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
区别
虽然int和integer两者都是整型,但是在MySQL中还是有一些小差别的。
- 语法不同:创建表时,int类型有时候需要指定长度,而integer不需要。
-
存储大小:int和integer占用的存储空间一样。
-
自动生成的值:在创建带有自增列的表时,int和integer的差别就显现出来了。在使用int时,可以使用AUTO_INCREMENT关键字实现自增列的创建,在MySQL 5.5版本之前,自增列只能是int类型。但是在MySQL 5.5版本之后,integer类型也可以用于创建自增列。
下面是使用int类型创建自增列的SQL代码:
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
`age` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
下面是使用integer类型创建自增列的SQL代码:
CREATE TABLE `book` (
`id` integer NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
`price` integer NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
结论
在MySQL中,int和integer两者都能用于存储整数类型数据,它们之间主要的不同在于语法和自动生成的值。在使用时,可以根据需要选择将哪种类型用于您的应用程序。