MySQL 是一种流行的开源关系型数据库管理系统,它支持多种数据类型,以满足不同场景下的数据存储需求。了解这些数据类型对于设计数据库结构至关重要。本文将介绍 MySQL 的基本数据类型,并提供相应的代码示例。
一、数值数据类型
数值数据类型用于存储数字,包括整数和浮点数。MySQL 中的常用数值数据类型有:
- 整数类型:
- TINYINT:1字节,范围 -128 到 127(有符号)或 0 到 255(无符号)。
- SMALLINT:2字节,范围 -32,768 到 32,767(有符号)或 0 到 65,535(无符号)。
- MEDIUMINT:3字节,范围 -8,388,608 到 8,388,607(有符号)或 0 到 16,777,215(无符号)。
- INT:4字节,范围 -2,147,483,648 到 2,147,483,647(有符号)或 0 到 4,294,967,295(无符号)。
-
BIGINT:8字节,范围 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807(有符号)或 0 到 18,446,744,073,709,551,615(无符号)。
-
浮点数类型:
- FLOAT:单精度浮点数,4字节。
- DOUBLE:双精度浮点数,8字节。
- DECIMAL(M, D):精确小数,其中 M 是数字的总位数,D 是小数部分的位数。
示例:
CREATE TABLE example_numbers (
id INT AUTO_INCREMENT PRIMARY KEY,
age TINYINT UNSIGNED,
salary DECIMAL(10, 2)
);
二、字符串数据类型
字符串数据类型用于存储文本数据,MySQL 提供了多种类型以支持不同长度的字符串。
- CHAR(M):定长字符串,最大长度为 255 个字符。
- VARCHAR(M):变长字符串,最大长度为 65,535 个字符。
- TINYTEXT:最大长度为 255 个字符的文本。
- TEXT:最大长度为 65,535 个字符的文本。
- MEDIUMTEXT:最大长度为 16,777,215 个字符的文本。
- LONGTEXT:最大长度为 4,294,967,295 个字符的文本。
- BINARY(M) 与 VARBINARY(M):分别对应 CHAR 和 VARCHAR,但用于存储二进制数据。
示例:
CREATE TABLE example_strings (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
description TEXT
);
三、日期与时间数据类型
日期和时间数据类型用于存储日期和时间信息。常用类型包括:
- 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:时间戳,范围从 '1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC。
- YEAR(M):年份,支持 2 位或 4 位格式,范围从 1901 到 2155 或 00 到 99。
示例:
CREATE TABLE example_dates (
id INT AUTO_INCREMENT PRIMARY KEY,
event_date DATE,
event_time TIME,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
四、其他数据类型
除了上述数据类型,MySQL 还支持其他类型,如:
- ENUM:枚举类型,可以选择一个预定义的值。
- SET:集合类型,可以选择零个或多个预定义的值。
示例:
CREATE TABLE example_enum_set (
id INT AUTO_INCREMENT PRIMARY KEY,
status ENUM('active', 'inactive', 'pending'),
tags SET('tag1', 'tag2', 'tag3')
);
总结
MySQL 提供了多种数据类型,适用于不同的数据存储需求。选择合适的数据类型可以有效地提高数据库的性能和可维护性。在设计数据库时,需要考虑数据的性质和使用场景,从而选用合适的数据类型。希望本文能帮助你更好地理解 MySQL 的数据类型。