MySQL数据类型
数据类型概述
1. 什么是数据类型
graph TD
subgraph 数据类型
num[数值类型]
str[字符串类型]
date[日期时间类型]
json[JSON类型]
end
num ---|整数、浮点数| num_note[数值说明]
str ---|文本、二进制| str_note[字符串说明]
date ---|日期、时间| date_note[日期说明]
json ---|结构化数据| json_note[JSON说明]
数据类型定义了列中可以存储的数据种类,以及如何存储这些数据。
2. 数据类型的重要性
- 影响存储空间
- 影响查询性能
- 影响数据完整性
- 影响应用开发
数值类型
1. 整数类型
类型 |
字节 |
范围 |
说明 |
TINYINT |
1 |
-128~127 |
小整数 |
SMALLINT |
2 |
-32768~32767 |
中等整数 |
INT |
4 |
-2^31~2^31-1 |
常用整数 |
BIGINT |
8 |
-2^63~2^63-1 |
大整数 |
2. 浮点类型
类型 |
字节 |
精度 |
说明 |
FLOAT |
4 |
7位 |
单精度浮点数 |
DOUBLE |
8 |
15位 |
双精度浮点数 |
DECIMAL |
变长 |
精确 |
定点数 |
3. 数值类型示例
-- 创建表使用不同数值类型
CREATE TABLE numbers (
id INT PRIMARY KEY,
age TINYINT UNSIGNED,
price DECIMAL(10,2),
score FLOAT
);
-- 插入数据
INSERT INTO numbers VALUES (1, 25, 99.99, 85.5);
字符串类型
1. 字符类型
类型 |
最大长度 |
说明 |
CHAR |
255 |
固定长度 |
VARCHAR |
65535 |
可变长度 |
TEXT |
65535 |
长文本 |
LONGTEXT |
4GB |
超长文本 |
2. 二进制类型
类型 |
最大长度 |
说明 |
BINARY |
255 |
固定长度 |
VARBINARY |
65535 |
可变长度 |
BLOB |
65535 |
二进制数据 |
LONGBLOB |
4GB |
大二进制数据 |
3. 字符串类型示例
-- 创建表使用不同字符串类型
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50),
email CHAR(100),
bio TEXT,
avatar BLOB
);
-- 插入数据
INSERT INTO users VALUES (1, 'John', 'john@example.com', 'Hello World', NULL);
日期时间类型
1. 日期类型
类型 |
格式 |
范围 |
说明 |
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~2038-01-19 03:14:07 |
时间戳 |
2. 日期时间示例
-- 创建表使用日期时间类型
CREATE TABLE events (
id INT PRIMARY KEY,
event_date DATE,
event_time TIME,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 插入数据
INSERT INTO events (id, event_date, event_time)
VALUES (1, '2023-01-01', '12:00:00');
JSON类型
1. JSON类型特点
- 支持JSON文档存储
- 支持JSON路径查询
- 支持JSON函数操作
- 支持JSON索引
2. JSON类型示例
-- 创建表使用JSON类型
CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(100),
attributes JSON
);
-- 插入JSON数据
INSERT INTO products VALUES (1, 'Laptop', '{"color": "black", "size": "15.6"}');
-- 查询JSON数据
SELECT name, attributes->'$.color' as color
FROM products;
数据类型最佳实践
1. 选择原则
- 选择最小满足需求的数据类型
- 考虑存储空间和性能
- 考虑数据完整性
- 考虑应用需求
2. 性能优化
- 使用合适的整数类型
- 避免过长的VARCHAR
- 合理使用TEXT类型
- 注意日期时间类型的选择
3. 注意事项
- 字符集和排序规则
- 数值精度和范围
- 日期时间格式
- NULL值处理
总结
-
数据类型选择
- 根据业务需求
- 考虑性能影响
- 注意存储空间
- 保证数据完整性
-
使用建议
- 优先使用简单类型
- 避免过度设计
- 注意兼容性
- 定期优化
-
运维管理