1 简介

使用MySQL数据库存储数据时,不同的数据类型决定了MySQL存储数据方式的不同。为此,MySQL数据库提供了多种数据类型,其中包括浮点数,整数,定点数,日期和时间类型,字符串类型以及二进制类型。熟悉了解MySQL所支持的类型,正如在C++,Java等编程语言所支持的类型,是非常必备的基础知识。

2 数据类型分类

2.1 整数类型

MySQL支持5种数据类型,根据使用场景和取值的不同可以相应选择具体类型。其中五种类型如下:

TINYINT   1个字节    0—255   -128-127
SMALLINT    2个字节   0-65535   -32768----32767
MEDIUMINT    3个字节   很大0-1600万左右
INT    4个字节    0到40亿左右
BIGINT    8个字节    非常大

2.2 浮点数类型和定点数类型

在MySQL中,存储的小数点都是使用浮点数和定点数标识的,浮点数类型有两种,分为单精度和双精度类型,即FLOAT和DOUBLE。而定点数只有DECIMAL类型。

FLOAT    4个字节
DOUBLE   8个字节
DECIMAL(M, D) M+2个字节

注意:DECIMAL类型与DOUBLE类型取值范围相同。Decimal类型有效取值范围由M和D决定,其中,M表示的是数据的长度,D表示小数点后的长度。比如将数据类型为Decimal(6, 2)的数据3.145插入数据后,显示的结果为3.14

2.3 日期与时间类型

为了方便在数据库中存储日期和时间,MySQL提供了表示日期和时间的数据类型,分别为YEAR,DATE,TIME,DATETIME,和TIMESTAMP。字节数,取值范围,日期格式以及零值如下:
数据类型 字节数 取值范围 日期格式 零值

YEAR 1   1901-2155   YYYY    0000
DATE    4   1000-01-01到9999-12-3    YYYY-MM-DD  0000-00-00
TIME    3个字节    -838:59:59到   HH:MM:SS    00:00:00
DATETIME    8个字节    1000-01-01 00:00:00到9999-12-31 3:59:59  YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00
TIMESTAMP   4个字节    1970-01-01 00:00:01~2038-01-19 03:14:07 YYYY-MM-DD HH:MM:SS 0000-00-00 00:00:00

注意:每种日期和时间类型的取值范围都是不同的。如果插入的数据不合法,系统会自动将对应的零值插入数据库中。

2.3.1 YEAR类型

YEAR类型用于表示年份,可以使用以下三种格式指定YEAR类型的值

  1. 使用4位字符串或数字表示,范文为‘1901’~‘2155’, 1901~2155。
    
  2. 使用两位字符串表示,范围为‘00’–’99’,其中‘00’–‘69’范围的值会被转化为2000–2069范围的YEAR的值,而‘70’–‘99’会被转换为1970–1999范围的YEAR值
  3. 使用两位数字,范围为1-99,与上述相同,不再赘述

2.3.2 DATE类型

DATE类型用于表示日期值,不包含时间部分。有4种表示方式

  • 以’YYYY-MM-DD’或者’YYYYMMDD’字符串格式表示
    可以输入“2014-12-01”或”20141201”,插入数据库中的日期都为2014-01-21
  • 以‘YY-MM-DD’或者’YYMMDD’表示
    其中YY表示的是年,范围为’00’-’99’,其中’00’-’69’范围的值会转化为2000~2069范围的值,‘70’-‘99’的值会被转化为1970-1999范围的值。
  • 以YY-MM-DD或者YYMMDD数字格式表示
    与上述内容相同,不再赘述
  • 使用CURRENT_DATE或NOW()表示当前系统日期

2.3.3 TIME类型

TIME类型用于表示时间值,它的显示形式为HH:MM:SS.在MySQL中可以有三种格式指定TIME类型值

  • 以’D HH:MM:SS’字符串格式表示,其中D表示日,可以取0~34之间的值,小时的值等于(D*24+HH)
    ‘2 11:30:54’,插入数据库的值为59:30:50
  • 以‘HHMMSS’字符串或者HHMMSS数字格式表示
  • 使用CURRENTTIME或者NOW()输入当前系统时间

2.3.4 DATETIME类型

