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. Tensorflow从0到1(3)之实战传统机器算法

    计算图中的操作 import numpy as np import tensorflow as tf sess = tf.Session() x_vals = np.array([1., 3., 5. ...

  2. Mybatis源码手记-从缓存体系看责任链派发模式与循环依赖企业级实践

    一.缓存总览 Mybatis在设计上处处都有用到的缓存,而且Mybatis的缓存体系设计上遵循单一职责.开闭原则.高度解耦.及其精巧,充分的将缓存分层,其独到之处可以套用到很多类似的业务上.这里将主要 ...

  3. cb34a_c++_STL_算法_查找算法_(7)_lower_bound

    cb34a_c++_STL_算法_查找算法_(7)_lower_bound//针对已序区间的查找算法,如set,multiset关联容器-自动排序lower_bound()--第一个可能的位置uppe ...

  4. 004.OpenShift命令及故障排查

    一 CLI访问OpenShift资源 1.1 资源操作 OCP将OpenShift集群中的为由主节点管理的对象统称为资源,如:node.service.pod.project.deployment.u ...

  5. Beta冲刺<1/10>

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

  6. Page "页面路径" has not been registered yet.

    网上找了很多方法,但和我遇到的都不一样,我这个页面是我路由接口更改时遇到的错误,原因是我移动了文件,js里引用的文件找不到了 解决方法:更改引用路径即可

  7. Ajax 下载文件 文件被损坏

    问题表现 Ajax 下载文件成功后,打开提示格式损坏,源代码如下: axios({ method: 'get', url: "/public/工作簿1.xlsx", // 静态资源 ...

  8. python将列表按行写入csv

    import csv rows2 = ['abc1/ab1c','N'] for n in range(10): f = open("ok.csv", 'a',newline='' ...

  9. MongoDB快速入门教程(3.1)

    3.MongoDB进阶 3.1.权限验证 以下内容适用于Mac系统用户,window系统用户请看后面文档 3.1.1.创建超级管理员用户 默认情况下连接mongodb是不需要用户名和密码的,这样不安全 ...

  10. CSS布局之盒子模型[一]

    每个HTML标签都会生成一个盒模型,盒模型是正常流布局非常重要的概念.盒模型由内边距(padding)+长度(width)+高度(height)+边框(border)+外边距(margin)组成. 1 ...