A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© huawei 黑马粉丝团   /  2016-5-13 14:59  /  6446 人查看  /  45 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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呢?这就是本文要说的关键地方了:

游客,如果您要查看本帖隐藏内容请回复


精华推荐:

视频集合:众多老学员呐喊:"为什么我选传智PHP"!

45 个回复

倒序浏览
这个我要看下
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
回复 使用道具 举报
ytyhdfgvdsfvds
回复 使用道具 举报
学习中学习中
回复 使用道具 举报
梵蒂冈地方和法国恢复
回复 使用道具 举报
ddddddddddd
回复 使用道具 举报
smallint和tinyint的区别
回复 使用道具 举报
fffffffffffff
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
瑾萱 初级黑马 2016-11-25 14:01:37
12#
谢谢分享!!!
回复 使用道具 举报
kakankananna
回复 使用道具 举报
RE: mysql中的int、bigint、smallint和tinyint的区别
回复 使用道具 举报
怎么有符号的最小值是-127
回复 使用道具 举报
表示用tingint,其他用int够了,金钱用decimal
回复 使用道具 举报
谢谢老师
回复 使用道具 举报
谢谢分享
回复 使用道具 举报
这个我要看下
回复 使用道具 举报
66666666666666
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马