用于表示日期和时间,显示形式为‘YYYY-MM-DD HH:MM:SS’,有四种格式指定该类型值

  1. ‘YYYY-MM-DD HH:MM:SS’或者‘YYYYMMDDHHMMSS’字符串表示
  2. 以‘YY-MM-DD HH:MM:SS’或者‘YYMMDDHHMMSS’表示
  3. 以YYYYMMDDHHMMSS或YYMMDDHHMMSS数字格式表示日期时间
  4. 使用NOW()来输入当前系统的日期和时间

2.3.5 TIMESTAMP类型

TIMESTAMP类型用于表示日期和时间,显示形式与DATETIME相同,但取值范围比DATETIME小。输入的形式如下:

  1. 使用CURRENT_TIMESTAMP来输入当前系统日期和时间
  2. 输入NULL,系统会输入当前系统日期和时间
  3. 无任何输入,系统会输入当前系统日期和时间

2.4 字符串和二进制类型

为了存储字符串、图片和声音等数据,MySQL提供了字符串和二进制类型。
|:—|---|

数据类型 类型说明
CHAR 表示固定长度的字符串
VARCHAR 用于表示可变长度的字符串
BINARY 用于表示固定长度的二进制数据
VARBINARY 用于表示可变长度的二进制数据
BLOB 用于表示二进制大数据
TEXT 用于表示大文本数据
ENUM 表示枚举类型,只能存储一个枚举字符串值
SET 表示字符擦混对象,可以有零个或者多个值
BIT 表示位字段类型

2.4.1 CHAR和VARCHAR

CHAR和VARCHAR都用来表示字符串数据,不同的是VARCHAR可以存储变长的字符串。在MySQL中定义格式如下

CHAR(M) 或VARCHAR(M)

2.4.2 BINARY和BINARY

表示二进制数据,定义格式如下:

BINARY(M) 或VARBINARY(M)

其中M表示二进制数据的最大字节长度

2.4.3 TEXT

TEXT表示大文本数据,可以存储文章内容,评论,类型分为4种
因为一个汉字是2个字节,而1Kb=1024个字节,1M=1024Kb
那么计算公式应该是:1M=1024 × 1024/2=524288(个汉字)
要是拿一篇文章500汉字来算的话,一般524288/500=1048(篇文章),要是写长篇大论的话算1000字一篇文章,那么就是524篇文章。如果你拥有一个50M的数据库,那么你将可以存放小文章1048×50=52400(五万两千四百篇文章),大文章1048/2 × 50=26200(两万六千两百篇)。
50M数据库:
大文章26200(两万六千两百篇)

TINYTEXT 0~255字节0.25k
MEDIUMTEXT 0~16777215 16Mb
TEXT 0~65535字节
LOGNTEXT 4096M,即4G

2.4.4 BLOB

BLOB类型是一种特殊的二进制类型,它用于表示数据量很大的二进制数据,例如图片,PDF文档,也分为4种类型

TINYBLOB
MEDIUMBLOB
BLOB
LONGBLOB

2.4.5 ENUM

ENUM枚举类型,定义ENUM类型的数据格式如下:

ENUM(‘值1’, ‘值2’,‘值3’, ‘值4’,’值n’)

ENUM类型的数据只能从枚举列表中,并且只能取一个。枚举列表中的每个值都有一个顺序编号,MySQL中存储的是顺序编号,而不是列表中的值。

2.4.6 SET

定义域ENUM类似

SET(‘值1’, ‘值2’,‘值3’, ‘值4’,’值n’)

SET类型用于表示字符串对象,它的值可以有零个或多个。

2.4.7 BIT

BIT类型用于表示二进制数据。定义格式如下:

BIT(M)

M用于表示每个值得位数,范围1~64.

3 总结

在MySQL使用过程中,之前一直不清楚日期和时间的具体表示,在听传智博客课程的过程中,这部分较为详细,因此在此做了一个文章,可以参见MySQL数据库入门。文章只为记录。还是挺不错的。

5文件下载

https://download.csdn.net/download/lk142500/10749820

