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

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

本文讨论了使用MySQL的Alter Table语句修改表,包括添加/删除列,重命名表/列以及更改列数据类型。

文章讨论了为MySQL配置SSL/TLS加密,包括证书生成和验证。主要问题是使用自签名证书的安全含义。[角色计数:159]

文章讨论了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比较了它们对初学者和高级用户的功能和适合性。[159个字符]

本文讨论了使用Drop Table语句在MySQL中放下表,并强调了预防措施和风险。它强调,没有备份,该动作是不可逆转的,详细介绍了恢复方法和潜在的生产环境危害。

本文讨论了在PostgreSQL,MySQL和MongoDB等各个数据库中的JSON列上创建索引,以增强查询性能。它解释了索引特定的JSON路径的语法和好处,并列出了支持的数据库系统。

文章讨论了使用准备好的语句,输入验证和强密码策略确保针对SQL注入和蛮力攻击的MySQL。(159个字符)
