1 unsigned

  unsigned 就是将数字类型无符号化, 例如 int 型的范围:-2^31 ~ 2^31 - 1,而unsigned int的范围:0 ~ 2^32。看起来unsigned 是个不错的类型,尤其是用在自增或者没有负数的情况。但是在实际使用中会出现一些意外的情况。

  

  如上图,我们新建了一个测试表,两个字段均为unsigned int型,插入两个值,然后做减法运算时报错,并不是我们想要的结果,正常情况 1-2=-1,但是当数据类型为unsigned时,MySQL 运算的结果也是unsigned,而 -1 已经超出了unsigned 范围,所以会报错。

  如何解决这个问题呢,设置一下sql_mode就可以解决这个问题

  set sql_mode = 'NO_UNSIGNED_SUBTRACTION';

  

  sql_mode 的设置是有风险的,因为可以通过这个设置允许一些非法的操作。如将 null 值插入not null字段,将非法的日期2017-12-32插入到日期字段。一般在生产环境都都设置为严格模式。所以在不熟悉MySQL底层机制或者不了解 unsigned 原理时,慎用它。

  2 zerofill

  zerofill 类似一个显示属性,首先来看看MySQL数据库中数字类型后面的长度是什么意思呢,使用show create table 命令来看表的建表语句。

  

  可以看到 int(10) ,这代表什么意思呢?整型不就是4个字节,这个10代表什么意思,如果没有zerofill这属性,括号类的数字没有意义。

  我们先来查询一下表的数据

  

  然后我们修改列,对其添加zerofill属性

  alter table t_test1 change column a a int(4) unsigned zerofill;

  再来查看表的数据

  

  a 字段前面增加了3个0,这是为什么,因为zerofill属性起作用了,当插入mysql中该字段的值的长度小于定义的长度时,会在数值前面补全相应数据的0。

MySQL 的两个特殊属性 unsigned与 zerofill的更多相关文章

  1. MySQL类型属性Unsigned与ZeroFill

    1. Unsigned 就是将数字类型无符号化. int的类型范围是-2147483648~2147483647, int unsigned的类型范围是0~4294967295 Unsigned也可能 ...

  2. mysql的两阶段协议(封锁定理,虫洞事务)

    我们都知道数据库的事务具有ACID的四个属性:原子性,一致性,隔离性和持久性.然后在多线程操作的情况下,如果不能保证事务的隔离性,就会造成数据的修改丢失(事务2覆盖了事务1的修改结果).读到脏数据(事 ...

  3. mysql 有两种数据库引擎发音

    mysql 有两种数据库引擎 一种是 MyISAM,一种是 InnoDB MyISAM 发音为 "my-z[ei]m"; InnoDB 发音为 "in-no-db&quo ...

  4. strus2中获取表单数据 两种方式 属性驱动 和模型驱动

    strus2中获取表单数据 两种方式 属性驱动 和模型驱动 属性驱动 /** * 当前请求的action在栈顶,ss是栈顶的元素,所以可以利用setValue方法赋值 * 如果一个属性在对象栈,在页面 ...

  5. flask 操作mysql的两种方式-sqlalchemy操作

    flask 操作mysql的两种方式-sqlalchemy操作 二.ORM sqlalchemy操作 #coding=utf-8 # model.py from app import db class ...

  6. flask 操作mysql的两种方式-sql操作

    flask 操作mysql的两种方式-sql操作 一.用常规的sql语句操作 # coding=utf-8 # model.py import MySQLdb def get_conn(): conn ...

  7. MYSQL中文乱码以及character_set_database属性修改

    新安装MYSQL,还没有修改数据库系统编码. 之后由于创建数据库时候:create database db_name; 没有指定编码,之后发现乱码就修改各个属性之后还是乱码,便开始配置数据库属性,之后 ...

  8. MySql获取两个日期间的时间差

    [1]MySql 语言获取两个日期间的时间差 DATEDIFF 函数可以获得两个日期之间的时间差.但是,这个函数得出的结果是天数. 需要直接获取秒数可使用TIMESTAMPDIFF函数.应用示例如下: ...

  9. (转)DataRow的各种状态和DataView的两种过滤属性

    DataRow的各种状态 http://www.cnblogs.com/zxjyuan/archive/2008/08/20/1271987.html 一个DataRow对象刚被创建之后(DataTa ...

随机推荐

  1. 别老扯什么hadoop,你的数据根本不够大

    本文原名“Don't use Hadoop when your data isn't that big ”,出自有着多年从业经验的数据科学家Chris Stucchio,纽约大学柯朗研究所博士后,搞过 ...

  2. spark program guide

    概述 Spark 应用由driver program 组成,driver program运行用户的主函数,在集群内并行执行各种操作 主要抽象RDD: spark提供RDD,是贯穿整个集群中所有节点的分 ...

  3. redis学习笔记(一)-安装

    检查是否有redis yum 源 yum install redis 下载fedora的epel仓库 yum install epel-release 安装redis数据库 yum install r ...

  4. php面试题整理(五)

    表单也得改

  5. Djangoorm的多表建立与queryset对象的合并

    使用这个方法的前提是:我们用Django的orm和REST来实现的 数据库提前建好了,而且表中字段相同,但是表名是不一样.需要动态在model中建表.我们使用Book_来模拟实现的 from djan ...

  6. ElasticSearch(五):Java操作ElasticSearch执行查询

    package com.gxy.ESChap01; import java.net.InetAddress; import org.elasticsearch.action.search.Search ...

  7. [HEOI2016/TJOI2016]字符串

    嘟嘟嘟 今天复习一下SAM. lcp固然不好做,干脆直接翻过来变成后缀.首先答案一定满足单调性,所以我们二分lcp的长度\(mid\),然后判断\(s[d \ldots d + mid - 1]\)是 ...

  8. Oracle使用数据泵 (expdp/impdp)实施迁移

    实验环境: 1.导出环境:RedHat6.4+Oracle 11.2.0.4.0,利用数据库自带的scott示例用户进行试验测试. Directory:wjq à /tmp/seiang_wjq 2. ...

  9. 在Windows .NET平台下使用Memcached (Enyim使用)

    1. 启动并配置Memcached的服务端 1. 下载Memcached  http://download.csdn.net/download/ful1021/7969231 2. 解压到任意目录下, ...

  10. 【精编重制版】JavaWeb 入门级项目实战 -- 文章发布系统 (第二节)

    说明 本教程是,原文章发布系统教程的精编重制版,会包含每一节的源码,以及修正之前的一些错误.因为之前的教程只做到了评论模块,很多地方还不完美,因此重制版会修复之前的一些谬误和阐述不清的地方,而且,后期 ...