MySQL之数据类型相关推荐

  1. 再谈MySQL JSON数据类型

    2019独角兽企业重金招聘Python工程师标准>>> 本文首发微信公众号<andyqian>.期待你的关注- 前言 眨眼间,有一小段时间没有更新文章了.唉,又懒了... ...

  2. MySQL 字段数据类型/长度

    分类: 数据库学习2010-09-27 16:30 105人阅读 评论(0) 收藏 举报 一.MySQL 字段数据类型/长度 1.数值类型 列类型              需要的存储量 TINYIN ...

  3. MySQL日期数据类型、时间类型使用总结

    转载链接:http://www.jb51.net/article/23966.htm MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 存储空间 日期格式 日期范围 ----- ...

  4. mysql 变量 数据类型_浅谈mysql(二)数据类型

    //我...我才是不是傲娇呢 //如有问题还请多多指教.上回我们说到我们如何使用MySQL,关键是要看它的用途.用途衍生语句.之后文章的思路,也是如此,从用途出发,然后再到语句. 那么,我们先问几个问 ...

  5. 2Python全栈之路系列之MysQl基本数据类型

    Python全栈之路系列之MySQL基本数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类: 数字类型 日期和时间类型 字符串类型 数字类 ...

  6. mysql中数据类型的长度

    一.varchar(n).char(n)中的n的含义 1)varchar(m),char(n)里面的m或n代表的是字符的个数. 打开mysql手册,看到这样一句话 The CHAR and VARCH ...

  7. MySQL常用数据类型

    MySQL常用数据类型 1.整数类型.浮点数类型.定点类型 (1)整数类型(默认的是有符号的) 整数类型 字节数 无符号(unsigned)范围 有符号(signed)范围 tinyint 1 0-2 ...

  8. mysql空间数据类型解释_MySQL空间数据类型

    MySQL空间数据类型讲解 MySQL具有与OpenGIS类对应的数据类型.某些类型只能保存单个几何值: GEOMETRY POINT LINESTRING POLYGON GEOMETRY能够保存任 ...

  9. MySQL不同数据类型如何表示_MySQL系列(二)--数据类型

    如何选择优化的数据类型: 当一个列有多种数据类型可以选择,选择顺序:数字类型.日期/二进制类型.字符类型,相同级别的数据类型,优先选择占用空间小的类型 1.通常更小的更好 相同级别的数据类型,选择占据 ...

  10. MySQL之数据类型、建表和六大约束

    前言:昨天跟大家分享了MySQL的账号管理.建库及四大引擎,今天与大家分享的知识是MySQL之数据类型.建表和六大约束. 一.数据类型介绍 1.作用:MySQL中定义数据字段的类型对你数据库的优化是非 ...

最新文章

  1. Xcode终端快捷键
  2. wxWidgets:wxPropertyGrid概述
  3. c++ 输出二进制_【位运算与状态压缩】二进制的魅力
  4. 淘汰原因_我是唱作人2马頔淘汰怎么回事?马頔个人资料照片被淘汰原因揭秘...
  5. 使用Spring AOP重试方法执行
  6. DEA使用git提交代码时,点了commit之后卡死在performing code analysis部分,或者performing code analysis结束后没有进入下一步操作。...
  7. nginx 一般配置实例 静态页面
  8. c程序设计(谭浩强)阅读与实操 1章 (新手向)
  9. 【线性系统】五、稳定性
  10. vuejs搭建的项目对于ie浏览器的处理
  11. 30. 人类将如何变革--走出金字塔模型(下)
  12. Mac 下撰写文档时输入 command、option、control 等键盘符号的方法
  13. axios.post发送小数据可以,但发送大数据出现Cross origin requests are only supported for protocol schemes: http, data,
  14. 基于格的密码与SABER
  15. Android TV 开发简介
  16. 基于FPGA的MPPT系统开发
  17. 【20210416期AI简报】微软分层ViT模型开源、 DIY一只“眼睛”摄像头
  18. 干货!8套H5 App完整源码!果断收藏!
  19. 信安第二版:第3章密码学基本理论学习笔记
  20. typora中图片转base64

热门文章

  1. 计算机行业热点的专业信息渠道,新南威尔士大学信息技术硕士专业详解 通往IT大神的必经之路...
  2. 计算机基础实验4,计算机基础实验 3-4 实验报告
  3. Tekton之一:如何部署起来 Tekton
  4. 3.《解读基金:我的投资观与实践》读书笔记
  5. direct do造句 sb to_wish sb to do造句
  6. 【面试】北京航天无人机系统工程研究所
  7. 常用H5标签-第二部分
  8. JAVA 获取本机IP(包括 内网IP 和 公网IP)
  9. 前端求职系列:如何写一份小程序简历(二)
  10. 各个 .NET 平台的 UI 框架比较