优秀的编程知识分享平台

网站首页 > 技术文章 正文

int(11) 和 int(4) 有什么区别?MySQL 整数类型详细解析

nanyue 2024-11-15 22:53:46 技术文章 2 ℃

MySQL 中定义表格的字段时,有一个常见的数据类型就是 int(11)。那么这个 int(11) 到底代表什么意思呢?往下看↓ ↓ ↓

首先,让我们来看一下 int 数据类型的定义。在 MySQL 中,int 数据类型是一种整数类型,可以存储有符号的整数值,其取值范围为 -2147483648 到 2147483647。也就是说,int 数据类型在 MySQL 中所占用的存储空间是 4 个字节。

那么,int(11) 中的括号里的11代表什么意思呢?实际上,这个括号中的数字并不代表 int 数据类型所占用的存储空间,而是表示该字段的显示宽度。换句话说,int(11) 中的 11 表示该字段的最大显示宽度为 11 个字符。但是,需要注意的是,这个数字并不影响该字段的存储空间或取值范围。

为了更好地理解 int(11) 的意义,我们可以通过以下实例进行说明。假设我们有一个表格,其中有一个字段定义为 int(11),名为 id。如果我们向该字段插入一个值为 1234567890 的整数,那么该值会被完整地存储在该字段中,并不会受到显示宽度的限制。但是,如果我们使用类似于 SELECT id FROM table 的 SQL 查询语句来查询该表格中的数据,该字段的值会以宽度为 11 个字符的形式显示出来,不足 11 个字符的值会在前面填充空格。

CREATE TABLE int_demo (
    id INT(11) NOT NULL AUTO_INCREMENT,
    a INT(11) NOT NULL,
    b INT(11) UNSIGNED ZEROFILL NOT NULL,
    c INT(5) DEFAULT NULL,
    d INT(5) UNSIGNED ZEROFILL NOT NULL,
    e INT(15) DEFAULT NULL,
    PRIMARY KEY (`id`)
)

INSERT INTO int_demo (a, b, c, d, e) VALUES (1, 1, 1, 1, 1);
INSERT INTO int_demo (a, b, c, d, e) VALUES (1234567890, 1234567890, 1234567890, 1234567890, 1234567890);

结果如下:


需要注意的是,int 字段的显示宽度并不是必需的。如果不指定显示宽度,MySQL 会默认为 int 字段分配最大的存储空间,也就是 4 个字节。因此,int(11) 和 int(4) 在存储空间上是完全相同的。

除了 int 类型之外,MySQL 还支持其他的整数类型,包括 tinyint、smallint、mediumint 和 bigint。这些整数类型也可以通过类似于 int(11) 的方式进行定义,并且也可以指定显示宽度。

Tags:

最近发表
标签列表