1、数值类型

  • 整数类型

MySQL 支持的整数类型有 SQL 标准中的整数类型 INTEGER,SMALLINT,TINYINT、MEDIUMINT和BIGINT。其整数类型的特性如下表所示:

在上述INT类型中,又有三个可选属性,分别是:

  1. (M):M 指定了 INT 型数据显示的宽度。
  2. UNSIGNED:UNSIGNED(无符号)修饰符规定字段的值只能保存正数。
  3. ZEROFILL:ZEROFILL(零填充)修饰符规定可以用 0(不是空格)来填补输出的值。使用这个修饰符可以阻止 MySQL 数据库存储负值。
  • 浮点数类型和定点数类型

浮点数类型包括单精度(FLOAT)和双精度(DOUBLE)两种,定点数类型只包括DEC/DECIMAL/NUMERIC 一种,DEC/DECIMAL 与 NUMERIC 表示的是同一种数据类型。

浮点数类型所占空间大小及表数范围如下表所示:

在浮点数数中有一个默认值参数(M,D),“(M,D)”中的 M 表示浮点数据类型中数字的总个数,D 表示小数点后数字的个数。

注意:

  (1) M 的取值范围为 0~255。但由于 FLOAT 只能保证 6 位有效数字的准确性,所以在FLOAT(M,D)中,当 M<=6 时,数字通常是准确的;而 DOUBLE 只能保证 16 位有效数字的准确性,所以在 DOUBLE(M,D)中,当 M<=16 时,数字也通常是准确的。
  (2) D 的取值范围为 0~30,同时必须满足 D<=M,否则会报错。
  (3)浮点数类型(M,D)的用法为非标准用法,如果需要数据库迁移,则不要这么使用。

定点数的类型特性如下所示:

  (1) DECIMAL 类型的 M 默认值为 10,D 默认值为 0。如果在创建表时,定义某字段为DECIMAL 类型而没有带任何参数,则等同于 DECIMAL(10,0),如果只带一个参数,则该参数为 M 值,D 则取默认值 0。
  (2) M 的取值范围为 1~65,取 0 时会被设为默认值 10,超出范围则会报错。
  (3) D 的取值范围为 0~30,同时必须满足 D<=M,否则会报错。
 
2、日期和时间类型
MySQL 提供了TIME、DATE、YEAR.、DATETIME 和 TIMESTAMP五种数据类型。其类型特性如下所示:

  • TIME类型

TIME类型用来存储记录只有时间没有日期的数据,

MySQL的表示方法:'HH:MM:SS'/'HHH:MM:SS'(时间值较大时用来表示)

(1)HH 表示小时,取值范围为-838~838,如果表示一天中的某个时间,此时小时取值为 0~23;如果表示两个事件的时间间隔,此时小时的取值可能会比 23大,甚至是负数;

(2)MM 表示分,取值范围为 0~59;

(3)SS 表示秒,取值范围为 0~59。

  • DATE类型

DATE用来存储日期数据,支持的范围是'1000-01-01'到'9999-12-31'。使用 CURRENT_DATE、NOW()或者 SYSDATE()三种方式获取系统当前日期。

YYYY 表示年,取值范围为 1000~9999;
MM 表示月,取值范围为 1~12;
DD 表示日,取值范围为 1~31。
  • YEAR类型

YEAR 类型只是用来表示年份的数据类型,其取值范围为 1901~2155 以及 0000,使用 NOW()或者 SYSDATE()两种方式获取系统当前年份。

  • DATETIME类型
DATETIME类型适用于需要同时存储日期与时间,DATETIME 类型的取值范围为'1000-01-01 00:00:00'~'9999-12-31 23:59:59'。
  • TIMESTAMP类型
