博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分析MySQL数据类型的长度
阅读量:6554 次
发布时间:2019-06-24

本文共 2382 字,大约阅读时间需要 7 分钟。

hot3.png

分析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指的是显示宽度,举个例子:

[cpp]

  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。过程如下

 

[cpp]

  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个字符

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

12字节

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

SET

12348字节

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

 

参考资料:

转载于:https://my.oschina.net/jjyuangu/blog/375860

你可能感兴趣的文章
基于php5.5使用PHPMailer-5.2发送邮件
查看>>
android java.lang.SecurityException: Permission Denial: not allowed to send broadcast
查看>>
InstallShield 2012 Spring新功能试用(16): Suite/Advanced UI 或 Advanced UI安装程序能在安装时进行输入合法性校验与反馈...
查看>>
【转】正则表达式高级讲解
查看>>
C#面试宝典
查看>>
三种排序算法python源码——冒泡排序、插入排序、选择排序
查看>>
基金项目的英文
查看>>
.NET平台下使用MongoDB入门教程
查看>>
《软件性能测试与LoadRunner实战教程》喜马拉雅有声图书上线
查看>>
R语言可视化学习笔记之ggpubr包—SCI文章图
查看>>
【linux+C】通过几个实例温习指针
查看>>
HDU 1015 Safecracker 解决问题的方法
查看>>
【Echarts每天一例】-1
查看>>
ios 字典转模型
查看>>
正在编译转换: 未能找到元数据文件 EntityFramework.dll
查看>>
Java类集
查看>>
K-Means聚类算法的原理及实现【转】
查看>>
类的生命周期
查看>>
php apache用户写文件夹权限设置
查看>>
003-诠释 Java 工程师【一】
查看>>