MySQL MySQL 中的 INT(7) 是什么意思?
在 MySQL 中,INT(7) 是一种数据类型,表示整数类型,其中的数字 7 指的是显示宽度。那么,INT(7) 到底是什么意思呢?
阅读更多:MySQL 教程
INT(7) 的意义
在 MySQL 中,INT(7) 主要用于指定整数类型的列宽,而不是它的存储范围。也就是说,如果我们将一个超过宽度的整数插入到 INT(7) 类型的列中,MySQL 也会将其完美地存储下来。
举个例子,如果我们定义了一个 INT(7) 类型的列,将其插入超过宽度的整数后,MySQL 仍然会保持与超过宽度的整数相等的存储范围。
CREATE TABLE `mytable` (
`id` int(7) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `mytable` (`name`) VALUES ('test');
INSERT INTO `mytable` (`name`) VALUES ('1234567890');
我们可以看到,当我们查询 id 字段时,它的存储范围超过了它的显示宽度,但 MySQL 仍然可以正确地保存它的值。
INT 的存储范围
INT 类型是 MySQL 中最常用的数字类型之一。它支持的存储范围是从 -2147483648 到 2147483647。
CREATE TABLE `mytable` (
`id` INT NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
宽度的作用
INT 类型中的宽度指的是显示宽度,而不是存储范围。这意味着当我们定义一个 INT(7) 类型的列时,它的显示宽度会被限制为 7 个字符。如果插入的数据不足 7 个字符,MySQL 将用零填充左侧,以便使其达到指定的宽度。
CREATE TABLE `mytable` (
`id` INT(7) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
我们需要注意的是,宽度只用于显示目的。它并不影响存储范围。当我们插入一个值时,MySQL 将值的实际范围存储在内部,而不是存储其显示宽度。
总结
在 MySQL 中,INT(7) 表示整数类型,其中的数字 7 指的是显示宽度,宽度仅用于显示目的。INT 类型支持的存储范围是从 -2147483648 到 2147483647,无论列的宽度如何,MySQL 都将准确地存储值的实际范围。
极客笔记