当前位置:  数据库>mysql

mysql unsigned 用法及相减出现补数溢出解决方法

    来源: 互联网  发布时间:2014-10-04

    本文导语:  unsigned 既为非负数,用此类型可以增加数据长度! 例如如果 tinyint最大是127,那 tinyint unsigned 最大 就可以到 127 * 2 unsigned 属性只针对整型,而binary属性只用于char 和varchar。 类型 说明 tinyint 非常小的整数 smallint 较小...

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) 1个字节

smallint[(m)]

有符号值:-32768 到32767(- 215 到215 - 1)

无符号值:0到65535(0 到21 6 - 1) 2个字节

mediumint[(m)]

有符号值:-8388608 到8388607(- 22 3 到22 3 - 1 )

无符号值:0到16777215(0 到22 4 - 1) 3个字节

int[(m)]

有符号值:-2147683648 到2147683647(- 231 到231- 1)

无符号值:0到4294967295(0 到232 - 1) 4个字节

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)

m字节(mysql < 3.23),m+2字节(mysql > 3.23 )

表3:数值列类型的存储需求

mysql提供了五种整型: tinyint、smallint、mediumint、int和bigint。int为integer的缩写。这些类型在可表示的取值范围上是不同的。 整数列可定义为unsigned从而禁用负值;这使列的取值范围为0以上。各种类型的存储量需求也是不同的。取值范围较大的类型所需的存储量较大。

mysql 提供三种浮点类型: float、double和decimal。与整型不同,浮点类型不能是unsigned的,其取值范围也与整型不同,这种不同不仅在于这些类型有最大 值,而且还有最小非零值。最小值提供了相应类型精度的一种度量,这对于记录科学数据来说是非常重要的

mysql5 unsigned 相减出现补数 溢出 解决办法

Mysql5 为了速度,只存放数二进制数据,而且在加减运算中,也是二进制的运算.

所以在使用unsigned 是小心0-1 的操作.尽量在这类操作前先做一个判断.

如果直接在程序里进行判定,难免会出现数据错误,因为有一点点时间内数据是放在内存的,而没放进库里,最好的办法还是直接送出sql语句进行修改,这里mysql5有解决办法 CONVERT( 字段 + (要加减的数字) AS SIGNED )就可以了。

例如:UPDATE `user` SET `tk` = CONVERT( tk +  (-8) ,SIGNED ) WHERE `id` = '1330'


    
 
 

您可能感兴趣的文章:

  • MySQL整型数据溢出的解决方法
  • mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法
  • MySQL和PHP中substr函数用法
  • mysql update语句的用法详解
  • 发现mysql一个用法,比较有用
  • mysql_fetch_row()与mysql_fetch_array()用法区别
  • 浅谈SQLServer的ISNULL函数与Mysql的IFNULL函数用法详解
  • php pdo mysql query用法介绍
  • MySQL Order By用法分享
  • mysql中limit的用法深入分析
  • mysql筛选GROUP BY多个字段组合时的用法分享
  • mysql截取的字符串函数substring_index的用法
  • mysql alter语句用法实例
  • 浅析MySQL replace into 的用法
  • mysql Load Data InFile 的用法
  • MySQL show命令的用法
  • sql server中ISNULL函数与Mysql中IFNULL函数的用法
  • mySQL中replace的用法
  • PHP MySQL Order By 关键词的用法
  • mysql双向加密解密方式用法详解
  • MySQL中replace into语句的用法详解
  • mysql中模糊查询的四种用法介绍
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • Mysql查询错误:ERROR:no query specified原因
  • MySQL 重装MySQL后, mysql服务无法启动
  • php安装完成后如何添加mysql扩展
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin
  • MySQL Workbench的下载安装与使用教程
  • 在Linux内安装了Mysql,无法进入Mysql.
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • 怎样在linux终端输入mysql直接进入mysql?
  • VS2012+MySQL+SilverLight5的MVVM开发模式介绍
  • c++中关于#include <mysql/mysql.h>的问题?
  • MySQL索引基本知识
  • mysql -u root mysql 怎么解释
  • Mysql设置查询条件(where)查询字段为NULL
  • mm.mysql那里可以下载?www.mysql.com根本下载不了。谢谢了
  • mysql中字符串和时间互相转换的方法(自动转换及DATE_FORMAT函数)
  • MySQL集群 MySQL Cluster


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    mysql筛选GROUP BY多个字段组合时的用法分享 iis7站长之家