MySQL中int(M)和tinyint(M)数值类型中M值的意义

MySQL中int(M)和tinyint(M)数值类型中M值的意义

mysql的基本数据类型里几个int如下:

类型 大小 范围(有符号) 范围(无符号) 用途
TINYINT 1字节 (-128,127) (0,255) 小整数值
SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值

最近工作中自己设计数据库表,对有些表字段使用int还是tinyint产生了疑惑:之前的理解是其中的M的意思是插入数据库中的值的字符长度不能大于M,例如,int(4),想要插入1234,1234的字符长度是4,就正好可以插入数据库,12341就不行,因为是5个字符长度,这也都是道听途说,自己从来没有验证过;

如今,由于面试中经常会被问到有关数据库方面的知识,今天也想着深入了解下这个M代表的含义(上述两个理解都是错误的)。

首先:创建一个数据库test:

CREATE TABLE test (id1 INT(1), id2 TINYINT(1));

插入一条数据:

INSERT INTO test(id1,id2) values(127,127);

显示操作成功:

INSERT INTO test(id1,id2) values(127,127);
受影响的行: 1
时间: 0.003s

再插入另一条数据:

INSERT INTO test(id1,id2) values(128,128);

执行结果:

INSERT INTO test(id1,id2) values(128,128);
[Err] 1264 - Out of range value for column ‘id2’ at row 1

你可能感兴趣的:(mysql)