数据库数据类型
Posted 调吧一起嗨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库数据类型相关的知识,希望对你有一定的参考价值。
节约资源,选用更小的数据类型,减少存储空间,少占用IO资源
提高效率,合适类型加速比较
——还请小哥哥小姐姐重点关注一下存储长度
一、数值类型
整数
类型 |
存储长度 |
最小值(无符号) |
最大值(无符号) |
tinyint |
1 |
-128(0) | 127(255) |
smallint |
2 |
-32768(0) | 32767(65535) |
mediumint |
3 |
-8388608(0) |
8388607(16777215) |
int(integer) |
4 |
-2147483648(0) | 2147483647(4294967295) |
bigint |
8 |
-9223372036854775808(0) |
9223372036854775807(18446744073709551615) |
非整数
类型 |
存储长度 |
取值 |
float[(m,[d])] |
4 or 8 |
-3.402823466E+38 - -1.175494351E-38 0 1.175494351E-38 - 3.402823466E+38 |
double[(m[,d])](real,double precision) |
8 |
-1.7976931348623157E+308 - -2.2250738585072014E-308 0 2.2250738585072014E-308 - 1.7976931348623157E+308 |
二、时间类型
类型 |
存储长度 |
最小值 |
最大值 |
datetime |
8 |
1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
date |
3 |
1000-01-01 | 9999-12-31 |
time |
3 |
00:00:00 | 23:59:59 |
timestamp |
4 |
1970-01-01 00:00:00 | |
year |
1 |
1000 | 9999 |
三、字符类型
类型 |
最大储存空间 | 备注 |
char[(m)] |
255characters(indeependent of charset) |
1、静态,储存长度基于字符集,mysql默认的单字节编码latin1最大储存长度255,双字节编码gbk最大储存长度510; 2、其储存长度为m个字符,不够空格来凑,m默认为1,访问时将忽略all空格,so需要空格则不用char 3、5.0.3版本后超过255的不再自动转换,将拒绝并给出错误信息 |
varchar[(m)] |
65535 bytes or 255 characters |
1、动态储存,仅储存实际长度,最大长度与mysql版本有关,5.0.3前用字符数控制最大长度,5.0.3开始更改为字节数限制 2、存什么返回什么 3、实际长度小于255mysql用1字节存放varchar数据实际长度,大于255用2字节存放 |
tinytext[(m)] |
255 characters(sigle-byte) | 1、以下4种类型均属动态储存,通过最大字符数限制最大长度,使用多字节字符集时,将以单字节字符计算字符数 4、4种text类型没有默认值,索引必须指定前缀长度 2、该类型需1字节存放长度 |
text[(m)] |
65535 characters(sigle-byte) |
2字节存长度 |
mediumtext[(m)] | 16777215 characters (sigle-byte) |
3字节存长度 |
longtext[(m)] | 4294967295 characters(sigle-byte) |
4字节存长度 |
四、其他
类型 |
储存长度 |
备注 |
(m+7)/8 bytes |
最大(64+7)/8 m表示每个值的bits数目,默认1,5.0.3真正实现,之前是tinyint(1)且仅支持myisam引擎,从5.0.5开始memory、innoDB、NDB cluster开始支持 myISAM中通过bit存储,其他的引擎则转换为最小的int类型存储 |
|
set('v1','v2'…) |
1,2,4or8 bytes取决于储存值数目 |
最大64个值 适合较少变化且值较少场景,占用存储空间较少,使用方面较为复杂 |
enum('v1','v2'…) | 1or2bytes取决于储存值数目 |
最大65535个值 |
以上是关于数据库数据类型的主要内容,如果未能解决你的问题,请参考以下文章