Welcome 微信登录

首页 / 数据库 / MySQL / 分析MySQL数据类型的长度

 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.   
  4. mysql> insert into test(id) values(1),(1234);   
  5. Query OK, 2 rows affected (0.06 sec)   
  6. Records: 2  Duplicates: 0  Warnings: 0   
  7.   
  8. mysql> select * from test;   
  9. +------+   
  10. | id   |   
  11. +------+   
  12. |  001 |   
  13. | 1234 |   
  14. +------+   
  15. 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.   
  5. mysql> insert into test(id,realnum) values(2,1234);   
  6. Query OK, 1 row affected, 1 warning (0.05 sec)   
  7.   
  8. mysql> select * from test;   
  9. +------+---------+   
  10. | id   | realnum |   
  11. +------+---------+   
  12. |  001 |    NULL |   
  13. | 1234 |    NULL |   
  14. |  002 |   999.9 |   
  15. +------+---------+   
  16. 3 rows in set (0.02 sec)  
附录 常见MySQL数据类型(留作备忘)
类 型大 小描 述
CAHR(Length)Length字节定长字段,长度为0~255个字符
VARCHAR(Length)String长度+1字节或String长度+2字节变长字段,长度为0~65 535个字符
TINYTEXTString长度+1字节字符串,最大长度为255个字符
TEXTString长度+2字节字符串,最大长度为65 535个字符
MEDIUMINTString长度+3字节字符串,最大长度为16 777 215个字符
LONGTEXTString长度+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,允许固定的小数点
DATE3字节采用YYYY-MM-DD格式
DATETIME8字节采用YYYY-MM-DD HH:MM:SS格式
TIMESTAMP4字节采用YYYYMMDDHHMMSS格式;可接受的范围终止于2037年
TIME3字节采用HH:MM:SS格式
ENUM1或2字节Enumeration(枚举)的简写,这意味着每一列都可以具有多个可能的值之一
SET1、2、3、4或8字节与ENUM一样,只不过每一列都可以具有多个可能的值
优化MySQL 的 limit offsetMac版xampp的MySQL启动不了解决办法相关资讯      MySQL教程 
  • 30分钟带你快速入门MySQL教程  (02月03日)
  • MySQL教程:关于I/O内存方面的一些  (01月24日)
  • CentOS上开启MySQL远程访问权限  (01/29/2013 10:58:40)
  • MySQL教程:关于checkpoint机制  (01月24日)
  • MySQL::Sandbox  (04/14/2013 08:03:38)
  • 生产环境MySQL 5.5.x单机多实例配  (11/02/2012 21:02:36)
本文评论 查看全部评论 (0)
表情: 姓名: 字数