MySQL 是一款流行的开源数据库管理系统,在 Web 开发、大数据处理等领域被广泛应用。作为关系型数据库,MySQL 支持多种数据类型,包括整数类型、浮点数类型、日期与时间类型、字符串类型、枚举和集合类型、布尔类型、位类型、极限值类型、JSON 类型和空间数据类型等。本文将全面详细地介绍 MySQL 数据库中常用的数据类型。
1. 整数类型
整数类型包括以下几种:
1.1 TINYINT 类型
TINYINT 类型是 MySQL 中最小的整数类型,占用 1 个字节(8 位),可存储范围为 -128 到 127,无符号类型可存储范围为 0 到 255。TINYINT 类型通常用于存储布尔值或者枚举值。
1.2 SMALLINT 类型
SMALLINT 类型占用 2 个字节(16 位),可存储范围为 -32768 到 32767,无符号类型可存储范围为 0 到 65535。SMALLINT 类型通常用于存储较小的整数值。
1.3 MEDIUMINT 类型
MEDIUMINT 类型占用 3 个字节(24 位),可存储范围为 -8388608 到 8388607,无符号类型可存储范围为 0 到 16777215。MEDIUMINT 类型通常用于存储中等大小的整数值。
1.4 INT 类型
INT 类型占用 4 个字节(32 位),可存储范围为 -2147483648 到 2147483647,无符号类型可存储范围为 0 到 4294967295。INT 类型通常用于存储较大的整数值。
1.5 BIGINT 类型
BIGINT 类型占用 8 个字节(64 位),可存储范围为 -9223372036854775808 到 9223372036854775807,无符号类型可存储范围为 0 到 18446744073709551615。BIGINT 类型通常用于存储极大的整数值。
2. 浮点数类型
浮点数类型包括以下几种:
2.1 FLOAT 类型
FLOAT 类型占用 4 个字节,可存储单精度浮点数,保留 7 位有效数字。FLOAT 类型通常用于存储较小的浮点数值。
2.2 DOUBLE 类型
DOUBLE 类型占用 8 个字节,可存储双精度浮点数,保留 15 位有效数字。DOUBLE 类型通常用于存储较大的浮点数值。
2.3 DECIMAL 类型
DECIMAL 类型用于存储精确的小数值,支持可变长度的数值范围和精度。DECIMAL 类型一般用于存储财务数据、统计数据等需要精确计算的数据。
3. 日期与时间类型
日期与时间类型包括以下几种:
3.1 DATE 类型
DATE 类型用于存储日期值,占用 3 个字节。DATE 类型的取值范围是 ‘1000-01-01’ 到 ‘9999-12-31’。
3.2 TIME 类型
TIME 类型用于存储时间值,占用 3 个字节。TIME 类型的取值范围是 ‘-838:59:59’ 到 ‘838:59:59’。
3.3 DATETIME 类型
DATETIME 类型用于存储日期和时间值,占用 8 个字节。DATETIME 类型的取值范围是 ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’。
3.4 TIMESTAMP 类型
TIMESTAMP 类型用于存储日期和时间值,占用 4 个字节。TIMESTAMP 类型的取值范围是 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-19 03:14:07’ UTC(32 位系统),或 ‘1970-01-01 00:00:01’ UTC 到 ‘9999-12-31 23:59:59’ UTC(64 位系统)。
4. 字符串类型
字符串类型包括以下几种:
4.1 CHAR 类型
CHAR 类型用于存储固定长度的字符串,长度可指定为 0 到 255 之间。对于 CHAR 类型的列,如果存储的字符串长度不足指定长度,MySQL 将在右侧填充空格。
4.2 VARCHAR 类型
VARCHAR 类型用于存储可变长度的字符串,长度可指定为 0 到 65535 之间。VARCHAR 类型只存储实际使用的字符,因此比 CHAR 类型更节省空间。
4.3 BLOB 类型
BLOB 类型用于存储二进制数据,包括图像、音频、视频等。BLOB 类型可以存储最多 65535 个字节的数据。
4.4 TEXT 类型
TEXT 类型用于存储较大的文本数据,可以存储最多 65535 个字节的数据。TEXT 类型有四个子类型:TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT,分别用于存储不同大小的文本数据。
5. 枚举和集合类型
枚举和集合类型用于存储限定的值列表,常用于存储分类、状态等信息。
5.1 ENUM 类型
ENUM 类型用于存储一个固定的值列表,最多支持 65535 个不同的值。ENUM 类型中的每个值都有一个整数关联,范围从 1 到 N(N 表示 ENUM 类型中的值数量)。
5.2 SET 类型
SET 类型用于存储多个值的集合,最多支持 64 个不同的值。SET 类型中的每个值也都有一个整数关联,范围从 1 到 2^N-1(N 表示 SET 类型中的值数量)。
6. 布尔类型
布尔类型 BOOL 或 BOOLEAN 是 MySQL 中的别名,实际上是 TINYINT(1) 的同义词。这种类型只占用 1 个字节,可以存储 0 或 1 表示真或假。
7. 位类型
位类型 BIT 用于存储位字段值,可以存储从 1 到 64 个位。BIT(M) 类型占用 CEILING(M/8) 个字节,其中 CEILING 表示取整函数,M 表示位数。
8. 极限值类型
MySQL 还提供了一些极限值类型,分别为 TINYINT UNSIGNED、SMALLINT UNSIGNED、MEDIUMINT UNSIGNED、INT UNSIGNED、BIGINT UNSIGNED 和 FLOAT UNSIGNED。这些类型只存储非负整数和浮点数值,无符号类型可存储范围是 0 到 2^n-1(n 表示所占用的字节数)。
9. JSON 类型
JSON 类型用于存储 JSON 格式的文本数据,可以存储最多 4GB 的数据。
10. 空间数据类型
空间数据类型用于存储空间数据,包括点、线、面和复杂的地理空间对象。空间数据类型有四种:GEOMETRY、POINT、LINESTRING 和 POLYGON。
以上就是 MySQL 数据库中的所有主要的数据类型,包括整数类型、浮点数类型、日期与时间类型、字符串类型、枚举和集合类型、布尔类型、位类型、极限值类型、JSON 类型和空间数据类型。使用不同的数据类型可以更好地存储不同类型的数据,并使数据库设计更加合理和高效。