【MySQL】请问为什么字段长度(4)不见了呢?

起因

事情是这样的,我在MySQL中创建了一个叫“销售表”的table,其中有一个字段为“序号”,我为它设置了主键约束PRIMARY KEY字段长度为 4,同时也为它设置了auto-increment 字段
但是就在我在查表的时候发现 字段长度 4 不见了,请问这是什么原因呢?

问题相关代码

这是我建表时的源代码:

CREATE TABLE 销售表
(序号 TINYINT(4) PRIMARY KEY NOT NULL AUTO_INCREMENT,
销售日期 DATE NULL,
客户名称 VARCHAR(30) NULL,
货号 CHAR(4) NULL,
单价 DECIMAL(8, 2) NULL,
数量 INT(4) NULL,
`销售员ID` CHAR(6) NULL,
FOREIGN KEY (货号) REFERENCES 商品一览表(货号),
FOREIGN KEY (销售员ID) REFERENCES 员工表(员工ID)
);
运行结果及报错内容

img

找到原因了,MySQL在 8.0.17 版本开始,就不会显示如 TINYINT , SMALLINT , MEDIUMINT , INT , BIGINT 这些数据类型的字段长度。
MySQL官网上是这么说的:

img

img

感觉是 int , tinyint 类型的长度由系统控制, 这样便于迁移。

你可以试试做个表导出成sql , 看定义里有没有长度。

int,tinyint类型的数据都有取值范围,以tinyint为例,最大值为127,所以无论你是否设置长度,127内都可以赋值,不管你是设置了长度为1或2,所以设置数据库脚本时系统估计做了自动处理,望采纳