MySql中的bigint(20)是什么数据类型?

本文详细介绍了Mysql中常用的各类数据类型,包括整数型(如bigint及其取值范围)、浮点型、字符串类型和日期时间类型,同时解析了bigint(m)中的m含义和zerofill选项的作用。

在Mysql中我们要使用的数据类型有:

  • 整数型:bit,bool,tinyint,smallint,mediumint,int,bigint
  • 浮点型:float,double,decimal
  • 字符串类型:char,varchar,tinytext,text,mediumtext,longtext,tinyblob,blob,mediumblob,longblob
  • 日期时间类型:Date,DateTime,TimeStamp,Time,Year

bigint(20)是属于整型中的一类:

整型包括:

数据类型取值范围及占用字节数
tinyint(m)1个字节 范围(-128~127)
smallint(m)2个字节 范围(-32768~32767)
mediumint(m)3个字节 范围(-8388608~8388607)
int(m)4个字节 范围(-2147483648~2147483647)
bigint(m)8个字节 范围(±9.22*10的18次方)

注意点:表中的数据类型列的括号里边都有个m,括号中的 m是代表的什么含义呢?

  • m表示的是显示数据宽度,不同中数据类型它的数据宽度也是有差别的。
  • 数据宽度和数据类型的取值范围彼此之间是相互独立的,没有任何联系。
  • bigint(m)默认宽度为20,如果创建时表中设置了zerofill关键字(默认是用0填充的)
  • zerofill含义是:往表中插入的数值比定义的长度小的时候,会在数值前进行补值。
<think>嗯,用户询问MySQLbigint和int类型数据的默认长度问题。首先需要明确"长度"在MySQL数值类型中的特殊含义——这里容易产生歧义,因为用户可能混淆了存储长度和显示宽度。 参考引用[2]和[4]提到,int(5)这种写法中的数字5是显示宽度,不影响实际存储空间。这很关键,用户可能误以为括号里的数字是存储长度。实际上int固定占4字节,bigint固定占8字节,这是由数据类型本身决定的[^2][^4]。 关于默认显示宽度,int类型默认是11位,bigint默认是20位。这个设计很有意思:11位正好对应int有符号最小值-2147483648的字符数(11个字符),20位对应bigint有符号最小值-9223372036854775808的字符数(20个字符)[^2]。MySQL这样设置是为了完整显示极端值。 需要提醒用户注意存储范围差异。int的4字节存储范围是±21亿,bigint的8字节范围是±92亿亿[^3]。如果用户存储的值超过42亿就必须用bigint,否则会溢出报错。 考虑到用户可能混淆概念,准备在回答时强调三点:存储长度固定不可变、显示宽度只影响格式化输出、实际范围由字节数决定。最后用表格对比会更清晰。 用户没有提到无符号类型,但这也是重要知识点。无符号int范围是0到42亿,显示宽度默认10位(对应最大值4294967295的10位数)。这个补充信息可能对用户有用。</think>在MySQL中,`int`和`bigint`的**默认显示宽度**(即创建表时不指定括号内数字时的长度)如下: 1. **int 类型** - **默认显示宽度:`11`** - **实际存储空间:固定 `4 字节`** - 范围:有符号值 `-2147483648` 到 `2147483647`;无符号值 `0` 到 `4294967295` - 示例:定义 `int` 等效于 `int(11)`[^2][^4] 2. **bigint 类型** - **默认显示宽度:`20`** - **实际存储空间:固定 `8 字节`** - 范围:有符号值 `-9223372036854775808` 到 `9223372036854775807`;无符号值 `0` 到 `18446744073709551615` - 示例:定义 `bigint` 等效于 `bigint(20)`[^2][^3] --- ### 关键概念说明: - **显示宽度(如 `int(11)`)** 仅影响客户端显示格式(例如用 `ZEROFILL` 时左侧补零),**不改变存储范围或占用空间**。`int(3)`、`int(11)` 均占用 4 字节[^2][^4]。 - **存储空间与范围** | 类型 | 存储空间 | 有符号范围 | 无符号范围 | |-----------|----------|-------------------------------------|-------------------------------| | `int` | 4 字节 | -2147483648 ~ 2147483647 | 0 ~ 4294967295 | | `bigint` | 8 字节 | -9.2e18 ~ 9.2e18 | 0 ~ 1.8e19 | - **选择建议** - 若数值 ≤ 42亿(如ID、状态码),用 `int` 更节省空间 - 若数值可能超过42亿(如金融流水、天文数据),必须用 `bigint`[^3] --- ### 示例对比 ```sql CREATE TABLE example ( id INT, -- 等效 INT(11), 4字节存储 large_id BIGINT -- 等效 BIGINT(20), 8字节存储 ); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值