TIMESTEMP 类型的数据指定方式与 DATETIME 基本相同,不同之处在于:
(1) 数据的取值范围不同,TIMESTEMP 类型的取值范围更小。
(2) TIMESTAMP 类型的字段没有明确赋值,或是被赋与了 NULL 值,MySQL 会自动将该字段赋值为系统当前的日期与时间。
(3) TIMESTEMP 类型还可以使用 CURRENT_TIMESTAMP 来获取系统当前时间。
(4) TIMESTEMP 类型有一个很大的特点,那就是时间是根据时区来显示的。
(5)MySQL 在存储 TIMESTEMP 类型的数据时,会转换成 UTC 时间存储,显示数据时再转换成当地时区的时间。
 
3、字符串类型

字符串类型是在数据库中存储字符串的数据类型。字符串类型有 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET 等。其类型特性如下所示:
  • CHAR 和 VARCHAR 类型

CHAR和VARCHAR类型相似,均用于较短的字符串,不同的是CHAR用于固定的长度,VARCHAR用于可变的长度,且VARCHAR存储的数据所占空间大小为字符串的实际长度加 1,如下图所示:

如果CHAR不足的字节部分会使用空格符补齐,而VARCHAR则有多少长度存储多少。

  • BINARY 和 VARBINARY 类型
BINARY 和 VARBINARY 数据类型与 CHAR 和 VARCHAR 数据类型相似,BINARY 和 VARBINARY用于存储二进制字符串,还有一些不同在于:
(1)、BINARY(M)和 VARBINARY(M)中的 M 值代表的是字节数,而非字符长度。

(2)、CHAR 和 VARCHAR 在进行字符比较时,比较的只是本身存储的字符(忽略填充字符),而BINARY 和 VARBINARY 是按照二进制值来进行比较的,因此结果会不同。
(3)、对于 BINARY 字符串,其填充字符是'\0',而 CHAR 的填充字符为空格。
  • TEXT 和 BLOB 类型

TEXT用于存储较大的文本数据类型,TEXT的子类型有TINYTEXT、TEXT、MEDIUMTEXT 以及 LONGTEXT四种。

BLOB 类型与 TEXT 类型很类似。不同点在于 BLOB 类型用于存储二进制数据。
  • ENUM 类型
ENUM 类型的中文名称为枚举类型。ENUM 是一个字符串对象,其值通常选自一个允许值列表中,该列表在创建表时会被明确地设定,设定的格式为:ENUM('value1', 'value2', 'value3', 'value4', 'value5', ···)。
  • SET 类型
SET 类型也是一个字符串对象,与 ENUM 类似但不相同。SET 类型可以从允许值列表中选择多个字符串成员,列表设定方式为SET('value1', 'value2', 'value3','value4', 'value5', ···)
 
4、JSON类型
MySQL5.7.8之后支持两种JSON数据,即JSON数组和JSON对象。

(1) JSON 数组。JSON 数组中可以存储多种数据类型,其格式为:[值 1, 值 2, 值 3, ···],如["abc", 10, null, true, false]。

(2) JSON 对象。JSON 对象是以“键/值”对形式存储的,其格式为:{“键 1”: 值 1, “键2”: 值 2, ···},如{"k1": "value", "k2": 10}。
 

