美文网首页
数据库设计中int(11)和int(4)有什么区别?

数据库设计中int(11)和int(4)有什么区别?

作者: Figo_OU | 来源:发表于2023-11-09 11:17 被阅读0次

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

    image.png

    那么,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);
    

    结果如下:

    image.png

    不同点来了:所以字段有ZEROFILL关键字修饰的时候,才有在展示的时候不足11位的前面补0.

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

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

    相关文章

      网友评论

          本文标题:数据库设计中int(11)和int(4)有什么区别?

          本文链接:https://www.haomeiwen.com/subject/bbccwdtx.html