MySQL 数据类型
在本文中,我们简单介绍了 MySQL 中的数据类型,以及使用这些数据类型的方法。
数据类型定义数据库表中字段的数据形态,比如我们常见的字符串或者数字。MySQL 数据库提供了很多的数据类型。数据库会通过这些数据类型来定义每个字段的存储方式、占用的存储空间、以及如何比较这些类型。
在本文中,我们会对 MySQL 数据中所有的数据类型做一个简单的介绍,并简要说明使用这些数据类型的方法。
MySQL 中的数据类型包括以下几个大类:
- 字符串类型
- 数字类型
- 日期和时间类型
- 二进制类型
- 地理位置数据类型
- JSON 数据类型
MySQL 字符串数据类型
字符串是最常用的数据类型,它可以用来存储一段文本。比如我们存储名称、地址等,都需要用到字符串数据类型。在 MySQL 中,可以使用纯文本或者二进制方式来存储字符串。MySQL 提供了很多数据类型来存储字符串,最常用的是 VARCHAR
和 CHAR
。
下表显示了 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 |
CCYY 或 YY 格式的年份值 |
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 支持 BOOLEAN
或 BOOL
关键字,MySQL 会将 BOOLEAN
或 BOOL
类型转换为 TINYINT(1)
。当我们插入 TRUE
或者 FALSE
时,MySQL 会存储为 1
或者 0
。
结论
在本文中,我们概览了 MySQL 中内置的各种数据类型。当您在创建表时,您可以根据自己的需求为列选择合适的数据类型。
-
MySQL VARCHAR
在本文中,我们将带您了解 MySQL 中的VARCHAR
数据类型。 -
MySQL CHAR
在本文中,我们将带您了解 MySQL 中的CHAR
数据类型。 -
MySQL INT
在本文中,我们将带您了解 MySQL 中的整数类型,这包括INT
,SMALLINT
,TINYINT
,MEDIUMINT
和BIGINT
。 -
MySQL DECIMAL
在本文中,我们将带您了解 MySQL 中的定点数数据类型 DECIMAL。 -
MySQL BIT
在本文中,我们将带您了解 MySQL 中的BIT
数据类型以及如何使用BIT
数据类型存储状态值。 -
MySQL DATE
在本文中,我们将向您介绍 MySQLDATE
数据类型,并向您展示一些有用的日期函数来有效地处理日期数据。 -
MySQL DATETIME
在本教程中,您将了解 MySQLDATETIME
数据类型以及如何使用一些方便的函数进行DATETIME
有效操作。 -
MySQL YEAR
在本教程中,我们将向您介绍 MySQLYEAR
数据类型,以及YEAR
数据类型的使用规则。 -
MySQL ENUM
在本教程中,我们将学习如何使用 MySQLENUM
数据类型来定义存储枚举值的列。