当前位置: 首页 > news >正文

MySQL数据库中,tinyint(1) 和 tinyint 有什么区别

TINYINT(1)TINYINT 的区别

在 MySQL 中,TINYINT(1)TINYINT 本质上是相同的数据类型,但 TINYINT(1) 中的 (1) 实际上不会影响存储大小或取值范围


1. TINYINT 及其取值范围

TINYINT 是 MySQL 中最小的整数类型,占用 1 个字节 (8 bit),可以存储以下数值:

  • 有符号 (SIGNED)-128127
  • 无符号 (UNSIGNED)0255
CREATE TABLE example (
    col1 TINYINT,      -- 默认可以存储 -128 到 127
    col2 TINYINT(1),   -- (1) 只是显示宽度,不影响存储
    col3 TINYINT(3)    -- (3) 也是显示宽度,不影响存储
);

2. TINYINT(1) 中的 (1) 代表什么?

  • 在 MySQL 5.7 及以前TINYINT(1) 中的 (1) 只是显示宽度,和 TINYINT(3)TINYINT(4) 类似,不会影响存储的数值范围
  • MySQL 8.0 开始,数字类型的 (N) 宽度已被废弃,不再影响显示效果。

示例

CREATE TABLE test (
    a TINYINT(1),  -- (1) 不影响实际存储,只是以前用于格式化显示
    b TINYINT(3)
);

在 MySQL 8.0 及以后,TINYINT(1)TINYINT 没有任何区别,系统会忽略 (1),两者完全等效。


3. TINYINT(1) 主要用于布尔值

MySQL 没有真正的 BOOLEAN 类型,通常 TINYINT(1) 被用来存储布尔值(01)。

  • TINYINT(1) 只是一个约定俗成的写法,实际上 TINYINT 也一样能存 01
  • 你可以用 TINYINT(1) 表示 is_active 这样的布尔字段,但 TINYINT 也一样能满足需求。
CREATE TABLE users (
    is_active TINYINT(1) DEFAULT 1  -- 其实等同于 TINYINT DEFAULT 1
);

4. 结论

类型存储大小取值范围(SIGNED取值范围(UNSIGNED(N) 是否影响存储
TINYINT1 字节-1281270255无影响
TINYINT(1)1 字节-1281270255无影响

最佳实践

  • 如果 TINYINT 仅用于存储布尔值,推荐写 TINYINT(1),让语义更清晰。
  • 但从 MySQL 8.0 开始,(1) 已经完全无意义,可以直接写 TINYINT

相关文章:

  • 深入剖析JavaScript多态:从原理到高性能实践
  • 基于R语言与MaxEnt的物种分布建模全流程解析:从算法优化到科研制图实战
  • C++编程指南32 - 模板编程时要避免过度约束以提高通用性
  • 蓝桥杯训练士兵
  • 单点登录(SSO)实战:基于Vue与Spring Boot的深度实现
  • 蓝桥复习3(AT240C2 EE2PROM IIC ) 继电器 蜂鸣器 PWM
  • 汇编学习之《push , pop指令》
  • LeetCode 94. 二叉树的中序遍历
  • PUSCH(Physical Uplink Shared Channel,物理上行共享信道)
  • 自动备份文件到服务器,自动备份文件到服务器有哪些方法?
  • SkyWalking+Springboot实战(最详细)
  • mysql 日期时间变成中文显示
  • 如何解决 Hive 在创建 MySQL 表时出现乱码???的问题
  • 堤坝决口快速沉箱,守护生命的抗洪防线|鼎跃安全
  • 《认知觉醒》下篇·第四章第二节“学习专注:深度沉浸是进化双刃剑的安全剑柄” 总结
  • Layui日期选择器的使用逻辑
  • 23种设计模式-结构型模式-装饰
  • 如何在 SwiftUI 视图中使用分页(Paging)机制显示 SwiftData 数据(三)
  • 藏族问候语语料库下载-选取按方言区分类的藏语问候语音频
  • 卷积层里的多输入多输出通道
  • 淘宝客必须做网站/2023年8月份新冠症状
  • 申请一个域名可以建设一个网站吗/链接买卖
  • 搭建网站的方法/东莞百度网站排名优化
  • 上海今天出什么大事件了/优化清理大师
  • 如何给网站做宣传/itmc平台seo优化关键词个数
  • yy陪玩网站怎么做/网络营销知识点