MySQL 支持多种数据类型,可以分为以下几类:数值类型、日期和时间类型、字符串类型以及 JSON 类型等。下面详细介绍每种数据类型,并结合代码说明。
TINYINT
: 一个非常小的整数。存储范围为 -128 到 127,或者 0 到 255(无符号)。SMALLINT
: 一个小整数。存储范围为 -32768 到 32767,或者 0 到 65535(无符号)。MEDIUMINT
: 一个中等大小的整数。存储范围为 -8388608 到 8388607,或者 0 到 16777215(无符号)。INT
或者 INTEGER
: 一个标准整数。存储范围为 -2147483648 到 2147483647,或者 0 到 4294967295(无符号)。BIGINT
: 一个大的整数。存储范围为 -9223372036854775808 到 9223372036854775807,或者 0 到 18446744073709551615(无符号)。FLOAT
: 单精度浮点数。DOUBLE
: 双精度浮点数。DECIMAL
或者 NUMERIC
: 用于存储精确的小数。CREATE TABLE numeric_types_example (
tiny_col TINYINT,
small_col SMALLINT,
medium_col MEDIUMINT,
int_col INT,
big_col BIGINT,
float_col FLOAT(7, 4),
double_col DOUBLE(15, 8),
decimal_col DECIMAL(10, 2)
);
DATE
: 日期,格式为 ‘YYYY-MM-DD’。范围从 ‘1000-01-01’ 到 ‘9999-12-31’。TIME
: 时间,格式为 ‘HH:MM:SS’。范围从 ‘-838:59:59’ 到 ‘838:59:59’。DATETIME
: 日期和时间,格式为 ‘YYYY-MM-DD HH:MM:SS’。范围从 ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’。TIMESTAMP
: 时间戳,格式为 ‘YYYY-MM-DD HH:MM:SS’。范围从 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-19 03:14:07’ UTC。YEAR
: 年份,格式为 YYYY。范围从 ‘1901’ 到 ‘2155’。CREATE TABLE datetime_types_example (
date_col DATE,
time_col TIME,
datetime_col DATETIME,
timestamp_col TIMESTAMP,
year_col YEAR
);
CHAR
: 固定长度字符串。长度从 0 到 255 字节。VARCHAR
: 可变长度字符串。长度从 0 到 65535 字节。TINYBLOB
和 TINYTEXT
: 特别小的BLOB(Binary Large Object)和文本数据。最大长度 255 字节。BLOB
和 TEXT
: BLOB和文本数据。最大长度 65535 字节。MEDIUMBLOB
和 MEDIUMTEXT
: 中等大小的BLOB和文本数据。最大长度 16777215 字节。LONGBLOB
和 LONGTEXT
: 特别大的BLOB和文本数据。最大长度 4294967295 字节。ENUM
: 枚举类型。字符串对象可从特定的集合中选择一个值。SET
: 一个字符串对象,可以有零个或多个值,每个值必须来自特定的集合。CREATE TABLE string_types_example (
char_col CHAR(10),
varchar_col VARCHAR(255),
tinytext_col TINYTEXT,
text_col TEXT,
mediumtext_col MEDIUMTEXT,
longtext_col LONGTEXT,
tinyblob_col TINYBLOB,
blob_col BLOB,
mediumblob_col MEDIUMBLOB,
longblob_col LONGBLOB,
enum_col ENUM('value1', 'value2', 'value3'),
set_col SET('valueA', 'valueB', 'valueC')
);
JSON
: 用于存储 JSON (JavaScript Object Notation) 文档。CREATE TABLE json_types_example (
json_col JSON
);
BIT
: 位字段类型。可用于存储位字段值。CREATE TABLE bit_types_example (
bit_col BIT(8)
);
MySQL 还支持用于存储空间数据的类型:
GEOMETRY
: 一种空间数据类型,可以存储任何类型的几何数据。POINT
: 表示地理空间数据的 x 和 y 坐标。LINESTRING
: 表示线的一系列点。POLYGON
: 表示多边形的集合。CREATE TABLE spatial_types_example (
geometry_col GEOMETRY,
point_col POINT,
linestring_col LINESTRING,
polygon_col POLYGON
);
以下是一个包含上述所有数据类型的综合示例,展示了如何创建一个包含多种数据类型的表:
-- 创建数据库
CREATE DATABASE company;
-- 选择数据库
USE company;
-- 创建一个包含各种数据类型的表
CREATE TABLE comprehensive_example (
-- 数值类型
tiny_col TINYINT,
small_col SMALLINT,
medium_col MEDIUMINT,
int_col INT,
big_col BIGINT,
float_col FLOAT(7, 4),
double_col DOUBLE(15, 8),
decimal_col DECIMAL(10, 2),
-- 日期和时间类型
date_col DATE,
time_col TIME,
datetime_col DATETIME,
timestamp_col TIMESTAMP,
year_col YEAR,
-- 字符串类型
char_col CHAR(10),
varchar_col VARCHAR(255),
tinytext_col TINYTEXT,
text_col TEXT,
mediumtext_col MEDIUMTEXT,
longtext_col LONGTEXT,
tinyblob_col TINYBLOB,
blob_col BLOB,
mediumblob_col MEDIUMBLOB,
longblob_col LONGBLOB,
enum_col ENUM('value1', 'value2', 'value3'),
set_col SET('valueA', 'valueB', 'valueC'),
-- JSON类型
json_col JSON,
-- 位类型
bit_col BIT(8),
-- 空间数据类型
geometry_col GEOMETRY,
point_col POINT,
linestring_col LINESTRING,
polygon_col POLYGON
);
MySQL 提供了丰富的数据类型来满足不同的数据存储需求,包括数值类型、日期和时间类型、字符串类型、JSON 类型、位类型和空间数据类型。上述示例展示了如何使用这些数据类型来创建包含各种类型数据的表,以满足复杂的业务需求。