首页 / 欧洲VPS推荐 / 正文
MySQL数据库数据类型详解,MySQL数据库数据类型

Time:2025年01月05日 Read:6 评论:42 作者:y21dr45

一、概述

MySQL数据库数据类型详解,MySQL数据库数据类型

在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(无符号),用于中等大小的整数。

INTINTEGER: 占用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(无符号),用于大整数,例如科学计算中的大数值。

示例:

CREATE TABLE example_integers (
    id TINYINT UNSIGNED,
    small_number SMALLINT,
    medium_number MEDIUMINT,
    regular_number INT,
    big_number BIGINT
);

浮点类型

浮点类型用于存储带小数部分的数值,MySQL支持两种主要的浮点类型:FLOAT和DOUBLE。

FLOAT: 单精度浮点数,占用4个字节,精度约为7位有效数字,适用于对精度要求不高的场合。

DOUBLE: 双精度浮点数,占用8个字节,精度约为15位有效数字,适用于需要高精度的金融计算等场合。

示例:

CREATE TABLE example_floats (
    single_precision FLOAT,
    double_precision DOUBLE
);

定点数类型

定点数类型(DECIMAL)用于存储具有固定小数位数的精确数值,例如财务数据,DECIMAL类型的格式为DECIMAL(M,D),其中M是总位数,D是小数位数。

示例:

CREATE TABLE example_decimals (
    amount DECIMAL(10, 2)
);

三、字符串类型

CHAR和VARCHAR

CHAR(M): 固定长度字符串,M表示字符长度,适合存储长度固定的文本,如MD5哈希值,当存储的数据长度小于M时,MySQL会用空格填充剩余的部分。

VARCHAR(M): 可变长度字符串,M表示最大字符长度,适合存储长度不固定的文本,如姓名或地址,VARCHAR会根据实际存储的数据长度动态调整空间使用,从而节省存储空间。

示例:

CREATE TABLE example_strings (
    fixed_char CHAR(10),
    variable_char VARCHAR(100)
);

TEXT类型

TEXT类型用于存储长文本数据,适用于文章、评论等内容,根据存储能力不同,TEXT类型又分为TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。

TINYTEXT: 最大长度为255字节。

TEXT: 最大长度为65,535字节(2^16-1)。

MEDIUMTEXT: 最大长度为16,777-215字节(2^24-1)。

LONGTEXT: 最大长度为4,294-967-295字节(2^32-1)。

示例:

CREATE TABLE example_texts (
    tinytext_data TINYTEXT,
    text_data TEXT,
    mediumtext_data MEDIUMTEXT,
    longtext_data LONGTEXT
);

四、日期和时间类型

MySQL提供了多种日期和时间类型,以应对不同的时间和日期需求。

DATE: 存储日期,格式为YYYY-MM-DD,占用3个字节。

TIME: 存储时间,格式为HH:MM:SS,占用3个字节。

DATETIME: 存储日期和时间,格式为YYYY-MM-DD HH:MM:SS,占用8个字节。

TIMESTAMP: 存储时间戳,占用4个字节,特别适用于记录时间戳信息,因为它会根据当前时区自动转换时间。

YEAR: 存储年份,格式为YYYY,占用1个字节。

示例:

CREATE TABLE example_datetimes (
    only_date DATE,
    only_time TIME,
    date_and_time DATETIME,
    timestamp_data TIMESTAMP,
    year_only YEAR
);

五、二进制类型

二进制类型用于存储二进制数据,通常用于存储文件或图片等BLOB(Binary Large Object)数据。

BIT(M): 存储固定长度的位字段,M表示位数。

BINARY(M): 固定长度的二进制字符串,M表示字节长度。

VARBINARY(M): 可变长度的二进制字符串,M表示最大字节长度。

TINYBLOB: 最大长度为255字节。

BLOB: 最大长度为65,535字节(2^16-1)。

MEDIUMBLOB: 最大长度为16,777-215字节(2^24-1)。

LONGBLOB: 最大长度为4,294-967-295字节(2^32-1)。

示例:

CREATE TABLE example_blobs (
    bit_data BIT(8),
    binary_data BINARY(50),
    varbinary_data VARBINARY(100),
    tinyblob_data TINYBLOB,
    blob_data BLOB,
    mediumblob_data MEDIUMBLOB,
    longblob_data LONGBLOB
);

六、枚举和集合类型

ENUM类型

ENUM类型用于存储预定义的一组常量,例如性别('M'、'F')、状态('Pending'、'Approved'、'Rejected')等,ENUM('value1', 'value2', ...)最多可以有65535个不同的值。

示例:

CREATE TABLE example_enums (
    gender ENUM('M', 'F'),
    status ENUM('Pending', 'Approved', 'Rejected')
);

SET类型

SET类型用于存储一组可能的值的组合,可以有零个或多个值,SET('value1', 'value2', ...)最多可以有64个成员。

示例:

CREATE TABLE example_sets (
    interests SET('sports', 'music', 'movies', 'books')
);

七、JSON类型

从MySQL 5.7开始引入的JSON类型用于

排行榜
关于我们
「好主机」服务器测评网专注于为用户提供专业、真实的服务器评测与高性价比推荐。我们通过硬核性能测试、稳定性追踪及用户真实评价,帮助企业和个人用户快速找到最适合的服务器解决方案。无论是云服务器、物理服务器还是企业级服务器,好主机都是您值得信赖的选购指南!
快捷菜单1
服务器测评
VPS测评
VPS测评
服务器资讯
服务器资讯
扫码关注
鲁ICP备2022041413号-1