MySQL有几种数据类型可以限制类型的"长度",有CHAR(Length)、VARCHAR(Length)、TINYINT(Length)、 SMALLINT(Length)、MEDIUMINT(Length)、INT(Length)、BIGINT(Length)、 FLOAT(Length, Decimals)、DOUBLE(Length, Decimals)和DECIMAL(Length, Decimals)。

然而,这些数据类型的长度,并不是都指数据的大小。具体说就是:

(1)CHAR、VARCAHR的长度是指字符的长度,例如CHAR[3]则只能放字符串"123",如果插入数据"1234",则从高位截取,变为"123"。 VARCAHR同理。

(2)TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT的长度,其实和数据的大小无关!Length指的是显示宽度,举个例子:

  1. mysql> create table test(id int(3) zerofill);   
  2. Query OK, 0 rows affected (0.09 sec)   
  3. mysql> insert into test(id) values(1),(1234);   
  4. Query OK, 2 rows affected (0.06 sec)   
  5. Records: 2  Duplicates: 0  Warnings: 0   
  6. mysql> select * from test;   
  7. +------+   
  8. | id   |   
  9. +------+   
  10. |  001 |   
  11. | 1234 |   
  12. +------+   
  13. 2 rows in set (0.00 sec)

可以看出,id的显示宽度为3,不足的左边补0,数据长度超过的则原样输出。如果没有zerofill,则看不出显示宽度,没有前导零。

(3)FLOAT、DOUBLE和DECIMAL的长度指的是全部数位(包括小数点后面的),例如DECIMAL(4,1)指的是全部位数为4,小数点后1位,如果插入1234,则查询的数据是999.9。过程如下

  1. mysql> alter table test add realnum decimal(4,1);   
  2. Query OK, 2 rows affected (0.03 sec)   
  3. Records: 2  Duplicates: 0  Warnings: 0   
  4. mysql> insert into test(id,realnum) values(2,1234);   
  5. Query OK, 1 row affected, 1 warning (0.05 sec)   
  6. mysql> select * from test;   
  7. +------+---------+   
  8. | id   | realnum |   
  9. +------+---------+   
  10. |  001 |    NULL |   
  11. | 1234 |    NULL |   
  12. |  002 |   999.9 |   
  13. +------+---------+   
  14. 3 rows in set (0.02 sec)

附录 常见MySQL数据类型(留作备忘)

类 型

大 小

描 述

CAHR(Length)

Length字节

定长字段,长度为0~255个字符

VARCHAR(Length)

String长度+1字节或String长度+2字节

变长字段,长度为0~65 535个字符

TINYTEXT

String长度+1字节

字符串,最大长度为255个字符

TEXT

String长度+2字节

字符串,最大长度为65 535个字符

MEDIUMINT

String长度+3字节

字符串,最大长度为16 777 215个字符

LONGTEXT

String长度+4字节

字符串,最大长度为4 294 967 295个字符

TINYINT(Length)

1字节

范围:-128~127,或者0~255(无符号)

SMALLINT(Length)

2字节

范围:-32 768~32 767,或者0~65 535(无符号)

MEDIUMINT(Length)

3字节

范围:-8 388 608~8 388 607,或者0~16 777 215(无符号)

INT(Length)

4字节

范围:-2 147 483 648~2 147 483 647,或者0~4 294 967 295(无符号)

BIGINT(Length)

8字节

范围:-9 223 372 036 854 775 808~9 223 372 036 854 775 807,或者0~18 446 744 073 709 551 615(无符号)

FLOAT(Length, Decimals)

4字节

具有浮动小数点的较小的数

DOUBLE(Length, Decimals)

8字节

具有浮动小数点的较大的数

DECIMAL(Length, Decimals)

Length+1字节或Length+2字节

存储为字符串的DOUBLE,允许固定的小数点

DATE

3字节

采用YYYY-MM-DD格式

DATETIME

8字节

采用YYYY-MM-DD HH:MM:SS格式

TIMESTAMP

4字节

采用YYYYMMDDHHMMSS格式;可接受的范围终止于2037年

TIME

3字节

采用HH:MM:SS格式

ENUM

1或2字节

Enumeration(枚举)的简写,这意味着每一列都可以具有多个可能的值之一

SET

1、2、3、4或8字节

与ENUM一样,只不过每一列都可以具有多个可能的值

