MySQL数据类型

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

我们可以确定MySQL中具有以下特征的数据类型:

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

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

数值数据类型

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

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

数据类型语法描述
天音这是一个非常小的整数,可以带符号或无符号。如果有符号,则允许范围是-128到127。如果没有符号,则允许范围是0到255。我们可以指定最多4位数字的宽度。存储需要1个字节。
SMALLINT这是一个可以签名或不签名的小整数。如果有符号,则允许范围是-32768到32767。如果没有符号,则允许范围是0到65535。我们可以指定最多5位数字的宽度。它需要2个字节来存储。
中号它是一个中等大小的整数,可以带符号或无符号。如果是带符号的,则允许的范围是-8388608到8388607。如果没有带符号的,则允许的范围是0到16777215。我们可以指定最多9位数字的宽度。它需要3个字节来存储。
INT它是一个普通大小的整数,可以带符号或无符号。如果是带符号的,则允许的范围是-2147483648到2147483647。如果没有带符号的,则允许的范围是0到4294967295。我们可以指定11位数字的宽度。它需要4个字节的存储空间。
比金特它是一个大整数,可以带符号或无符号。如果签名,则允许范围是-9223372036854775808至9223372036854775807。如果未签名,则允许范围是0至18446744073709551615。我们可以指定最多20个数字的宽度。它需要8个字节的存储空间。
浮力(m,d)这是一个不能取消签名的浮点数。您可以定义显示长度(m)和小数位数(d)。这不是必需的,它将默认为10,2,其中2是小数位数,而10是数字总数(包括小数位数)。对于浮点型,小数精度可以达到24位。它需要2个字节来存储。
双(m,d)这是一个不能取消签名的双精度浮点数。您可以定义显示长度(m)和小数位数(d)。这不是必需的,并且默认为16,4,其中4是小数位数。小数精度可以达到53位的两倍。实数是double的同义词。它需要8个字节的存储空间。
十进制(m,d)无法解签名的解压缩浮点数。在未压缩的十进制中,每个十进制对应一个字节。需要定义显示长度(m)和小数位数(d)。数字是十进制的同义词。
BIT(米)它用于将位值存储到表列中。在此,M确定每个值的位数,范围为1到64。
布尔它仅用于真假条件。它认为数值1为true,0为false。
布兰它类似于BOOL。

日期和时间数据类型:

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

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

数据类型语法最大尺寸说明
年[(2 | 4)]年份值是2位数或4位数。默认值为4位数字。存储需要1个字节。
日期值的范围从“ 1000-01-01”到“ 9999-12-31”。显示为“ yyyy-mm-dd”。存储需要3个字节。
时间值的范围是’-838:59:59’到’838:59:59’。显示为“ HH:MM:SS”。它需要3个字节加上小数秒的时间来存储。
约会时间值的范围从“ 1000-01-01 00:00:00”到“ 9999-12-31 23:59:59”。显示为“ yyyy-mm-dd hh:mm:ss”。存储需要5个字节加上小数秒。
时间戳(米)值的范围是从1970年1月1日00:00:01(UTC)到2038年1月19日03:14:07(TC)。显示为“ YYYY-MM-DD HH:MM:SS”。它需要4个字节加上小数秒的存储时间。

字符串数据类型:

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

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

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

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

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

下表显示了MySQL支持的所有Binary Large Object数据类型:

数据类型语法最大尺寸
天龙八部最多可容纳255个字节。
BLOB(大小)最多可容纳65,535个字节。
中号它最多可容纳16,777,215字节。
龙宝它最多可容纳4GB或4,294,967,295字节。

空间数据类型

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

资料类型说明
几何它是一个点或点的集合,可以容纳具有位置的任何类型的空间值。
几何中的一个点代表一个位置。它存储X,Y坐标的值。
多边形它是一个代表多面几何形状的平面。它可以由零个或多个内部边界和仅一个外部边界定义。
划线它是具有一个或多个点值的曲线。如果仅包含两个点,则始终代表线。
几何采集它是一种具有零个或多个几何值的集合的几何。
多行它是一个多曲线几何图形,具有线串值的集合。
多点它是多个点元素的集合。这里,该点不能以任何方式连接或订购。
倍增龙它是一个多表面对象,代表多个多边形元素的集合。它是一种二维几何。

JSON数据类型

MySQL从v5.7.8版本开始支持本机JSON数据类型。这种数据类型使我们能够快速有效地存储和访问JSON文档。

与将JSON格式的字符串存储在字符串列中相比,JSON数据类型具有以下优点:

  1. 它提供JSON文档的自动验证。如果我们将无效文档存储在JSON列中,则会产生错误。
  2. 它提供了一种最佳的存储格式。