失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > MySQL—MySQL数据库支持的数据类型【MySQL】

MySQL—MySQL数据库支持的数据类型【MySQL】

时间:2019-04-30 15:12:06

相关推荐

MySQL—MySQL数据库支持的数据类型【MySQL】

数据库|mysql教程

数据库-mysql教程

在数据库中,数据类型对于设计数据库者来说十分重要,记得在一次数据库大会上,某前辈说了这么一句话:“如果是我面试DBA,我第一个问题就是关于tinyint、smallint、mediumint、int、bigint的区别,如果这些不能详细解释,后面不管他表现的多好,我不会考虑”,从这里可以理解掉MySQL的数据类型是多么重要,很多人特别是开发人员往往不会关注这方面,从理解上大家会任务数据库对内存等方面要求很高,这些数据类型并不是很重要,其实他忽略了一个关键的因素,磁盘IO,如果数据类型设置的不合理,会占用很大的磁盘空间,会给数据带来IO上得瓶颈,下面我们就详细的学习下MySQL支持的数据类型

jdk源码包下载,vscode预览php,ubuntu-vg-root,配置tomcat什么,SQLITE下载小说app,shopex wap手机版插件,前端框架vue6,前端爬虫 疫情数据,php 数组 键值对,网站 seo 设置,可以下载代码的网站,网页象棋制作,微信名片模板源码,html5页面上下切换效果,用sql编管理系统,c程序源代码网站lzw

1:数值类型

小猪cms微信源码破解,rufus3ubuntu,tomcat怎么局域网链接,tor爬虫代理,PHP开发实战宝典.rar,seo教程付费lzw

整数类型

微信企业号php源码,vscode中bash,ubuntu如何编辑图片,mac 内置tomcat,c 语言 创建sqlite,微信增强插件,最易用的前端框架,决斗链接爬虫妖女,php 内容管理系统,seo流量统计,asp消防局网站源码,移动端网页手指滑动,古典博客模板,wordpress 页面类型,网站后台用户管理系统,众筹网站程序lzw

字节

最小值

最大值

TINYINT

1

有符号-128

无符号0

有符号127

无符号255

SMLLINT

2

有符号-32768

无符号0

有符号32767

无符号65535

MEDIUMINT

3

有符号-8388608

无符号0

有符号8388607

无符号16777215

INT、INTEGER

4

有符号-2147483748

无符号0

有符号2147483747

无符号4294967295

BIGINT

8

有符号-9223372036854775808

无符号0

有符号9223372036854775807

无符号18446744073709551615

浮点数类型

字节

最小值

最大值

FLOAT

4

+_1.17549435-38

+_3.402823466E+38

DOUBLE

8

+_2.225073858507204E-308

+_1.7976931348623157E+308

在整数类型着中,按照取值范围和存储方式不同,分为tinyint、smallint、 mediumint、int、bigint这5个类型,如果超出类型范围的操纵,会发生“out of range”错误提示。为了避免此类问题发生,在选择数据类型时要根据应用的实际请客确定其取值范围,最后根据确定的结果慎重选择数据类型

所有的整数类型都有一个可选属性UNSIGNED(无符号),如果需要在字段里面保存非负数或者需要较大的上限值时,可以用此选项,他的取值范围是正常值的下限取0,上限取原值的2倍

另外,整数类型还有一个属性,AUTO_IMCREMENT。在需要产生唯一标示符或顺序值时,可利用此属性,这个属性只用于整数类型,AUTO_INCREMENT值一般从1开始,每行加1

2:日期时间类型

MySQL中友很多种数据类型可以用于日期和时间的表示,不同的版本可能有所差异,下表列出5.0所支持的日期和时间类型

日期和时间类型

字节

最小值

最大值

DATE

4

1000-01-01

9999-12-31

DATETIME

8

1000-01-01 00:00:00

9999-12-31 23:59:59

TIMESTAMP

4

19700101080001

2038年的某个时刻

TIME

3

-838:59:59

838:59:59

YEAR

1

1901

2155

上述类型,除了TIMESTAMP外都容易理解,下面我们就TIMESTAMP和DATETIME进行对比

1:TIMESTAMP支持的时间范围小,其取值范围从19700101080001到2038年的某个时刻,而DATETIME是从1000-01-01 00:00:00到9999-12-31 23:59:59,范围更大

2:表中的第一个TIMESTAMP列自动设置为系统时间,如果在一个TIMESTAMP中插入NULL,则该列赋值将自动设置为当前的日期和时间,再插入或者更新一行但不明确给TIMESTAMP列赋值时也会子偶那个设置该列的当前的时间和日期,当插入的值超出取值范围,MySQL认为该值溢出,使用“0000-00-00 00:00:00”进行填补

3:TIMESTAMP的插入和查询都受当地时区的影响,更能反应出实际的日期。而DATETIME则只能反应出插入时当地的时区,其他时区的人查看数据必然会受到影响

4:TIMESTAMP的属性受MySQL版本和服务器SQLMode的影响很大

3:字符串类型

MySQL提供了很多种对字符数据的存储类型,下表就详细进行了对比

字符串类型

字节

描述及存储需求

CHAR(M)

M

M为0~255之间的整数

VARCHAR(M)

M为0~65535之间的整数,值的长度+1个字节

TINYBLOB

允许长度0~255字节,值的长度+1个字节

BLOB

允许长度0~65535字节,值的长度+2个字节

MEDIUMBLOB

允许长度0~167772150,值的长度+3个字节

LONGBLOB

允许长度0~4294967395,值的长度+4个字节

TINYTEXT

允许长度0~255,值的长度+2个字节

TEXT

允许长度0~65535字节,值的长度+2个字节

MEDIUMTEXT

允许长度0~167772150,值的长度+3个字节

LONGTEXT

允许长度0~4294967395,值的长度+4个字节

VARBINARY( M)

允许长度0~M个字节的变长字符串,值的长度+1个字节

BINARY(M)

M

允许长度0~M个字节的变长字符串

CHAR和VARCHAR类型

CHAR和VARCHAR很类似,都用来保存MySQL中较短的字符串,二者的主要区别在于存储方式的不同,CHAR列的长度固定为创建表时的长度,长度可以为从0~255任何值。而VARCHAR列中的值为可变长字符串,长度可以为指定的0~255或者65535之间的值。在检索的时候,CHAR列删除了尾部的空格,而VARCHAR保留了这些空格。会造成索引存储大小上的变化,所以在设置这个类型的时候一定要慎重,充分分析现有业务

BINARY和VARBINARY类型

BINARY和VARBINARY类似于CHAR和VARCHAR,不同的是它们包含二进制串而不包含非二进制字符串。

TEXT和BOLB类型

这2种主要用于存储一些大字段类似于图片等,慎用……

如果觉得《MySQL—MySQL数据库支持的数据类型【MySQL】》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。