黑马程序员技术交流社区

标题: mysql中的int、bigint、smallint和tinyint的区别 [打印本页]

作者: huawei    时间: 2016-5-13 14:59
标题: mysql中的int、bigint、smallint和tinyint的区别
本帖最后由 huawei 于 2017-3-5 11:48 编辑

mysql中的int、bigint、smallint和tinyint的区别





使用整数数据的精确数字数据类型有int、bigint、smallint和tinyint,但是他们有什么区别呢?


bigint
从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。


int
从 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 同义字为 integer。

smallint
从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型数据。存储大小为 2 个字节。

tinyint
从 0 到 255 的整型数据。存储大小为 1 字节。

在支持整数值的地方支持 bigint 数据类型。但是,bigint 用于某些特殊的情况,当整数值超过 int 数据类型支持的范围时,就可以采用 bigint。在 SQL Server 中,int 数据类型是主要的整数数据类型。

在数据类型优先次序表中,bigint 位于 smallint 和 int 之间。

只有当参数表达式是 bigint 数据类型时,函数才返回 bigint。SQL Server 不会自动将其它整数数据类型(tinyint、smallint 和 int)提升为 bigint。


为了让各位新人更好的理解上面的数据,我们具体举例tinyint如下:

在MySQL的数据类型中,Tinyint的取值范围是:带符号的范围是-128到127。无符号的范围是0到255。

Tinyint占用1字节的存储空间,即8位(bit)。那么Tinyint的取值范围怎么来的呢?我们先看无符号的情况。无符号的最小值即全部8位(bit)都为0,换算成十进制就是0,所以无符号的Tinyint的最小值为0.无符号的最大值即全部8bit都为1,11111111,换算成十进制就是255.这很好理解。

有符号的Tinyint的取值范围是怎么来的呢?在计算机中,用最高位表示符号。0表示正,1表示负,剩下的表示数值。那么有符号的8bit的最小值就是

  1  1  1  1  1  1  1  1=-127 表示负值

最大值:  0  1  1  1  1  1  1  1=+127 表示正值

怎么有符号的最小值是-127,而不是-128呢?这就是本文要说的关键地方了:



精华推荐:

2017最新PHP学习路线图(附完整视频资源)+源码+技巧/经验+求职+前景总结!
连续两班仅6日就业率突破53%,看2016PHP课程升级是否成功!
视频集合:众多老学员呐喊:"为什么我选传智PHP"!
作者: 254355878    时间: 2016-10-31 23:18
这个我要看下
作者: eddies    时间: 2016-11-1 16:34
谢谢分享
作者: lindsay715    时间: 2016-11-4 17:26

作者: 小小海    时间: 2016-11-9 21:21
ytyhdfgvdsfvds
作者: echoandprint_r    时间: 2016-11-10 14:36
学习中学习中
作者: 问问111    时间: 2016-11-11 14:40
梵蒂冈地方和法国恢复
作者: 白羊11    时间: 2016-11-16 13:34
ddddddddddd
作者: jason_QS    时间: 2016-11-18 22:34
smallint和tinyint的区别
作者: 夜歌行    时间: 2016-11-20 15:52
fffffffffffff
作者: piliyouxia121    时间: 2016-11-24 10:22
谢谢分享
作者: 瑾萱    时间: 2016-11-25 14:01
谢谢分享!!!
作者: xxt598316205    时间: 2016-11-25 15:22
kakankananna
作者: ch123cn    时间: 2016-11-25 17:03
RE: mysql中的int、bigint、smallint和tinyint的区别
作者: tonykanye    时间: 2016-12-1 11:38
怎么有符号的最小值是-127
作者: hp_eckj_luox    时间: 2016-12-9 15:23
表示用tingint,其他用int够了,金钱用decimal
作者: _DarkHorse    时间: 2016-12-11 13:13
谢谢老师
作者: lilongbin2016    时间: 2016-12-11 13:33
谢谢分享
作者: 耀耀耀耀    时间: 2016-12-12 14:35
这个我要看下
作者: 肖肖肖    时间: 2016-12-14 00:11
66666666666666
作者: 踏上PHP征程    时间: 2016-12-18 15:14
好好学习 嘻嘻嘻 嘻嘻嘻
作者: 290422624    时间: 2016-12-22 17:55
跟着大神打天下
作者: fanphp    时间: 2016-12-24 08:33
谢谢楼主分享
作者: lcy1069    时间: 2016-12-29 16:05
学习了~~~~~
作者: VC丶万人敬仰    时间: 2017-1-3 15:53
66666666666666666666666666666666666666666666
作者: 许仙不是仙    时间: 2017-1-13 13:52
fdsgdfsgdfsdasfadsfadsfasdfa
作者: 1317181388    时间: 2017-2-2 23:50
感谢楼主分享
作者: 707621521    时间: 2017-2-6 14:57
整型的细分,不错
作者: 哈哈哈哈哈11    时间: 2017-2-9 17:52
啊啊啊啊
作者: Cai小神    时间: 2017-2-23 13:19
了解了解
作者: devil_joker@qq.    时间: 2017-2-23 16:37
4234234234234234
作者: 妖风一阵    时间: 2017-3-7 13:35
一直对这四个数据类型该怎样设置没有确定的方法
作者: jxson    时间: 2017-3-9 21:10
谢谢分享
作者: Overflow    时间: 2017-3-13 16:23
111111111111111111
作者: 瞬间回忆    时间: 2017-3-26 16:45
mysql中的int、bigint、smallint和tinyint的区别
作者: 咿呀咿呀哟    时间: 2017-5-1 15:21
感谢分享~
作者: 打小我就行    时间: 2017-6-28 08:47
11211330680
作者: tjwtjw    时间: 2017-8-24 16:35
66666666666
作者: yuanlinjiayou    时间: 2017-9-7 17:11
kkkkkkkkkkkkkkkkkkk
作者: Rakishly    时间: 2017-9-21 15:11
mysql中的int、bigint、smallint和tinyi
作者: chenkangcong123    时间: 2018-1-29 17:20
感谢楼主

作者: 六点二十二    时间: 2018-9-18 22:07
好内容要学习!!!!!!!!!!!!!!!!!!!!!!!!!
作者: uuuqqq    时间: 2018-10-7 06:23
看帖不回者 么有小JJ.........

作者: Joan...ing    时间: 2019-1-6 18:42

作者: frmsceg    时间: 2019-4-1 09:49
谢谢分享
作者: Try-again    时间: 2021-4-29 19:56
PHP新手必知




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2