01-MySQL支持的数据类型的更多相关文章

  1. mysql支持的数据类型及其测试

    原文:mysql支持的数据类型及其测试 1.基础知识 1.1如何来查看mysql的帮助手册 ?int Help float; 1.2创建表的规则 CREATE TABLE [IF NOT EXISTS ...

  2. 数据库 -- mysql支持的数据类型

    mysql支持的数据类型 数值类型 MySQL支持所有标准SQL数值数据类型. 这些类型包括严格数值数据类型(INTEGER.SMALLINT.DECIMAL和NUMERIC),以及近似数值数据类型( ...

  3. 3.Mysql支持的数据类型

    3.Mysql支持的数据类型数据类型用来指定一定的存储格式.约束和有效范围.数据类型主要有:数值类型.字符串类型.日期和时间类型.3.1 数字类型类型名 字节数 有符号最小值 有符号最大值 无符号最小 ...

  4. MySQL 支持的数据类型

    1.数值类型 MySQL 支持所有标准 SQL 中的数值类型,其中包括严格数值类型(integer.smallint.decimal.numeric),以及近似数值数据类型(float.real.do ...

  5. Mysql系列(二)—— Mysql支持的数据类型

    Mysql版本众多,每个版本支持的数据类型繁多且不一样,本篇文章中主要基于MySQL Community Server 5.7.22介绍常用的数据类型,包括其特点以及区别. 一.数据类型 正确的定义表 ...

  6. Mysql支持的数据类型(总结)

    一.数值类型 Mysql支持所有标准SQL中的数值类型,其中包括严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUB ...

  7. MySQL支持的数据类型

    1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节 范围(-128~127) smallint(m) 2个字节 范围(-32768~32767) mediumint(m) 3 ...

  8. 【MySQL】MySQL支持的数据类型

    1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节 范围(-128~127) smallint(m) 2个字节 范围(-32768~32767) mediumint(m) 3 ...

  9. MySQL支持的数据类型(1)( 整数,小点,位)

      整数类型 字节 最小值 最大值 tinyint 1 有符号-128 无符号0 有符号127 无符号255 smallint 2 有符号-32768 无符号0 有符号32767 无符号65535 m ...

  10. MySQL支持的数据类型(2)( 日期)

    日期和时间类型 字节 最小值 最大值 date 4 1000-01-01 9999-12-31 datetime 8 1000-01-01 00:00:00 9999-12-31 23:59:59 t ...

随机推荐

  1. Django 源码阅读笔记(基础视图)

    django源码解读之 View View. ContextMixin.TemplateResponseMixin.TemplateView.RedirectView View class View( ...

  2. Beta冲刺--冲刺总结

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta 冲刺 这个作业的目标 Beta冲刺--冲刺总结 作业正文 如下 其他参考文献 ... Beta冲刺 ...

  3. 12.DRF-节流

    Django rest framework源码分析(3)----节流 添加节流 自定义节流的方法 限制60s内只能访问3次 (1)API文件夹下面新建throttle.py,代码如下: # utils ...

  4. 性能测试之JVM的故障分析工具VisualVM

    VisualVM 是随JDK一同发布的jvm诊断工具,通过插件可以扩展很多功能,插件扩展也是其精华所在. 提供了一个可视界面,用于在Java应用程序在Java虚拟机上运行时查看有关Java应用程序的详 ...

  5. 虹软AI 人脸识别SDK接入 — 参数优化篇

    引言 使用了免费的人脸识别算法,感觉还是很不错的,但是初次接触的话会对一些接口的参数有些疑问的.这里分享一下我对一些参数的验证结果(这里以windows版本为例,linux.android基本一样), ...

  6. Spring mvc 面试

    Spring工作原理及其作用 1.springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作. 2.DispatcherSer ...

  7. 【题解】[USACO17JAN]Balanced Photo G

    题目链接:https://www.luogu.com.cn/problem/P3608 方法一 用树状数组求逆序对先后扫两遍,一次从前往后,一次从后往前,算出每头奶牛左右两边比她高的数量. 最后统计一 ...

  8. ceph bluestore与 filestore 数据存放的区别

    一. filestore 对象所在的PG以文件方式放在xfs文件中 1 查看所有的osd硬盘,跟其他linux其他硬盘一样,被挂载一个目录中. [root@hz-storage1 ~]# df -h ...

  9. git和github入门指南(6)

    6.交作业的流程 以下内容是螺钉课堂在线就业班提交作业的要求,非螺钉课堂在线就业班学员不用学习 螺钉课堂作业全程采用git管理,希望在日常使用中,加深对git和github的理解 具体流程: 1.注册 ...

  10. JQuery UI - draggable参数中文详细说明

    概述 在任何DOM元素启用拖动功能.通过单击鼠标并拖动对象在窗口内的任何地方移动. 官方示例地址:http://jqueryui.com/demos/draggable/ 所有的事件回调函数都有两个参 ...