MySQL数据类型的长度的更多相关文章

  1. [转]分析MySQL数据类型的长度【mysql数据字段 中length和decimals的作用!熟悉mysql必看】

    转载自:http://blog.csdn.net/daydreamingboy/article/details/6310907 分析MySQL数据类型的长度 MySQL有几种数据类型可以限制类型的&q ...

  2. mysql数据类型最大长度记录

    MySQL中各数据类型的取值范围 转在这里,慢慢记下来. TINYINT -128 - 127 TINYINT UNSIGNED 0 - 255 SMALLINT -32768 - 32767 SMA ...

  3. MySQL数据类型字节长度

    1.字符串 char(n): n 字节长度 varchar(n): 如果是 utf8 编码, 则是 3 n + 2字节; 如果是 utf8mb4 编码, 则是 4 n + 2 字节. 2.数值类型: ...

  4. MySQL数据类型2

    一.MySQL的数据类型 主要包括以下五大类: 整数类型:BIT.BOOL.TINY INT.SMALL INT.MEDIUM INT. INT. BIG INT 浮点数类型:FLOAT.DOUBLE ...

  5. MySQL数据类型 int(M) 表示什么意思?详解mysql int类型的长度值问题

    MySQL 数据类型中的 integer types 有点奇怪.你可能会见到诸如:int(3).int(4).int(8) 之类的 int 数据类型.刚接触 MySQL 的时候,我还以为 int(3) ...

  6. mysql数据类型长度

    1个字节= 8位  tinyint 为一个字节  2的8次方= 256 所以最多存储到256 日期和时间数据类型 MySQL数据类型 含义 date 3字节,日期,格式:2014-09-18 time ...

  7. mysql 数据类型

    1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节  范围(-128~127) smallint(m) 2个字节  范围(-32768~32767) mediumint(m) ...

  8. MySQL 数据类型 详解

    MySQL 数据类型 详解 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 My ...

  9. MySQL数据类型的验证

    CHAR char (M) M字符,长度是M*字符编码长度,M最大255. 验证如下: mysql)) default charset=utf8; ERROR (): ); use BLOB or T ...

随机推荐

  1. vulcanjs 包类型

    npm 添加在pacakge.json 文件中的 meteor core 包 由meteor 框架提供的 meteor remote 包 从包服务器加载的,使用username:package 格式组 ...

  2. oracle之 redo过高诊断

    一.诊断过度redo 要找到生成大量重做的会话,您可以使用以下任何一种方法.这两种方法都检查生成的撤销量.当一个事务生成撤销,它将自动生成重做. 当需要检查生成大量的程序时,使用第一个查询.当这些程序 ...

  3. 完美解决IE9浏览器出现的对象未定义问题

    目前Window7的机器上,使用IE9浏览器的用户很多,但是IE9在兼容性上做了较严格的控制,导致很多程序在chrome,firefox,ie6,ie7,ie8上可以正常运行,在ie9上确出现了各种问 ...

  4. JS enter事件及数据不完整阻止下一步操作

    阻止下一步操作: 1.return false;  2.e.preventDefault(); 但IE8不支持 //键盘事件|enter $(function () { document.onkeyd ...

  5. redux学习与使用

    Redux: 主要概念Action,reducer,store,state 原理:dispatch ({ type:action, preload: { val } } ) --->reduce ...

  6. DKH大数据分析平台解决方案优势说明

    大数据技术的发展与应用已经在深刻地改变和影响我们的日常生活与工作,可以预见的是在大数据提升为国家战略层面后,未来的几年里大数据技术将会被更多的行业应用. 相信很多人对于大数据技术的应用还是处于一个非常 ...

  7. 阿里巴巴Java开发手册-并发处理

    1. [强制]获取单例对象需要保证线程安全,其中的方法也要保证线程安全.说明:资源驱动类.工具类.单例工厂类都需要注意. 2. [强制]创建线程或线程池时请指定有意义的线程名称,方便出错时回溯.正例: ...

  8. C#之设计模式之六大原则

    一.单一职责原则 原文链接:http://blog.csdn.net/lovelion/article/details/7536542 单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小. ...

  9. Robomongo,Mongo可视化工具

    哇唔,其实她是三(阴险脸). 你看你看,界面清新,让人家心旷神怡(害羞),谁还想win+R+mongo呀呀呀?! 哎呀呀,继续···说正事. 在这里···借助SQL进一步理解下MongoDB SQL术 ...

  10. Juery 实现淡出 淡现效果

    HTML: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...