UNSIGNED:

将数字类型无符号化,这与C和C++这些程序语言的unsigned含义相同。

INT的类型范围-2 147 483 648~2 147 483 647

INT UNSIGNED范围0~4 294 967 295

看起来是个不错的属性选项,特别是对于主键自增长的类型,因为一般来说,用户都希望主键是非负数,然而,在实际使用中,UNSIGNED可能会带来一些负面的影响。

示例

CREATE TABLE t(a INT UNSIGNED,b INT UNSIGNED);

INSERT INTO t SELECT 1,2;

SELECT * FROM t;

     a       b 

------  --------

     1         2

我们创建了一个表t,存储引擎为InnoDB,表t 上有两个UNSIGNED的INT类型,输入(1,2)这一行的数据,目前看来是没有问题的,运行如下语句

SELECT a-b FROM t;

会报错

BIGINT UNSIGNED value is out of range in '(`iot2`.`t`.`a` - `iot2`.`t`.`b`)'

  

要怎么才能获得-1这个数呢,只需要将SQL_MODE这个参数进行设置即可

SET sql_mode='NO_UNSIGNED_SUBTRACTION';

SELECT a-b FROM t;

   a-b 

--------

      -1

个人看法是尽量不要使用UNSIGNED,因为可能会带来一些意想不到的的效果,对于INT类型可能存放不了的数据,INT UNSIGNED同样可能存放不了,与其如此,还不如在数据库设计阶段将INT类型提升为BIGINT类型

ZEROFILL:

通过t表来表述

Table   Create Table                                                                                                                      

------  ----------------------------------------------------------------------------------------------------------------------------------

t       CREATE TABLE `t` (                                                                                                                

          `a` int(10) unsigned DEFAULT NULL,                                                                                             

          `b` int(10) unsigned DEFAULT NULL                                                                                               

        ) ENGINE=InnoDB DEFAULT CHARSET=utf8

  

可以看到int(10),如果没有ZEROFILL这个属性,括号内int(10)这个10的数字是毫无意义

但是对列添加ZEROFILL属性后,结果就有所不同

ALTER TABLE t CHANGE COLUMN a  a INT(4) UNSIGNED ZEROFILL;

这里对a列进行了修改,为其添加了ZEROFILL属性,并且将默认的int(10)改成int(4),在进行查找,返回的结果是

     a       b 

------  --------

  0001         2

这是可以看到a的值由原来的1变为0001,这就是ZEROFILL属性的作用,如果宽度小于设定的宽度(这里宽度为4),则自动填充0,需要注意的是,这只是最后显示的结果,在MySQL中实际存储的还是1

SELECT a,HEX(a) FROM t;

     a  hex(a) 

------  --------

  0001  1      

可以看到数据库内部存储还是1,0001只是设置了ZEROFILL属性的一种格式化输出而已。

MySQL中UNSIGNED和ZEROFILL的介绍的更多相关文章

  1. Vusual C++连接Mysql和从MySql中取出数据的API介绍

    .1 mysql_real_connect() 2.1.1 函数原型: MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const ...

  2. mysql 中unsigned

    整型的每一种都分有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类 ...

  3. MySQL 的两个特殊属性 unsigned与 zerofill

    1 unsigned unsigned 就是将数字类型无符号化, 例如 int 型的范围:-2^31 ~ 2^31 - 1,而unsigned int的范围:0 ~ 2^32.看起来unsigned ...

  4. binary(binary区分大小写),unsigned,unsigned zerofill关键字介绍

    mysql建表时,每个字段的属性有三个选项: binary,unsigned,unsigned zerofill,作用如下: 一.binary CHAR VARCHAR:值根据缺省字符集以大小写不区分 ...

  5. MySQL 中的数据类型介绍(转)

    据我统计,MySQL支持39种(按可使用的类型字段统计,即同义词也作多个)数据类型.下面的介绍可能在非常古老的mysql版本中不适用. 转载出处:http://blog.csdn.net/anxpp/ ...

  6. MYSQL中数据类型介绍

    一.MySQL的数据类型 主要包括以下五大类: 主要包括以下五大类: 整数类型:bit.  int . bit int . small int . tiny int . medium int .boo ...

  7. MySQL 中的数据类型介绍

    1.MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 2.数值类型(12) 2.1. ...

  8. mysql中模糊查询的四种用法介绍

    下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] ...

  9. mysql中set和enum使用(简单介绍)

    简单介绍 SET类型 在创建表时,就指定SET类型的取值范围. 属性名 SET('值1','值2','值3'...,'值n') 其中,“属性名”参数指字段的名称:“值n”参数表示列表中的第n个值,这些 ...

随机推荐

  1. C++中基类虚析构函数的作用及其原理分析

    虚析构函数的理论前提是 执行完子类的析构函数,那么父类的虚构函数必然会被执行. 那么当用delete释放一个父类指针所实例化的子类对象时,如果没有定义虚析构函数,那么将只会调用父类的析构函数,而不会调 ...

  2. Excel 版本对应

    (1) 1985年:Excel 1.0 (2) 1993年:Excel 5.0——Office 4.2 (3) 1995年:Excel 7.0(Excel 95)——Office 95 (4) 199 ...

  3. js 正则去除指定的单词

    以企业邮箱为例:@后面不能是qq   126   163  188 gmail   yahoo   sina   hotmail  suhu   sogu  等单词. <!DOCTYPE htm ...

  4. echatrs可视化图在隐藏后显示不出来或是宽度出现问题

    最近在做一个可视化的项目,用了百度的ECharts.js作为可视化的视图框架,echarts的实例很多,基本能满足项目的需求,而且文档也相对完整.清晰,是个很不错的前端可视化框架. 我们的项目是使用b ...

  5. linux thtree level page tables

    To translate a virtual address into a physical one, the CPU must take the contents of each level fie ...

  6. Python - Learn Note (3)

    Python之模块 包就是文件夹:包可以有多级: 模块就是 xxx.py文件:可以创建自己的模块,并且导入它们,模块的名字就和文件的名字相同: Python使用import语句导入一个模块. impo ...

  7. python 加密 解密 签名 验证签名 公钥 私钥 非对称加密 RSA

    加密与解密,这很重要,我们已经可以用pypcap+npcap简单嗅探到网络中的数据包了.而这个工具其实可以嗅探到更多的数据.如果我们和别人之间传输的数据被别人嗅探到,那么信息泄漏,信息被篡改,将给我们 ...

  8. css 让div 置于最顶层而不被其他东西挡住

    今天遇到自己写的div被其他东西给挡住了,需要设置一个属性就成功了 设置:z-index:值:比如 z-index:999. 若值设置为为-1,代表为最底层. div的图层由div的style中的z- ...

  9. JAXP/DOM demo

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  10. DevExpress XtraScheduler日程管理控件应用实例(2)-- 深入理解数据存储

    DevExpress年终击穿底价,单套授权低至67折!查看详情>>> 在上篇随笔<DevExpress XtraScheduler日程管理控件应用实例(1)-- 基本使用> ...