mysql unsigned 用法及相减呈现补数溢出办理办法[MySQL防范]
本文“mysql unsigned 用法及相减呈现补数溢出办理办法[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
unsigned 既为非负数,用此范例可以增添数据长度!
比方假如 tinyint最大是127,那 tinyint unsigned 最大 便可以到 127 * 2
unsigned 属性只针对整型,而binary属性只用于char 和varchar.
范例 |
阐明 |
tinyint |
非常小的整数 |
smallint |
较小整数 |
mediumint |
中等大小整数 |
int |
尺度整数 |
bigint |
较大整数 |
float |
单精度浮点数 |
double |
双精度浮点数 |
decimal |
一个串的浮点数 |
每种数值范例的名称和取值范围如表2所示.
范例阐明 |
取值范围 |
tinyint[(m)] |
有标记值:-128 到127(- 27 到27 - 1) 无标记值:0到255(0 到28 - 1) |
smallint[(m)] |
有标记值:-32768 到32767(- 215 到215 - 1) 无标记值:0到65535(0 到21 6 - 1) |
mediumint[(m)] |
有标记值:-8388608 到8388607(- 22 3 到22 3 - 1 ) 无标记值:0到16777215(0 到22 4 - 1) |
int[(m)] |
有标记值:-2147683648 到2147683647(- 231 到231- 1) 无标记值:0到4294967295(0 到232 - 1) |
bigint[(m)] |
有标记值:-9223372036854775808 到9223373036854775807(- 263到263-1) 无标记值:0到18446744073709551615(0到264 – 1) 8个字节 |
float[(m, d)] |
最小非零值:±1.175494351e - 38 |
double[(m,d)] |
最小非零值:±2.2250738585072014e - 308 |
decimal (m, d) |
可变;其值的范围依靠于m 和d |
表2:数值列范例的取值范围
各种范例值所需的存储量如表3所示.
范例阐明 |
存储需求 |
tinyint[(m)] |
1字节 |
smallint[(m)] |
2字节 |
mediumint[(m)] |
3字节 |
int[(m)] |
4字节 |
bigint[(m)] |
8字节 |
float[(m, d)] |
4字节 |
double[(m, d)] |
8字节 |
decimal (m, d) |
表3:数值列范例的存储需求
mysql供应了五种整型: tinyint、smallint、mediumint、int和bigint.int为integer的缩写.这些范例在可表示的取值范围上是差别的. 整数列可定义为unsigned从而禁用负值;这使列的取值范围为0以上.各种范例的存储量需求也是差别的.取值范围较大的范例所需的存储量较大.
mysql5 unsigned 相减呈现补数 溢出 办理办法
Mysql5 为了速度,只存放数二进制数据,并且在加减运算中,也是二进制的运算.
所以在利用unsigned 是当心0-1 的操作.尽大概在这类操作前先做一个判断.
假如直接在程序里举行断定,不免会呈现数据错误,因为有一点点时间内数据是放在内存的,而没放进库里,最好的办法还是直接送出sql语句举行改正,这里mysql5有办理办法 CONVERT( 字段 + (要加减的数字) AS SIGNED )便可以了.
比方:UPDATE `user` SET `tk` = CONVERT( tk + (-8) ,SIGNED ) WHERE `id` = '1330'
以上是“mysql unsigned 用法及相减呈现补数溢出办理办法[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |