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数据类型来定义存储枚举值的列。