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. 用了一年 TIM 移动版之后,我又换回了手机 QQ

    TIM,是一个很玄学的产品. 讲真,我很不喜欢 QQ 电脑版.一个原因是我很讨厌一直占着右上角这一行为:右上角是给关闭按钮实现盲操用的,QQ 这么一个聊天软件没有这么高的地位:二是我不喜欢它的多窗口: ...

  2. 动手造轮子:实现一个简单的 AOP 框架

    动手造轮子:实现一个简单的 AOP 框架 Intro 最近实现了一个 AOP 框架 -- FluentAspects,API 基本稳定了,写篇文章分享一下这个 AOP 框架的设计. 整体设计 概览 I ...

  3. C++ Primer Plus(一)

    完整阅读C++ Primer Plus 系统重新学习C++语言部分,记录重要但易被忽略的,关键但易被遗忘的. 预备 1.C++相对于C增加了最关键的两项,面向对象和范型编程. 处理数据 2.对于变量明 ...

  4. Spring:BeanDefinition&PostProcessor不了解一下吗?

    水稻:这两天看了BeanDefinition和BeanFactoryPostProcessor还有BeanPostProcessor的源码.要不要了解一下 菜瓜:six six six,大佬请讲 水稻 ...

  5. 【JMeter_04】JMeter 插件管理、语言设置

    语言设置 JMeter是外来午中,初始默认语言为英文,如果有朋友更倾向于使用中文或者其他语言,那么可以通过以下两种方法来切换,随着JMeter版本的不断升级,会发现程序的汉化支持已经越来越完善了. 1 ...

  6. 【译】Announcing Entity Framework Core 5.0 Preview 5

    今天我们宣布EF Core 5.0发布第五个预览版. 1 先决条件 EF Core 5.0 的预览版要求  .NET Standard 2.1.这意味着: EF Core 5.0 在 .NET Cor ...

  7. react 使用的方法:

    react  使用方法: 第一步: 初始化react 项目 (1)安装node npm (2)npm install --global create-react-app (3)create-react ...

  8. Java对MongoDB的CRUD

    https://blog.51cto.com/aiilive/1339058 MongoDB提供的Java操作API可以说是对Mongo数据库命令的Java翻译,熟悉Mongo命令,熟悉Java操作数 ...

  9. 【漏洞一】检测到目标URL存在http host头攻击漏洞

    [漏洞] 检测到目标URL存在http host头攻击漏洞 [原因] 在项目中使用了 request.getServerName 导致漏洞的出现 不要使用request中的serverName,也就是 ...

  10. java scoket Blocking 阻塞IO socket通信二

    在上面一节中,服务端收到客户端的连接之后,都是new一个新的线程来处理客户端发送的请求,每次new 一个线程比较耗费系统资源,如果100万个客户端,我们就要创建100万个线程,相当的 耗费系统的资源, ...