版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37865510/article/details/84666032
比如这条创建表的sql
create table `db_goods` (
`id` bigint unsigned not null AUTO_INCREMENT comment '主键',
`goods_id` int(11) unsigned not null comment '商品id',
`goods_title` varchar(225) not null DEFAULT '' comment '商品名称',
`goods_price` decimal(10,2) not null comment '商品价格',
`create_time` timestamp not null DEFAULT CURRENT_TIMESTAMP comment '创建时间',
`update_time` timestamp not null DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商品表';
今天大佬突然说让我们把要上线的sql改一下,我一直不明白为啥,首先把主键id变成bigint,并且为无符号的,今天从网上查了一下,发现了中间的不同。
bigint
从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。
P.S. bigint已经有长度了,在mysql建表中的length,只是用于显示的位数
int
从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer。
smallint
从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型数据。存储大小为 2 个字节。
tinyint
从 0 到 255 的整型数据。存储大小为 1 字节。
基本小的类型什么的,如果只有是或者否的类型,那么就可以用tinyint,存储小。
如果数据表不是很常用,那么我们就可以用int,如果是用户表或者日志表,就可以用无符号的bigint
int类型在数据库中占4个字节(byte),即32位
int有符号类型 取值在 - 2147483648 ~ 2147483647之间
int无符号类型 取值在 0 ~ 4294967295之间
这些只是我个人的想法,有问题可以评论,谢谢