原先对mysql不太理解,但也没有报错。但理解的不够深入。这次补上。

原来以为int(11)是指11个字节,int(10)就是10个字节。我错了。

http://zhidao.baidu.com/link?url=puYWaGBQNKNHgffO5kdvXshF3KmX8OuB4Mor3HXapbNHa8m1CdlF8PJTqVuKa1eKcEd6Bv2NKUr3I-KJr5-7ISLhBsmf17Lu69vxv2aR99_

mysql的基本数据类型里几个int如下:

类型 大小 范围(有符号) 范围(无符号) 用途

TINYINT 1字节 (-128,127) (0,255) 小整数值

SMALLINT 2 字节 ( -2^15 :-32 768,2^15 - 1:32 767) (0,65 535) 大整数值

MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值

INT或INTEGER(int 的 SQL-92 同义字为 integer) 4 字节 (-2^31:-2 147 483 648, 2^31 - 1:2 147 483 647) (0,4 294 967 295) 大整数值

BIGINT 8 字节 (-2^63:-9 233 372 036 854 775 808,2^63-1:9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值

这些类型,是定长的,其容量是不会随着后面的数字而变化的,比如int(11)和int(8),都是一样的占4字节。tinyint(1)和tinyint(10)也都占用一个字节。

那么后面的11和8,有啥用呢。

http://zhidao.baidu.com/link?url=b0Z-WIhggaErl3uhMrAhoEXQG_3zotyd7r31O3RXSYiFJo1Cad-NeWN8cFXZFI50yVG_lpKooT7OjLhIa20ephKFJYD-fV9ZAv_o63AfyVq

mysql数据库中以 :数据类型(m)  来约束数据,其中 数字m在不同的数据类型中表示含义是不同的。 咱们这里只讲整数。

整型数系统已经限制了取值范围,tinyint占1个字节、int占4个字节。所以整型数后面的m不是表示的数据长度,而是表示数据在显示时显示的最小长度。

tinyint(1) 这里的1表示的是 最短显示一个字符。tinyint(2) 这里的2表示的是 最短显示两个字符。

当字符长度超过(m)时,相当于啥都没发生;

当字符长度小于(m)时,就需要指定拿某个字符来填充,比如zerofill(表示用0填充),

设置tinyint(2) zerofill 你插入1时他会显示01;设置tinyint(4) zerofill 你插入1时他会显示0001。

所以,没有zerofill,(m)就是无用的。

http://blog.csdn.net/phpwish/article/details/7845921

综上整型的数据类型括号内的数字不管是多少,所占的存储空间都固定的。

http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/08/25/2153016.html

mysql 中int(1)和tinyint(1)中的1只是指定显示长度,并不表示存储长度,只有字段指定zerofill时有用。

位数限制基本没有意义。

在mysql中我做过实验,对于一个tinyint类型的字段,不管它是tinyint(1)还是tinyint(2)还是tinyint(3),

当你插入大于127的数,都会存入127。跟上文中的结论是一样的。

总结:int(11),tinyint(1),bigint(20),后面的数字,不代表占用空间容量。而代表最小显示位数。这个东西基本没有意义,除非你对字段指定zerofill。

所以我们在设计mysql数据库时,

建表时,mysql会自动分配长度:int(11)、tinyint(4)、smallint(6)、mediumint(9)、bigint(20)。

所以,就用这些默认的显示长度就可以了。不用再去自己填长度,比如搞个int(10)、tinyint(1)之类的,基本没用。而且导致表的字段类型多样化。

http://blog.csdn.net/longyulu/article/details/7326581

该文很好地总结了mysql所有的数据类型。

我在建一个float类型的字段时,故意建成float(2,3)型,是错误的。报错如下。

第一个数字M,代表总长度限制(总长度包括小数位和整数位),2代表总长度不能超过2个字符,比如2.34,就超过了2位总长度;

第二个数字D,代表小数位的长度限制。0.2表示占用了1个小数位。

这样看,当然M必需大于等于D。

比如设置为float(2,2),那么写入12.3这个数字时,实际插入的是0.99。

比如设置为float(2,1),那么写入12.3这个数字时,实际插入的是9.9。

mysql会自动截取该字段能接受的最大值存入。

那么设置为float(0,0),则相当于不受限制,或者说受float本身的精度限制。

对于mysql的浮点型,实在太复杂,没搞清,看这篇:http://www.jb51.net/article/31723.htm

再来看看mysql的整型、浮点型,怎么跟oracle的数据类型NUMBER对应的。

先来看看oracle的NUMBER类型的特点:

参考http://www.linuxidc.com/Linux/2012-02/54603.htm

Number(p, s) 声明一个定点数 p(precision)为精度,s(scale)表示小数点右边的数字个数,精度最大值为38,scale的取值范围为-84到127

Number(p) 声明一个整数 相当于Number(p, 0)

Number 声明一个浮点数 其精度为38,要注意的是scale的值没有应用,也就是说scale的值不能简单的理解为0,或者其他的数。

定点数的精度(p)和刻度(s)遵循以下规则:

 当一个数的整数部分的长度 > p-s 时,Oracle就会报错。(可见s个位置是留给小数的;p-s个位置是留给整数部分的,这样很清晰啊。p代表整数位和小数位全部的长度限制,这一点跟mysql很像)

 当一个数的小数部分的长度 > s 时,Oracle就会舍入。(同上,实际上不会报错,oracle会四舍五入,比如NUMBER(4,2),插入99.248,保存为99.25;插入99.242,保存为99.24;插入99.2448,保存为99.24而不是99.25,注意他四舍五入的位置是s位。)

 当s(scale)为负数时,Oracle就对小数点左边的s个数字进行舍入。(暂时不管它)

 当s > p 时, p表示小数点后第s位向左最多可以有多少位数字,如果大于p则Oracle报错,小数点后s位向右的数字被舍入。(暂时不管它)

经实验,比如定义一个字段为Number(3),那么写入该字段,最多不能超过3个数字。比如,你可以插入999(或-999),但是不能插入1000(或-1000)。以此类推。

比如定义一个字段为Number(3,2),那么写入该字段,最多不能超过3位的整数,最多2位的小数。

综上,我们可以看出mysql和oracle的对应关系:

mysql

oracle

理由

tinyint(1字节)

以及tinyint unsigned

NUMBER(3)

范围(-128,127) (0,255),所以至少NUMBER(3)对应。

但是不能NUBER(1),这样只能最大存9。

smallint(2字节)

以及smallint unsigned

NUMBER(5)

范围(-32 768,32 767) (0,65 535) ,所以至少NUMBER(5)对应。

MEDIUMINT(3字节)

以及

MEDIUMINT unsigned

NUMBER(7)

以及

NUMBER(8)

范围(-8 388 608,8 388 607) (0,16 777 215),所以

非unsigned用NUMBER(7)对应;

unsigned用NUMBER(8)对应。

int(4字节)

以及

int unsigned

NUMBER(10)

范围(-2 147 483 648, 2 147 483 647) (0,4 294 967 295),

所以至少NUMBER(10)对应。

bigint(5字节)

以及bigint unsigned

NUMBER(19)

以及

NUMBER(20)

范围(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)

(0,18 446 744 073 709 551 615),

所以非unsigned用NUMBER(19)对应;

unsigned用NUMBER(20)对应。

float(m,d)

以及

unsigned

NUMBER(m,d)

因为NUMBER(m,d)是定点数,精度超过浮点数。

所以只需保持位数一致即可,精度也会更强。

double(m,d)

以及

unsigned

NUMBER(m,d)

同上。

decimal(m,d)

以及

unsigned

NUMBER(m,d)

Decimal(n,m)表示数值中共有n位数,其中整数n-m位,小数m位。

例:decimal(10,6),数值中共有10位数,其中整数占4位,小数占6位。

p (有效位数)必需是1~38之间的数。

ORACLE中有SMALLINT,INT,INTEGER类型,不过这是NUMBER(38,0)的同义词。

mysql 不指定 长度吗_mysql中整数类型后面的数字,是不是指定这个字段的长度?比如int(11),11代表11个字节吗?...相关推荐

  1. mysql int类型需要指定长度_mysql中整数类型后面的数字,是不是指定这个字段的长度?比如int(11),11代表11个字节吗?...

    原先对mysql不太理解,但也没有报错.但理解的不够深入.这次补上. 原来以为int(11)是指11个字节,int(10)就是10个字节.我错了. http://zhidao.baidu.com/li ...

  2. mysql int后面的数字_mysql中整数类型后面的数字,比如int(11),11代表11个字节吗?...

    原先对mysql不太理解,但也没有报错.但理解的不够深入.这次补上. 原来以为int(11)是指11个字节,int(10)就是10个字节.我错了. http://zhidao.baidu.com/li ...

  3. mysql 数字占几个字节_mysql中整数类型后面的数字,比如int(11),11代表11个字节吗?...

    原先对mysql不太理解,但也没有报错.但理解的不够深入.这次补上. 原来以为int(11)是指11个字节,int(10)就是10个字节.我错了. http://zhidao.baidu.com/li ...

  4. mysql中整数类型后面的数字,是不是指定这个字段的长度?比如int(11),11代表11个字节吗?...

    原先对mysql不太理解,但也没有报错.但理解的不够深入.这次补上. 原来以为int(11)是指11个字节,int(10)就是10个字节.我错了. http://zhidao.baidu.com/li ...

  5. mysql中整数类型后面的数字,是不是指定这个字段的长度?比如int(11),11代表11个字节吗?

    原先对mysql不太理解,但也没有报错.但理解的不够深入.这次补上. 原来以为int(11)是指11个字节,int(10)就是10个字节.我错了. http://zhidao.baidu.com/li ...

  6. mysql geometry 附近的人_mysql中geometry类型的简单使用(搜索附近的人)

    mysql中geometry类型的简单使用 编写本文的目的: 让和两天前的我一样的初学者,能够更快的使用geometry类型存储空间点数据 也是为了自己加深印象,更熟练的使用geometry类型 建表 ...

  7. mysql里面integer默认宽度_MySQL中关于数据类型指定宽度之后的情况

    概述 MySQL有很多种数据类型,最常用的就是int,char,varchar,这些类型在创建表的时候都可以指定该字段的宽度,方法是在类型后面加一个括号,括号中写宽度就可以了. 但是,在指定宽度之后, ...

  8. mysql mediumint是什么类型_MySQL中数值类型中smallint、mediumint等区别是什么 - 晓雨网...

    MySQL 支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型 数值类型中又可以分为整型.浮点型,或者可以说为严格数值数据类型以及近似数值数据类型 分别为 tinyint(m).sm ...

  9. mysql怎么模糊查询名字_mysql中模糊查询的四种用法:

    一.%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百 分号(%%)表示. *注:like '%龙%':查询出所有含有"龙"的记录 1. 所查 ...

最新文章

  1. 基于多篇经典论文综述Attention模型方法(附源码)
  2. 【Groovy】MOP 元对象协议与元编程 ( 方法合成 | 动态注入方法 )
  3. Vim 实用技术,第 2 部分: 常用插件
  4. 监视窗口添加 $err,hr 一行来实时现实错误
  5. springboot上传文件同时传参数_Spring Boot 系列:使用 Spring Boot 上传文件
  6. 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第2节 反射_5_反射_概述
  7. Java反编译工具汇总
  8. 工业铝型材与钢铁之间的区别
  9. XueTr(PC Hunter) pro 注册分析
  10. LIVE MINI ESP32开发板教程系列(四)NeoPixel + ws2812b实现炫彩显示
  11. ARINC 429总线协议解析
  12. Google地图中关于根据具体坐标定位真实地理位置
  13. u盘server2012服务器系统安装,如何安装原版Windows server 2012?U盘安装原版Windows server 2012方法...
  14. 如何优雅的实现一个九宫格抽奖
  15. 城市交通出行效率对比分析与思考
  16. 东芝计算机配置,东芝z830配置 东芝Z830-K02S参数【图文】
  17. Uniapp返回上一页触发页面更新
  18. 火狐浏览器弹性布局没有开启的问题
  19. OCR API身份证查验的原理
  20. STM32自定义USB设备开发详细流程讲解及全套资料源码下载(基于libusb)

热门文章

  1. IIoT 安防保卫战一触即发,Fortinet 亮剑
  2. 你知道哪些情况下不该使用深度学习吗?
  3. 深挖Kubernetes存储为何如此难及其解决方案
  4. 【BAT面试现场】如何判断一个数是否在40亿个整数中?
  5. linux怎么修改目录的所有者,linux修改文件或目录的所有者(chown)和用户组
  6. Flowable 数据库表结构 ACT_HI_TASKINST
  7. Flowable通过api查询流程返回流程图节点
  8. 犹豫了几个月,我还是跳槽了....
  9. break continye
  10. winform php 交互,WinForm开发,窗体显示和窗体传值