mysql中int、bigint、smallint 和 tinyint的区别与长度

通过创建一张表,来看看 mysql 中 int bigint smallint 和 tinyint的区别与长度

1、在mysql 命令行创建如下表

1CREATE TABLE `test_int_1` ( 2 `int_id` int NOT NULL, 3 `bigint_id` bigint DEFAULT NULL, 4 `bigint_25` bigint(25) DEFAULT NULL, 5 `bigint_18` bigint(18) DEFAULT NULL, 6 `int_8` int(8) DEFAULT NULL, 7 `int_3` int(3) DEFAULT NULL, 8 `smallint_id` smallint DEFAULT NULL, 9 `tinyint_id` tinyint DEFAULT NULL, 10 PRIMARY KEY (`int_id`) 11) ENGINE=InnoDB DEFAULT CHARSET=utf8

2、desc

1mysql> desc test_int_1; 2+-------------+-------------+------+-----+---------+-------+ 3| Field | Type | Null | Key | Default | Extra | 4+-------------+-------------+------+-----+---------+-------+ 5| int_id | int(11) | NO | PRI | NULL | | 6| bigint_id | bigint(20) | YES | | NULL | | 7| bigint_25 | bigint(25) | YES | | NULL | | 8| bigint_18 | bigint(18) | YES | | NULL | | 9| int_8 | int(8) | YES | | NULL | | 10| int_3 | int(3) | YES | | NULL | | 11| smallint_id | smallint(6) | YES | | NULL | | 12| tinyint_id | tinyint(4) | YES | | NULL | | 13+-------------+-------------+------+-----+---------+-------+ 148 rows in set (0.00 sec)

对比发现 int bigint smallint 和 tinyint 类型,如果创建新表时没有指定 int(M) 中的M时,默认分别是 :

int             -------     int(11)

bigint       -------     bigint(20)

smallint   -------     smallint(6)

tinyint     -------     tinyint(4)

下面是这几种类型的取值范围

MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。int(M) 在 integer 数据类型中,M 表示最大显示宽度,该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。

显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。

在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并无任何关系。和数字位数也无关系, int(3)、int(4)、

int(8) 在磁盘上都是占用 4 btyes 的存储空间。

当结合可选扩展属性ZEROFILL使用时, 默认补充的空格用零代替。例如,对于声明为INT(5) ZEROFILL的列,

值4检索为00004。

bigint 用于某些特殊的情况,当整数值超过 int 数据类型支持的范围时,就可以采用 bigint。

(关于 int(M) 的测试未完待续)

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )