MySQL 数据类型

数据类型指定特定类型的数据,如整数、浮点数、布尔值等。它还标识该类型的可能值、可以对该类型执行的操作以及该类型值的存储方式。在 MySQL 中,每个数据库表都有很多列,并且每列都包含特定的数据类型。

我们可以通过以下特征来判断 MySQL 中的数据类型:

  • 它表示的值的类型(固定或可变)。
  • 它占用的存储空间取决于值是固定长度还是可变长度。
  • 它的值可以被索引或不被索引。
  • MySQL 如何比较特定数据类型的值。

MySQL 支持各种类别的大量SQL标准数据类型。它使用许多不同的数据类型,可分为以下几类:数字、日期和时间、字符串类型、空间类型和JSON数据类型。

数值数据类型

MySQL 具有所有基本的 SQL 数字数据类型。这些数据类型可以包括精确的数字数据类型(例如,整数、小数、数字等),以及近似的数字数据类型(例如,浮点、实数和双精度)。它还支持 BIT 数据类型来存储位值。在 MySQL 中,数字数据类型分为两种类型,有符号或无符号,位数据类型除外。

下表包含MySQL中支持的所有数字数据类型:

数据类型语法描述
TINYINT它是一个非常小的整数,可以有符号或无符号。如果有符号,则允许的范围是 -128 到 127。如果没有符号,则允许的范围是 0 到 255。我们可以指定最多 4 位的宽度。它需要 1 个字节来存储。
SMALLINT它是一个可以有符号或无符号的小整数。如果有符号,则允许的范围是 -32768 到 32767。如果没有符号,则允许的范围是 0 到 65535。我们可以指定最多 5 位的宽度。它需要 2 个字节来存储。
MEDIUMINT它是一个中等大小的整数,可以有符号或无符号。如果有符号,则允许的范围是 -8388608 到 8388607。如果没有符号,则允许的范围是 0 到 16777215。我们可以指定最多 9 位的宽度。它需要 3 个字节来存储。
INT它是一个正常大小的整数,可以有符号或无符号。如果有符号,则允许的范围是从 -2147483648 到 2147483647。如果没有符号,则允许的范围是从 0 到 4294967295。我们可以指定最多 11 位的宽度。它需要 4 个字节来存储。
BIGINT它是一个可以有符号或无符号的大整数。如果有符号,则允许的范围是 -9223372036854775808 到 9223372036854775807。如果没有符号,则允许的范围是 0 到 18446744073709551615。我们可以指定最多 20 位的宽度。它需要 8 个字节来存储。
FLOAT(m,d)它是一个不能无符号的浮点数。您可以定义显示长度 (m) 和小数位数 (d)。这不是必需的,默认为 10,2,其中 2 是小数位数,10 是总位数(包括小数)。浮点类型的小数精度可以达到 24 位。它需要 2 个字节来存储。
DOUBLE(m,d)它是一个不能无符号的双精度浮点数。您可以定义显示长度 (m) 和小数位数 (d)。这不是必需的,默认为 16,4,其中 4 是小数位数。小数精度可以达到 53 位以获得双精度。真实是双重的同义词。它需要 8 个字节来存储。
DECIMAL(m,d)无法无符号的未压缩浮点数。在未压缩的小数中,每个小数对应一个字节。需要定义显示长度 (m) 和小数位数 (d)。数字是十进制的同义词。
BIT(m)它用于将位值存储到表列中。这里,M 确定每个值的位数,范围为 1 到 64。
BOOL它仅用于真假条件。它认为数值 1 为真,0 为假。
BOOLEAN它类似于 BOOL。

日期和时间数据类型

此数据类型用于表示时间值,例如日期、时间、日期时间、时间戳和年份。每个时间类型都包含值,包括零。当我们插入无效值时,MySQL无法表示,然后使用零值。

下表说明了 MySQL 中支持的所有日期和时间数据类型:

数据类型语法大小描述
YEAR[(2|4)]年份值为 2 位或 4 位。默认值为 4 位。它需要 1 个字节来存储。
DATE值范围从“1000-01-01”到“9999-12-31”。显示为“yyyy-mm-dd”。它需要 3 个字节来存储。
TIME值范围从“-838:59:59”到“838:59:59”。显示为“HH:MM:SS”。存储需要 3 个字节加上小数秒。
DATETIME值范围从“1000-01-01 00:00:00”到“9999-12-31 23:59:59”。显示为 'yyyy-mm-dd hh:mm:ss'。存储需要 5 个字节加上小数秒。
TIMESTAMP(m)值范围从 '1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' TC。显示为 'YYYY-MM-DD HH:MM:SS'。存储需要 4 个字节加上小数秒。

字符串数据类型

字符串数据类型用于保存纯文本和二进制数据,例如文件、图像等。 MySQL 可以根据 LIKE 运算符、正则表达式等模式匹配对字符串值进行搜索和比较。

下表说明了 MySQL 中支持的所有字符串数据类型:

数据类型语法大小描述
CHAR(size)它的最大大小为 255 个字符。这里的 size 是要存储的字符数。固定长度的字符串。右边的空格填充到相等大小的字符。
VARCHAR(size)它的最大大小为 255 个字符。这里的 size 是要存储的字符数。可变长度字符串。
TINYTEXT(size)它的最大大小为 255 个字符。这里的 size 是要存储的字符数。
TEXT(size)最大大小为 65,535 个字符。这里的 size 是要存储的字符数。
MEDIUMTEXT(size)它的最大大小为 16,777,215 个字符。这里的 size 是要存储的字符数。
LONGTEXT(size)它的最大大小为 4GB 或 4,294,967,295 个字符。这里的 size 是要存储的字符数。
BINARY(size)它的最大大小为 255 个字符。这里的 size 是要存储的二进制字符的数量。固定长度的字符串。右边的空格填充到相等大小的字符。
(在 MySQL 4.1.2 中引入)
VARBINARY(size)它的最大大小为 255 个字符。这里的 size 是要存储的字符数。可变长度字符串。
(在 MySQL 4.1.2 中引入)
ENUM它需要 1 或 2 个字节,具体取决于枚举值的数量。一个 ENUM 最多可以有 65,535 个值。它是枚举的缩写,这意味着每一列可能具有指定的可能值之一。它使用数字索引(1、2、3…)来表示字符串值。
SET它需要 1、2、3、4 或 8 个字节,具体取决于集合成员的数量。它最多可以存储 64 个成员。它可以保存零个或多个,或任意数量的字符串值。它们必须从表创建期间指定的预定义值列表中选择。

二进制大对象数据类型(BLOB)

MySQL 中的 BLOB 是一种可以容纳可变数据量的数据类型。根据可以容纳的值的最大长度,它们分为四种不同的类型。

下表显示了 MySQL 中支持的所有二进制大对象数据类型:

数据类型语法最大尺寸
TINYBLOB它可以容纳的最大大小为 255 字节。
BLOB(size)它可以容纳的最大大小为 65,535 字节。
MEDIUMBLOB它可以容纳的最大大小为 16,777,215 字节。
LONGBLOB它可以容纳的最大大小为 4gb 或 4,294,967,295 字节。

空间数据类型

空间数据类型是一种特殊的数据类型,用于保存各种几何和地理值。它对应于 OpenGIS 类。下表显示了 MySQL 中支持的所有空间类型: 

数据类型描述
GEOMETRY它是一个点或点的集合,可以保存具有位置的任何类型的空间值。
POINT几何中的一个点代表一个位置。它存储 X、Y 坐标的值。
POLYGON它是一个表示多边几何图形的平面。它可以由零个或多个内部边界和只有一个外部边界来定义。
LINESTRING它是具有一个或多个点值的曲线。如果它只包含两个点,它总是代表 Line。
GEOMETRYCOLLECTION它是一种具有零个或多个几何值集合的几何。
MULTILINESTRING它是具有线串值集合的多曲线几何体。
MULTIPOINT它是多个点元素的集合。在这里,点不能以任何方式连接或排序。
MULTIPLYGON它是一个多表面对象,表示多个多边形元素的集合。它是一种二维几何。

JSON数据类型

MySQL 从 v5.7.8 版本开始支持原生 JSON 数据类型。这种数据类型允许我们快速有效地存储和访问 JSON 文档。与将 JSON 格式的字符串存储在字符串列中相比,JSON 数据类型具有以下优点:

  1. 它提供 JSON 文档的自动验证。如果我们将无效文档存储在 JSON 列中,则会产生错误。
  2. 它提供了一种最佳的存储格式。
腾讯云推出云产品限时特惠抢购活动:2C2G云服务器7.9元/月起
本文链接:https://www.jhelp.net/p/FtBsUsldNr1Q3keB (转载请保留)。
关注下面的标签,发现更多相似文章