【MYSQL】MySQL 数据类型

在 MySQL 中,数据类型用于定义表中列的性质。选择合适的数据类型可以提高数据库的性能和存储效率。本文将详细介绍 MySQL 支持的所有数据类型,包括数值、日期和时间、字符串等类型,并提供表格以便于阅读。
下面是 MySQL 所有数据类型的详细分类,包括每个数据类型的用法和限制。

一、数值数据类型

数值数据类型分为整数类型、浮点数类型和定点数类型。

1. 整数类型

数据类型描述存储大小范围(有符号)范围(无符号)用法示例
TINYINT极小的整数1 byte-128 到 1270 到 255age TINYINT
SMALLINT小整数2 bytes-32,768 到 32,7670 到 65,535height SMALLINT
MEDIUMINT中等大小的整数3 bytes-8,388,608 到 8,388,6070 到 16,777,215score MEDIUMINT
INT / INTEGER大整数4 bytes-2,147,483,648 到 2,147,483,6470 到 4,294,967,295user_id INT
BIGINT超大整数8 bytes-9,223,372,036,854,775,808 到 9,223,372,036,854,775,8070 到 18,446,744,073,709,551,615big_number BIGINT
BIT位类型,存储二进制位1-8 bytes0 或 1-is_active BIT

2. 浮点数类型

数据类型描述存储大小精度范围用法示例
FLOAT单精度浮点数4 bytes精度为 7 位数字-3.402823466E+38 到 3.402823466E+38temperature FLOAT
DOUBLE双精度浮点数8 bytes精度为 15 位数字-1.7976931348623157E+308 到 1.7976931348623157E+308price 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’ UTCupdated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
YEAR年,格式为 ‘YYYY’1 byte1901 到 2155year_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小型 BLOBL + 1 (L 为字符串实际长度)thumbnail TINYBLOB
MEDIUMBLOB中型 BLOBL + 3 (L 为字符串实际长度)medium_file MEDIUMBLOB
LONGBLOB大型 BLOBL + 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 bytesstatus ENUM('active', 'inactive', 'pending')

2. 集合类型

数据类型描述存储大小用法示例
SET集合类型,允许存储多个字符串值1, 2, 3, 4 或 8 bytestags 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 数据类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丶2136

谢谢老板。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值