MySql中的TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT

本文详细解析了MySQL中TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT等整数类型的特点,包括它们的默认长度、有符号与无符号的区别以及ZEROFILL选项的作用。通过实例展示了数据类型对存储的影响和边界条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySql中的TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT

数据类型

默认长度

字节

有符号

无符号

tinyint

无符号: 3

有符号: 4

1

-128 ~ 127

0 ~ 255

smallint

无符号: 5

有符号: 6

2

-32768 ~ 32767

0 ~ 65535

mediumint

无符号: 8

有符号: 9

3

-8388608 ~ 8388607

0 ~ 16777215

int

无符号: 10

有符号: 11

4

-2147483648 ~ 2147483647

0 ~ 4294967295

bigint

无符号: 20

有符号: 20

8

-2^63 ~ 2^63-1

0 ~ 2^64-1

TINYINT[(M)] [UNSIGNED] [ZEROFILL]

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]

INT[(M)] [UNSIGNED] [ZEROFILL]

INTEGER[(M)] [UNSIGNED] [ZEROFILL]

BIGINT[(M)] [UNSIGNED] [ZEROFILL]

        integer是int的同义词,  本质上没有区别, 两者具有相同的属性和功能。

以下是官方的解释:

以TINYINT[(M)] [UNSIGNED] [ZEROFILL]为例:

M说明:

        指定显示长度, 并非数据取值大小。

#创建test表, 指定数据类型tinyint, 长度分别为1, 2

mysql> create table test(
    -> type tinyint(1),
    -> size tinyint(2)
    -> );



mysql> insert into test(type,size) values (127, 127); // 插入成功
Query OK, 1 row affected (0.00 sec)


mysql> insert into test(type,size) values (128, 128); // 插入失败:无符号
1264 - Out of range value for column 'type' at row 1

从这里就可以看出, 指定的M, 与插入数值无关。无论数值大小, 占用的字节都是固定的, 只要在存储区间就可以插入。

最大数值由来:

        tinyint 占用1个字节(1 bytes = 8 bit), 共8位二进制位, 2^8 = 256, 那无符号就是[0,255]

UNSIGNED说明:

        加上UNSIGNED属性后就是我们说的无符号(0-255, 因为不带符号都是正整数)

ZEROFILL说明:

        ZEROFILL会把UNSIGNED也给带上, 而且会进行前导零填充(即存储数值不满显示宽度M时, 会在数值前填充0)

#修改 size属性
mysql> alter table test modify size tinyint(3) unsigned zerofill;
Query OK, 2 rows affected (0.01 sec)

mysql> insert into test(type,size) values (127, 8);
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
+------+------+
| type | size |
+------+------+
|  127 |  127 |
|  127 |  008 |
+------+------+
2 rows in set (0.04 sec)

更多查看: https://dev.mysql.com/doc/refman/5.7/en/numeric-types.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值