目录
- 一、数值数据类型
-
- 二、日期和时间数据类型
-
- 三、字符串数据类型
-
- 四、枚举和集合数据类型
-
- 五、总结
在 MySQL 中,数据类型用于定义表中列的性质。选择合适的数据类型可以提高数据库的性能和存储效率。本文将详细介绍 MySQL 支持的所有数据类型,包括数值、日期和时间、字符串等类型,并提供表格以便于阅读。
下面是 MySQL 所有数据类型的详细分类,包括每个数据类型的用法和限制。
一、数值数据类型
数值数据类型分为整数类型、浮点数类型和定点数类型。
1. 整数类型
数据类型 | 描述 | 存储大小 | 范围(有符号) | 范围(无符号) | 用法示例 |
---|
TINYINT | 极小的整数 | 1 byte | -128 到 127 | 0 到 255 | age TINYINT |
SMALLINT | 小整数 | 2 bytes | -32,768 到 32,767 | 0 到 65,535 | height SMALLINT |
MEDIUMINT | 中等大小的整数 | 3 bytes | -8,388,608 到 8,388,607 | 0 到 16,777,215 | score MEDIUMINT |
INT / INTEGER | 大整数 | 4 bytes | -2,147,483,648 到 2,147,483,647 | 0 到 4,294,967,295 | user_id INT |
BIGINT | 超大整数 | 8 bytes | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | 0 到 18,446,744,073,709,551,615 | big_number BIGINT |
BIT | 位类型,存储二进制位 | 1-8 bytes | 0 或 1 | - | is_active BIT |
2. 浮点数类型
数据类型 | 描述 | 存储大小 | 精度 | 范围 | 用法示例 |
---|
FLOAT | 单精度浮点数 | 4 bytes | 精度为 7 位数字 | -3.402823466E+38 到 3.402823466E+38 | temperature FLOAT |
DOUBLE | 双精度浮点数 | 8 bytes | 精度为 15 位数字 | -1.7976931348623157E+308 到 1.7976931348623157E+308 | price DOUBLE |
DECIMAL (M, D) | 定点数,精确数值 | 可变 | M 为总位数,D 为小数位数 | 不适用(依赖于 M 和 D 的值) | amount DECIMAL(10, 2) |
3. 示例
CREATE TABLE numbers (id INT AUTO_INCREMENT PRIMARY KEY,tiny_value TINYINT,small_value SMALLINT,medium_value MEDIUMINT,int_value INT,big_value BIGINT,float_value FLOAT,double_value DOUBLE,decimal_value DECIMAL(10, 2)
);
二、日期和时间数据类型
数据类型 | 描述 | 存储大小 | 范围 | 用法示例 |
---|
DATE | 日期,格式为 ‘YYYY-MM-DD’ | 3 bytes | ‘1000-01-01’ 到 ‘9999-12-31’ | birth_date DATE |
TIME | 时间,格式为 ‘HH:MM:SS’ | 3 bytes | ‘-838:59:59’ 到 ‘838:59:59’ | event_time TIME |
DATETIME | 日期和时间,格式为 ‘YYYY-MM-DD HH:MM:SS’ | 8 bytes | ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’ | created_at DATETIME |
TIMESTAMP | 时间戳,自动更新,格式为 ‘YYYY-MM-DD HH:MM:SS’ | 4 bytes | ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-19 03:14:07’ UTC | updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP |
YEAR | 年,格式为 ‘YYYY’ | 1 byte | 1901 到 2155 | year_of_birth YEAR |
示例
CREATE TABLE events (event_id INT AUTO_INCREMENT PRIMARY KEY,event_date DATE,event_time TIME,event_datetime DATETIME,event_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,event_year YEAR
);
三、字符串数据类型
1. 字符串类型
数据类型 | 描述 | 存储大小 | 用法示例 |
---|
CHAR(M) | 固定长度字符串,最多 255 字符 | M + 1 (如果 M > 0) | code CHAR(10) |
VARCHAR(M) | 可变长度字符串,最多 65,535 字符 | L + 1 或 L + 2 (L 为字符串实际长度) | name VARCHAR(100) |
TEXT | 长文本字符串,最多 65,535 字符 | L + 2 (L 为字符串实际长度) | description TEXT |
TINYTEXT | 微小文本字符串,最多 255 字符 | L + 1 (L 为字符串实际长度) | short_description TINYTEXT |
MEDIUMTEXT | 中等大小文本字符串,最多 16,777,215 字符 | L + 3 (L 为字符串实际长度) | content MEDIUMTEXT |
LONGTEXT | 大文本字符串,最多 4,294,967,295 字符 | L + 4 (L 为字符串实际长度) | full_text LONGTEXT |
BINARY(M) | 固定长度二进制数据 | M + 1 (如果 M > 0) | binary_data BINARY(16) |
VARBINARY(M) | 可变长度二进制数据 | L + 1 或 L + 2 (L 为字符串实际长度) | image VARBINARY(65535) |
BLOB | 二进制大对象 | L + 2 (L 为字符串实际长度) | file BLOB |
TINYBLOB | 小型 BLOB | L + 1 (L 为字符串实际长度) | thumbnail TINYBLOB |
MEDIUMBLOB | 中型 BLOB | L + 3 (L 为字符串实际长度) | medium_file MEDIUMBLOB |
LONGBLOB | 大型 BLOB | L + 4 (L 为字符串实际长度) | large_file LONGBLOB |
2. 示例
CREATE TABLE documents (doc_id INT AUTO_INCREMENT PRIMARY KEY,title VARCHAR(255),content TEXT,binary_data BLOB
);
四、枚举和集合数据类型
1. 枚举类型
数据类型 | 描述 | 存储大小 | 用法示例 |
---|
ENUM | 枚举类型,允许指定一组字符串值 | 1 或 2 bytes | status ENUM('active', 'inactive', 'pending') |
2. 集合类型
数据类型 | 描述 | 存储大小 | 用法示例 |
---|
SET | 集合类型,允许存储多个字符串值 | 1, 2, 3, 4 或 8 bytes | tags SET('tag1', 'tag2', 'tag3') |
3. 示例
CREATE TABLE settings (id INT AUTO_INCREMENT PRIMARY KEY,status ENUM('active', 'inactive', 'pending'),tags SET('tag1', 'tag2', 'tag3')
);
五、总结
选择适当的数据类型对于 MySQL 数据库的性能、存储和数据完整性至关重要。理解每种数据类型的特性和适用场景,可以帮助开发者设计出更高效的数据库结构。希望这篇文章能帮助你更好地理解 MySQL 数据类型。