加入收藏 | 设为首页 | 会员中心 | 我要投稿 驾考网 (https://www.jiakaowang.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql中,字节(10)和字节(11)有哪些不同之处

发布时间:2023-05-22 13:39:39 所属栏目:MySql教程 来源:
导读:一、背景
在创建数据库表的时候,我们经常会用到int(x)来定义一个字段的类型,一直误以为这里的x表示存储数字的长度。

其实大错特错,这里的 x 指的是 最大显示宽度(最大有效显示宽度是255),且显示宽度与存储
一、背景
在创建数据库表的时候,我们经常会用到int(x)来定义一个字段的类型,一直误以为这里的x表示存储数字的长度。

其实大错特错,这里的 x 指的是 最大显示宽度(最大有效显示宽度是255),且显示宽度与存储大小或类型包含的值的范围无关。

二、MysqL整数类型
类型    字节    取值范围    显示宽度
tinyint    1    -128 ~ 127    4
smallint    2    -32768 ~ 32767    6
mediumint    3    -8388608 ~ 8388607    9
int    4    -2147483648 ~ 2147483647    11
bigint    8    -9223372036854775808 ~ 9223372036854775807    20
MysqL 类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。

该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。

当结合可选扩展属性 zerofill 使用时, 默认补充的空格用零代替。

例如,对于声明为 INT(5) zerofill 的列,值 4 检索为 00004。请注意如果在整数列保存超过显示宽度的一个值,当 MysqL 为复杂联接生成临时表时会遇到问题,因为在这些情况下 MysqL 相信数据适合原列宽度。

所有整数类型可以有一个可选(非标准)属性 UNSIGNED。当你想要在列内只允许非负数和该列需要较大的上限数值范围时可以使用无符号值。

那取值范围和显示宽度到底有什么关系呢?利用 int 做了个实验:

create table int_demo(
    id int not null auto_increment,
    int_4 int(4) UNSIGNED zerofill,
    int_8 int(8) UNSIGNED zerofill,
    primary key (id)
);
 
insert into int_demo (int_4, int_8) VALUES (2, 1000),(123456, 1234567898);
 
select * from int_demo;
查询结果:

MysqL> select * from int_demo;
+----+--------+------------+
| id | int_4  | int_8      |
+----+--------+------------+
|  1 |   0002 |   00001000 |
|  3 | 123456 | 1234567898 |
+----+--------+------------+
2 rows in set (0.00 sec)

(编辑:驾考网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章