MySQL 数据类型

在本文中,我们简单介绍了 MySQL 中的数据类型,以及使用这些数据类型的方法。

数据类型定义数据库表中字段的数据形态,比如我们常见的字符串或者数字。MySQL 数据库提供了很多的数据类型。数据库会通过这些数据类型来定义每个字段的存储方式、占用的存储空间、以及如何比较这些类型。

在本文中,我们会对 MySQL 数据中所有的数据类型做一个简单的介绍,并简要说明使用这些数据类型的方法。

MySQL 中的数据类型包括以下几个大类:

  • 字符串类型
  • 数字类型
  • 日期和时间类型
  • 二进制类型
  • 地理位置数据类型
  • JSON 数据类型

MySQL 字符串数据类型

字符串是最常用的数据类型,它可以用来存储一段文本。比如我们存储名称、地址等,都需要用到字符串数据类型。在 MySQL 中,可以使用纯文本或者二进制方式来存储字符串。MySQL 提供了很多数据类型来存储字符串,最常用的是 VARCHARCHAR

下表显示了 MySQL 中所有的字符串数据类型:

字符串类型 描述
VARCHAR 纯文本字符串,字符串长度是可变的。
CHAR 纯文本字符串,字符串长度是固定的。当实际字段内容小于定义的长度时,MySQL 会用空白空白符好补足。
VARBINARY 二进制字符串,字符串长度是可变的。
BINARY 二进制字符串,字符串长度是固定的。
TINYTEXT 二进制字符串,最大为 255 个字节。
TEXT 二进制字符串,最大为 65K。
MEDIUMTEXT 二进制字符串,最大为 16M。
LONGTEXT 二进制字符串,最大为 4G。
ENUM 枚举;每个列值可以分配一个 ENUM 成员
SET 集合;每个列值可以分配零个或多个 SET 成员

MySQL 数字数据类型

数字又是一个常用的数据类型。如果我们要存储年龄、金额等,需要用到数字数据类型。MySQL 支持 SQL 标准中所有的数字类型,包括整数和小数。

下表显示了 MySQL 中数字相关的数据类型:

数字类型 描述
TINYINT 一个非常小的整数,最大为 1 个字节。
SMALLINT 一个小整数,最大为 2 个字节。
MEDIUMINT 一个中等大小的整数,最大为 3 个字节。
INT 标准整数,最大为 4 个字节。
BIGINT 一个大整数,最大为 8 个字节。
DECIMAL 一个定点数。
FLOAT 单精度浮点数,最大为 4 个字节。
DOUBLE 双精度浮点数,最大为 8 个字节。
BIT 按位存储。

MySQL 日期和时间数据类型

MySQL 提供了丰富的日期和时间类型,这包括日期(DATE)时间(TIME)日期和时间(DATETIME)时间戳(TIMESTAMP)、年份(YEAR)。其中时间戳(TIMESTAMP)数据类型,可以用于跟踪表中一行的变化。

下表说明了 MySQL 日期和时间数据类型:

日期和时间类型 描述
DATE CCYY-MM-DD 格式的日期值
TIME hh:mm:ss 格式的时间值
DATETIME CCYY-MM-DD hh:mm:ss 格式的日期和时间值
TIMESTAMP CCYY-MM-DD hh:mm:ss 格式的时间戳值
YEAR CCYYYY 格式的年份值

MySQL 二进制数据类型

除了字符串、数字、日期等类型, MySQL 还支持存储二进制的数据,比如图片文件等。如果要存储文件,就要用到 BLOB 类型。 BLOB 是 binary large object 的缩写,意思是二进制大对象。

根据不同的存储需求,MySQL 支持以下几种不同大小的 BLOB 类型:

二进制类型 描述
TINYBLOB 最大为 255 个字节。
BLOB 最大为 65K。
MEDIUMBLOB 最大为 16M。
LONGBLOB 最大为 4G。

MySQL 空间数据类型

MySQL 支持许多包含各种几何和地理值的空间数据类型,如下表所示:

空间数据类型 描述
GEOMETRY 任何类型的空间值
POINT 使用横坐标和纵坐标表示的一个点
LINESTRING 一条曲线(一个或多个 POINT 值)
POLYGON 一个多边形
GEOMETRYCOLLECTION GEOMETRY 值的集合
MULTILINESTRING LINESTRING 值的集合
MULTIPOINT POINT 值的集合
MULTIPOLYGON POLYGON 值的集合

JSON 数据类型

MySQL 从 5.7.8 版本开始支持 JSON 数据类型,允许您更有效地存储和管理 JSON 文档。与 JSON 格式的字符串相比,原生 JSON 数据类型提供有如下的优点:

  • 自动验证。MySQL 会对存储在 JSON 列中的 JSON 文档进行自动验证,无效的文档会产生错误。
  • 最佳存储格式。MySQL 会将存储在 JSON 列中的 JSON 文档转换为允许快速读取文档元素的内部格式。

MySQL 布尔数据类型

MySQL 没有内置布尔数据类型。但是,MySQL 支持 BOOLEANBOOL 关键字,MySQL 会将 BOOLEANBOOL 类型转换为 TINYINT(1)。当我们插入 TRUE 或者 FALSE 时,MySQL 会存储为 1 或者 0

结论

在本文中,我们概览了 MySQL 中内置的各种数据类型。当您在创建表时,您可以根据自己的需求为列选择合适的数据类型。

  1. MySQL VARCHAR

    在本文中,我们将带您了解 MySQL 中的 VARCHAR 数据类型。
  2. MySQL CHAR

    在本文中,我们将带您了解 MySQL 中的 CHAR 数据类型。
  3. MySQL INT

    在本文中,我们将带您了解 MySQL 中的整数类型,这包括 INT, SMALLINT, TINYINT, MEDIUMINTBIGINT
  4. MySQL DECIMAL

    在本文中,我们将带您了解 MySQL 中的定点数数据类型 DECIMAL。
  5. MySQL BIT

    在本文中,我们将带您了解 MySQL 中的 BIT 数据类型以及如何使用 BIT 数据类型存储状态值。
  6. MySQL DATE

    在本文中,我们将向您介绍 MySQL DATE 数据类型,并向您展示一些有用的日期函数来有效地处理日期数据。
  7. MySQL DATETIME

    在本教程中,您将了解 MySQL DATETIME 数据类型以及如何使用一些方便的函数进行 DATETIME 有效操作。
  8. MySQL YEAR

    在本教程中,我们将向您介绍 MySQL YEAR 数据类型,以及 YEAR 数据类型的使用规则。
  9. MySQL ENUM

    在本教程中,我们将学习如何使用 MySQL ENUM 数据类型来定义存储枚举值的列。