我想知道BigIntMediumIntInt之间的区别是什么...很明显,他们会考虑更多的人;然而,我可以做Int(20)BigInt(20),这似乎与尺寸无关.

有些洞察力会很棒,只是有点好奇.我使用MySQL已经有一段时间了,并试图在 Select 类型时应用业务需求,但我从未理解这一点.

推荐答案

http://dev.mysql.com/doc/refman/8.0/en/numeric-types.html

  • INT是一个四字节有符号整数.

  • BIGINT是一个八字节有符号整数.

它们各自接受的值不超过或不少于存储在各自字节数中的值.这意味着INT中有2个32值,BIGINT中有2个64值.

INT(20)分之20和BIGINT(20)分之20几乎毫无意义.这是显示宽度的提示.它与存储无关,也与列接受的值范围无关.

实际上,它只影响ZEROFILL选项:

CREATE TABLE foo ( bar INT(20) ZEROFILL );
INSERT INTO foo (bar) VALUES (1234);
SELECT bar from foo;

+----------------------+
| bar                  |
+----------------------+
| 00000000000000001234 |
+----------------------+

MySQL用户看到INT(20)并假设它是一个大小限制,类似于CHAR(20),这是一个常见的困惑来源.事实并非如此.

Mysql相关问答推荐

MariaDB /SQL僵局-并发插入

根据SQL中的平均范围对学生进行排名

插入时发生日期时间字段溢出错误

MySQL:获取连续记录的数量(日期)?

实体内约束的唯一增量 ID 生成

Select 并统计所有条目并根据条目对它们进行分组

有没有比使用 MySQL 计划事件更好的方法来更新我的数据库表中的列?

将 Go var 传递给 MySQL - try 在 Go lang 程序 (MySQL db) 中执行 db.Exec 时出错

为什么没有创建此触发器?

MySQL 8.0.30 正则表达式词匹配特殊字符

创建表时我的 SQL 语句有什么问题

查询mysql中无法识别数据值

MySQL 视图

SQL UPDATE中的str_replace?

MySQL函数查找两个日期之间的工作日数

MySQL - 如何在 INSERT 语句中将字符串值解析为 DATETIME 格式?

在 MySQL 中检测 utf8 损坏的字符

如何在 MySQL 中为用户设置默认架构

在 MySQL 中找不到 outfile 创建的文件

在 Yii2 中执行原始 SQL 查询?