Mysql中,int(10)和int(11)的区别

int(M) M指示最大显示宽度。最大有效显示宽度是255。显示宽度与存储大小或类型包含的值的范围无关

首先说一下MySQL的数值类型,MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。

BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。

作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

类型 字节 最小值 最大值
    (带符号的/无符号的) (带符号的/无符号的)
TINYINT 1 -128 127
    0 255
SMALLINT 2 -32768 32767
    0 65535
MEDIUMINT 3 -8388608 8388607
    0 16777215
INT 4 -2147483648 2147483647
    0 4294967295
BIGINT 8 -9223372036854775808 9223372036854775807
    0 18446744073709551615

Mysql类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。

当结合可选扩展属性ZEROFILL使用时, 默认补充的空格用零代替。例如,对于声明为INT(5) ZEROFILL的列,值4检索为00004。请注意如果在整数列保存超过显示宽度的一个值,当MySQL为复杂联接生成临时表时会遇到问题,因为在这些情况下MySQL相信数据适合原列宽度。

所有整数类型可以有一个可选(非标准)属性UNSIGNED。当你想要在列内只允许非负数和该列需要较大的上限数值范围时可以使用无符号值。

所以int(10)与int(11)后的括号中的字符表示显示宽度,整数列的显示宽度与mysql需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,int类型的字段能存储的数据上限还是2147483647(有符号型)和4294967295(无符号型)。

浮点和定点类型也可以为UNSIGNED。同数类型,该属性防止负值保存到列中。然而,与整数类型不同的是,列值的上范围保持不变。

如果为一个数值列指定ZEROFILL,MySQL自动为该列添加UNSIGNED属性。

对于浮点列类型,在MySQL中单精度值使用4个字节,双精度值使用8个字节。

FLOAT类型用于表示近似数值数据类型。SQL标准允许在关键字FLOAT后面的括号内选择用位指定精度(但不能为指数范围)。MySQL还支持可选的只用于确定存储大小的精度规定。0到23的精度对应FLOAT列的4字节单精度。24到53的精度对应DOUBLE列的8字节双精度。

MySQL允许使用非标准语法:FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,D)。这里,“(M,D)”表示该值一共显示M位整数,其中D位位于小数点后面。例如,定义为FLOAT(7,4)的一个列可以显示为-999.9999。MySQL保存值时进行四舍五入,因此如果在FLOAT(7,4)列内插入999.00009,近似结果是999.0001。

MySQL将DOUBLE视为DOUBLE PRECISION(非标准扩展)的同义词。MySQL还将REAL视为DOUBLE PRECISION(非标准扩展)的同义词,除非SQL服务器模式包括REAL_AS_FLOAT选项。

为了保证最大可能的可移植性,需要使用近似数值数据值存储的代码应使用FLOAT或DOUBLE PRECISION,不规定精度或位数。

DECIMAL和NUMERIC类型在MySQL中视为相同的类型。它们用于保存必须为确切精度的值,例如货币数据。当声明该类型的列时,可以(并且通常要)指定精度和标度;例如:

salary DECIMAL(5,2)
在该例子中,5是精度,2是标度。精度表示保存值的主要位数,标度表示小数点后面可以保存的位数。

在MySQL 5.1中以二进制格式保存DECIMAL和NUMERIC值。

标准SQL要求salary列能够用5位整数位和两位小数保存任何值。因此,在这种情况下可以保存在salary列的值的范围是从-999.99到999.99。

在标准SQL中,语法DECIMAL(M)等价于DECIMAL(M,0)。同样,语法DECIMAL等价于DECIMAL(M,0),可以通过计算确定M的值。在MySQL 5.1中支持DECIMAL和NUMERIC数据类型的变量形式。M默认值是10。

DECIMAL或NUMERIC的最大位数是65,但具体的DECIMAL或NUMERIC列的实际范围受具体列的精度或标度约束。如果此类列分配的值小数点后面的位数超过指定的标度允许的范围,值被转换为该标度。(具体操作与操作系统有关,但一般结果均被截取到允许的位数)。

BIT数据类型可用来保存位字段值。BIT(M)类型允许存储M位值。M范围为1到64。

要指定位值,可以使用b’value’符。value是一个用0和1编写的二进制值。例如,b’111′和b’100000000′分别表示7和128。

原文地址:http://blog.csdn.net/lyd518/article/details/20703095

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: int10int11都是MySQL的整数类型,但它们的区别在于它们能够存储的数字范围不同。int10可以存储的数字范围是-2147483648到2147483647,而int11可以存储的数字范围是-9223372036854775808到9223372036854775807。因此,如果需要存储更大的数字,应该选择int11。 ### 回答2: MySQLint10int11是两种数据类型,它们之间的主要区别在于其最大值的不同。 int10是指10位带符号整数,其取值范围为-2147483648到2147483647,最大值为10位带符号整数能表示的最大值。 int11是指11位带符号整数,其取值范围为-1099511627776到1099511627775,最大值为11位带符号整数能表示的最大值。 因此,int11的取值范围比int10更大,最大值也更高。但需要注意的是,使用int11需要更多的存储空间,因为它需要11个字节来存储,而int10只需要4个字节。 在实际使用,我们需要根据具体的需求和存储空间来选择使用int10还是int11,如果需要更大的取值范围,可以选择int11,但需要注意它的存储空间较大。同时,对于一些较小的数值,使用int11会浪费存储空间,此时可以选择int10进行存储。 ### 回答3: MySQLint类型用于存储整型数据。其int10int11都属于int类型,但它们之间是有一定的区别的。 首先,int10可以存储10位整数,即最大值为2147483647,最小值为-2147483648。而int11可以存储11位整数,即最大值为4294967295,最小值为-4294967296。从数据范围上来看,int11可以存储更大的整数,因此在存储很大的数字时会更加方便,而int10的数据范围则相对较小。 其次,由于int11需要占用更多的存储空间,所以它与int10的存储空间也有所区别int10占用4个字节,而int11占用5个字节。这意味着在存储相同数量的数据时,int10占用的空间会更小,而int11则需要更多的存储空间。 除了这些差异之外,int10int11在使用和处理上没有其他显著的区别。它们都是整型数据类型,支持常规的整数计算和比较操作。当在MySQL定义表格时,可以根据具体需求选择使用哪种数据类型。 总的来说,int10int11区别在于它们的数据范围和存储空间大小。对于小型项目来说,使用int10足以满足需求,而在需要存储较大的整型数据时可以选择int11。但是,应该注意的是,为了避免内存浪费,并避免出现溢出等问题,在选择具体的数据类型时还应注意合理匹配。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值