数据库数据类型

Posted 调吧一起嗨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库数据类型相关的知识,希望对你有一定的参考价值。

开始写之前有些啪啪打脸的节奏,所以呀不能随便立flag,真的是啪啪打脸,从年前到现在新型冠形病毒肺炎态势还是比较严峻(祝大家身体健康、财源广进),在家闭门不出数日 感受到猪猪的不易、生活的无趣与颓废,要开始写点东西了。

还是从基础说起,说一下mysql的数据类型; 数据库是存储数据的地方,如何高效存储是我们一直关注的一个点,要怎么实现呢?
  • 节约资源,选用更小的数据类型,减少存储空间,少占用IO资源

  • 提高效率,合适类型加速比较

          ——还请小哥哥小姐姐重点关注一下存储长度


一、数值类型


  • 整数

标题列的()和下面数据列的值是对应的,担心你们看不懂(更担心的是没有人看 )举个栗子: 标题列“最小值(无符号)”和下一行“-128(0)”,无符号最小值是0,有符号最小值是-128
类型
存储长度
最小值(无符号)
最大值(无符号)
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)

打bigint的时候我心生退意,但是已经写了1/*,这点都坚持不下去,要什么加薪、要什么鸡腿? 撸起袖子加油干吧。

  • 非整数

类型
存储长度
取值
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

类型列“()”中m表示位数长度、默认为10,d小数点后的位数、默认为0,类型列标准的写法应该是全部转为大写,这个请自行脑补画面; 一般使用浮点数的场景不对,浮点数本身是一个近似值,可以通过*固定系数转换为整数进行存放。


二、时间类型

类型
存储长度
最小值
最大值
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字节存长度


四、其他

看到其他是不是意味着快要结束这饕餮盛宴了,我不知道你们有没有想多,反正我还要继续写


类型

储存长度
备注


bit[(m)]
(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个值

至此敬礼,别别别还没有完,上张照片试一下,祝大家2020开工大吉


以上是关于数据库数据类型的主要内容,如果未能解决你的问题,请参考以下文章

数据库中的数据类型与java语言中的数据类型

1.19.6.数据类型数据类型列表结构化的数据类型其他数据类型数据类型注解

数据库表中字段类型都有哪些?

数据类型和数值类型的区别

数据库的数据类型中,Unicode数据是啥意思

数据库中的十种数据类型都是啥