MySQL中的整型类型示例详解
作者:JiaHao汤
MySQL 中支持的整型类型
MySQL 中支持的整型类型包括 TINYINT
、SMALLINT
、MEDIUMINT
、INT
/INTEGER
、BIGINT
,分别代表小整数值、中整数值、大整数值、极大整数值。
数据类型 | 字节大小 | 有符号范围 | 无符号范围 |
---|---|---|---|
TINYINT | 1 | -128 到 127 | 0 到 255 |
SMALLINT | 2 | -32768 到 32767 | 0 到 65535 |
MEDIUMINT | 3 | -8388608 到 8388607 | 0 到 16777215 |
INT/INTEGER | 4 | -2147483648 到 2147483647 | 0 到 4294967295 |
BIGINT | 8 | -9223372036854775808 到 9223,372036,854775807 | 0 到 18446744073709551615 |
整型类型的可选参数
整型类型的可选参数有 3 个,分别是 M
、UNSIGNED
和 ZEROFILL
。
M
M
表示显示宽度,M
的取值范围是 (0,255)
。例如,int(5)
表示当数据宽度小于 5 位的时候在数字前面需要用字符填满宽度。M
需要配合 ZEROFILL
一起使用才有意义,否则指定显示宽度无效。
需要注意的是,设置显示宽度不会对插入的数据有任何影响,数据还是按照它所设置的整型类型的实际宽度进行保存,即显示宽度与类型可以存储的值范围无关。从 MySQL 8.0.17 开始,整数数据类型不推荐使用显示宽度属性。
整型数据类型可以在定义表结构时指定所需要的显示宽度,如果不指定,则系统为每一种类型指定默认的宽度值。例如:
CREATE TABLE test_table( X TINYINT, Y SMALLINT, Z MEDIUMINT, M INT, N BIGINT );
通过 DESC
命令查看表结构(MySQL 5.7 版本中显示宽度如下,MySQL 8 版本中不再显示宽度):
TINYINT
有符号数和无符号数的取值范围分别为 -128~127 和 0~255,由于负号占了一个数字位,因此 TINYINT
默认的显示宽度为 4。同理,其他整数类型的默认显示宽度与其有符号数的最小值的宽度相同。
UNSIGNED
UNSIGNED
是无符号类型(非负),所有的整数类型都有一个可选的属性 UNSIGNED
(无符号属性),无符号整数类型的最小取值为 0。所以,如果需要在 MySOL 数据库中保存非负整数值时,可以将整数类型设置为无符号类型。
使用 UNSIGNED
将整数类型设置为无符号类型的案例:
CREATE TABLE test_table( X TINYINT UNSIGNED, Y SMALLINT UNSIGNED, Z MEDIUMINT UNSIGNED, M INT UNSIGNED, N BIGINT UNSIGNED );
通过 DESC
命令查看表结构(MySQL 5.7 版本中显示宽度,MySQL 8 版本中不再显式宽度):
需要注意的是,TINYINT
、SMALLINT
、MEDIUMINT
、INT
类型的显示宽度都会缩小一位,因为不再需要表示负数。
ZEROFILL
ZEROFILL
即 0 填充,ZEROFILL
的作用是在某列指定了 ZEROFILL
的情况下,MySQL 会自动为当前列添加 UNSIGNED
属性,并且当该列显示宽度不够 M
位时,使用 0 在列值左边填充,如果超过 M
位,只要不超过数据存储范围即可。
ZEROFILL
搭配 M
的使用案例:
CREATE TABLE test_table ( X TINYINT(5) ZEROFILL, Y SMALLINT(10) ZEROFILL );
通过 DESC
命令查看表结构(MySQL 5.7 版本中显示宽度,MySQL 8 版本中不再显式宽度):
总结
到此这篇关于MySQL中整型类型的文章就介绍到这了,更多相关MySQL整型类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!