跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 发现 mysql 定义的数据类型不管用,定义的整数 1 位,也可以插入多位数字
未分類
25 10 月 2020

发现 mysql 定义的数据类型不管用,定义的整数 1 位,也可以插入多位数字

发现 mysql 定义的数据类型不管用,定义的整数 1 位,也可以插入多位数字

資深大佬 : myevery 5

发现 mysql 定义的数据类型不管用,定义的整数 1 位,也可以插入多位数字

create table t1 (id int(1)); insert into t1 (id) values (-1); insert into t1 (id) values (-123); insert into t1 (id) values (-12345); insert into t1 (id) values (23); insert into t1 (id) values (123); insert into t1 (id) values (12345);

完全不报错,可以正常写入! 这是为啥,这么不严谨么,难道是为了容错!

大佬有話說 (11)

  • 資深大佬 : user8341

    其实没分那么细吧。都是 unsigned int

  • 資深大佬 : hbolive

    你定义的是一个 int 整形的数据,其存储范围:- 2147483648 至 2147483647 或 0 至 4294967295,这个是固定的而不是你定义的,括号中的是显示长度,你把它理解为了“我定义它显示 1 位”。。

  • 資深大佬 : hbolive

    @hbolive 最后句是:你把它理解为了“我定义它只能存储 1 位的数字”

  • 主 資深大佬 : myevery

    @hbolive 是啊,我是这样理解的,难道不是这么理解么。
    如果不是,那个 1 是不是就没意义了呢。

  • 資深大佬 : lovecy

    mysql 只有前缀带 var 的才允许你定义数量,其他的都是固定的。

    另外能学一下 markdown 语法排个版么,排版乱+感叹号看着不舒服。

  • 主 資深大佬 : myevery

    @lovecy 好的好的,谢谢!

  • 資深大佬 : hanzhao

    2 说的有一点纠正:int(M) M 是“最小显示长度”,可以配合 zerofill 属性使用 int(2) 1=>01 11=>11 111=>111

  • 資深大佬 : tairan2006

    那个是显示位宽

    你应该用 tinyint smallint int bigint 这些

  • 資深大佬 : lovecy

    @myevery #2#7#8 说的都对,我查了一下,这个貌似是 MYSQL 设计留下来的没啥用的东西,只在字段有 zerofill 的时候,查询结果数字如果不足位数,前面补 0
    比如 id int(6) zerofill,你存 1,123,1234 查询出来的结果就是 000001,000012,001234
    比如 id int(2) zerofill,你存 1,123,1234 查询出来的结果就是 01,12,1234

  • 資深大佬 : bear2000

    括号里显示的是指显示的位数,不是指能存储的位数

  • 資深大佬 : sockball07

    面试常考

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具