mysql的tinyint(1)_关于类型:在MySQL中使用INT(1)与TINYINT(1)有区别吗?

我假设INT(1)与TINYINT(1)完全相同,但我真的不知道。 每当我的值只能是一个整数(例如0-9值)时,我总是只使用INT(1)来表示它是一个整数,并且只会是一个字符,我认为这意味着 它只能是0到9的值(如果我输入错了,请向我解释)。 我一直只是忽略可以将数字转换为其他类型的INT。 我对MySQL并不精通,因此倾向于避免使用它可以做的更复杂的事情。

所以我的问题是,如果为每种类型定义长度为1,则各种整数类型INT,TINYINT,SMALLINT,MEDIUMINT和BIGINT之间是否有区别? 如果没有,我还是应该使用它们吗(我可以看到它们具有更多的语义含义,TINYINT比INT更具体)? 如果是这样,我是否可以轻松(和/或应该)浏览数据库并将所有INT(1)字段更改为TINYINT(1)字段?

我相信TINYINT(1)是1位而不是1位整数。 我不知道INT(1),但是如果它正确存储数字0到9,请继续使用它:)但是我一直认为它也是1位。

@minitech TINYINT是1字节而不是1位

@Phil:糟糕:P因此,我将注释更改为:"它们都是1个字节。"

在这里,您将更好地理解它!

tinyint: 1 byte, -128 to +127 / 0 to 255 (unsigned)

smallint: 2 bytes, -32,768 to +32,767 / 0 to 65,535 (unsigned)

mediumint: 3 bytes, -8,388,608 to 8,388,607 / 0 to 16,777,215 (unsigned)

int/integer: 4 bytes, -2,147,483,648 to +2,147,483,647 / 0 to 4,294,967,295 (unsigned)

bigint: 8 bytes, -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 / 0 to 18,446,744,073,709,551,615 (unsigned)

谢谢,这非常方便!

这应该是选择的答案:)!

如果您使用的是phpmyadmin,请在选择类型时将鼠标悬停在选择下拉列表上,它将自动显示所有这些详细信息。 :)

这个答案是错误的,因为用户在定义大小时试图获取差异,这只是显示字段类型的范围

整数列类型的括号中的数字为"显示宽度"。 这不会影响存储需求,因为它们是预定义的。

进一步阅读

http://dev.mysql.com/doc/refman/5.0/zh-CN/data-types.html

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

因此,即使我将INT(1)定义为仅允许一个字符,无论如何它仍将占用4个字节。

@animuson INT(1)不允许仅一个字符。它设置结果集中该列的显示宽度。阅读上面的最后一个链接,它解释得很好

哦,我明白了。猜猜我应该继续过去的链接2。o.o另外,如果我只将一个字段从INT更改为TINYINT(如果所有值均为0和1),那是否会对我有任何伤害?

@animuson取决于总大小。如果可以为您节省1%的空间,请不要理会。如果您节省了20%,请考虑是否确实需要它。如果您节省了50%,请进行更改。

最后一个链接断开。

@RowanFreeman谢谢,我已经将其删除

在这里,您可以找到另一个链接,它可能是您删除的链接的替代:thisinterestsme.com/mysql-numbers-in-brackets。有一个理由不鼓励仅回答答案的链接(查看您的代表,我知道您很早以前就已经知道了)。无论如何,只是想补充一点,连接器可能在(display width)的选择中起作用。例如,除非您在连接字符串中使用tinyInt1isBit=false,否则ConnectorJ(我猜也是ConnectorNet)将尝试将TINYINT(1)中的值转换为boolean truefalse或01。对于开发人员至关重要! :)

是的我可以确认ConnectorNet也是这种情况,并且解决方法是根据文档在连接字符串中使用TreatTinyAsBoolean=false。

正如公认的答案所解释的:

括号中的数字表示要显示该字段的字符数,而不是该字段的存储大小。

但是,如果您想知道存储大小,则应检查MySQL源文件。

来源:MySQL Docs:整数类型(精确值)-INTEGER,INT,SMALLINT,TINYINT,MEDIUMINT,BIGINT

TINYINT : 1 byte, -128 to 127 signed, 0 to 255 unsigned

SMALLINT : 2 bytes, -32768 to 32767 signed, 0 to 65535 unsigned

MEDIUMINT : 3 bytes, -8388608 to 8388607 signed, 0 to 16777215 unsigned

INT : 4 bytes, -2147483648 to 2147483647 signed, 0 to 4294967295 unsigned

BIGINT : 8 bytes, -2^63 to 2^63-1 signed, 0 to 2^64-1 unsigned

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值