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. DML_Data Modification_INSERT

    Data Modification (INSERT.DELETE.UPDATE.MERGE)之INSERT(基础知识,算是20年来第2次学习MSSQL吧,2005年折腾过一段时间的Oracle)INS ...

  2. C Primer Plus(三)

    重读C Primer Plus ,查漏补缺 重读C Primer Plus,记录遗漏的.未掌握的.不清楚的知识点 文件输入/输出 1.fgets函数在读取文件内容时会将换行符读入,但gets不会,fp ...

  3. CocosCreator实现微信排行榜

    1. 概述 不管是在现实生活还是当今游戏中,各式各样的排名层出不穷.如果我们做好一款游戏,却没有实现排行榜,一定是不完美的.排行榜不仅是玩家了解自己实力的途径,也是游戏运营刺激用户留存的一种途径.在微 ...

  4. cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition

    cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition random_shuffle()//重排,随机重排,打乱顺序 partition()分区,把 ...

  5. 关于 JOIN 耐心总结,学不会你打我系列

    现在随着各种数据库框架的盛行,在提高效率的同时也让我们忽略了很多底层的连接过程,这篇文章是对 SQL 连接过程梳理,并涉及到了现在常用的 SQL 标准. 其实标准就是在不同的时间,制定的一些写法或规范 ...

  6. 有趣的条漫版 HashMap,25岁大爷都能看懂

    我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...

  7. skywalking中表字段的信息

    https://skyapm.github.io/document-cn-translation-of-skywalking/zh/6.2.0/concepts-and-designs/scope-d ...

  8. 2、struct2的工作流程

    1.首先执行StrutsPrepareAndExecuteFilter,调用StrutsPrepareAndExecuteFilter类的doFilter方法 在该方法中会产生一个ActionMapp ...

  9. Git的常用命令记录

    Git的常用命令记录 1.与远程仓库建立连接,即关联一个远程库 git remote add origin git@server-name:path/repo-name.git; 2.查看当前分支  ...

  10. 入门大数据---Kafka生产者详解

    一.生产者发送消息的过程 首先介绍一下 Kafka 生产者发送消息的过程: Kafka 会将发送消息包装为 ProducerRecord 对象, ProducerRecord 对象包含了目标主题和要发 ...