当前位置: 首页 > news >正文

MySQL:数据类型

数值类型

数值类型用于存储整数、小数、浮点数等,主要分为整数类型浮点类型

整数类型

数据类型存储大小取值范围(有符号)取值范围(无符号)说明
TINYINT1字节-128 ~ 1270 ~ 255小整数,如布尔值(0/1)
SMALLINT2字节-32,768 ~ 32,7670 ~ 65,535适用于较小的整数
MEDIUMINT3字节-8,388,608 ~ 8,388,6070 ~ 16,777,215中等大小整数
INT/INTEGER4字节-2,147,483,648 ~ 2,147,483,647(21亿)0 ~ 4,294,967,295常用整数类型
BIGINT8字节-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,8070 ~ 18,446,744,073,709,551,615存储超大整数,如用户ID
  • UNSIGNED(无符号):去掉负数部分,范围变为 0 到 2倍的最大正数
  • ZEROFILL(零填充):自动在左侧填充零,主要用于格式化输出。
CREATE TABLE test_int (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    small_num SMALLINT ZEROFILL
);

浮点类型

数据类型存储大小说明
FLOAT(M, D)4字节单精度浮点数,M是总位数,D是小数位数
DOUBLE(M, D)REAL8字节双精度浮点数,精度更高
DECIMAL(M, D)NUMERICM+1字节高精度定点数,适用于存储货币金额
CREATE TABLE test_float (
    price DECIMAL(10,2),  -- 总共10位,其中2位小数,如 99999999.99
    rate FLOAT(5,2)       -- 总共5位,其中2位小数,如 99.99
);

BIT 类型

用于存储二进制位数据,适用于存储布尔值、权限标志等

数据类型存储大小说明
BIT(M)1 ~ 8字节存储 M 位的二进制数据
CREATE TABLE test_bit (
    flags BIT(8)  -- 8位二进制数据
);

INSERT INTO test_bit (flags) VALUES (b'10101010');

字符串类型

字符串类型用于存储文本数据,主要包括定长字符串、可变长字符串和文本类型

定长字符串

数据类型最大长度说明
CHAR(M)0 ~ 255定长字符串,存储速度快
BINARY(M)0 ~ 255二进制定长字符串
CREATE TABLE test_char (
    fixed_text CHAR(10)  -- 始终占用10个字符空间
);

可变长字符串

数据类型最大长度说明
VARCHAR(M)0 ~ 65,535可变长字符串,实际占用长度+1字节
VARBINARY(M)0 ~ 65,535可变长二进制数据
CREATE TABLE test_varchar (
    name VARCHAR(50)  -- 最多存储50个字符
);

文本类型

数据类型最大存储大小说明
TINYTEXT255字节小文本
TEXT65,535字节(64KB)一般文本
MEDIUMTEXT16,777,215字节(16MB)中等大小文本
LONGTEXT4,294,967,295字节(4GB)大文本
CREATE TABLE test_float (
    price DECIMAL(10,2),  -- 总共10位,其中2位小数,如 99999999.99
    rate FLOAT(5,2)       -- 总共5位,其中2位小数,如 99.99
);

日期时间类型

MySQL 提供多个日期时间类型,用于存储日期、时间、时间戳等。

数据类型存储大小格式说明
DATE3字节YYYY-MM-DD仅存储日期,如 2025-03-28
DATETIME8字节YYYY-MM-DD HH:MM:SS存储日期和时间
TIMESTAMP4字节YYYY-MM-DD HH:MM:SS记录时间戳,受时区影响
TIME3字节HH:MM:SS仅存储时间
YEAR1字节YYYY存储4位年份
CREATE TABLE test_date (
    event_date DATE,
    event_time TIME,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

ENUM 和 SET 类型

用于存储固定范围的字符串。

ENUM 枚举

只能选择其中一个值,存储占用1-2字节。

CREATE TABLE test_enum (
    status ENUM('active', 'inactive', 'pending')
);

SET 集合

可以存储多个选项,占用1-8字节。

CREATE TABLE test_set (
    roles SET('admin', 'editor', 'user')
);

JSON类型

MySQL 5.7+ 支持 JSON 类型,用于存储结构化数据。

INSERT INTO test_json (data) VALUES ('{"name": "Alice", "age": 25}');

# 查询
SELECT data->>'$.name' FROM test_json;  -- 提取 JSON 中的 name
http://www.dtcms.com/a/109902.html

相关文章:

  • 380_C++_[结合379]从连续内存地址中取出来的热力图图片data,转换为可视化的、带颜色的热力图像显示到界面(图像格式为RGBA)
  • Yapi部署指南:在 Linux 上 Yapi 教程
  • Linux Bash 脚本实战:自动监控域名证书过期并发送邮件告警
  • vue和angular实现飞机大战
  • 彩虹表攻击
  • 52.个人健康管理系统小程序(基于springbootvue)
  • Linux 高级命令与常见操作:文本处理、系统管理与网络调试
  • 红米AC2100-刷OpenWrt系统,安装zerotier教程
  • 7-6 混合类型数据格式化输入
  • 大数据(4)Hive数仓三大核心特性解剖:面向主题性、集成性、非易失性如何重塑企业数据价值?
  • PPT助手:一款集计时、远程控制与多屏切换于一身的PPT辅助工具
  • 【备忘】在Docker中安装宝塔面板,实现环境隔离,又能快速迁移服务器环境
  • 基于Flask的MBA考生成绩查询系统设计与实现
  • Java 可变参数(Varargs)使用指南
  • Vue实例中,setTimeout()不生效怎么解决
  • 联合类型|类型断言|交叉类型
  • [CISSP] [6] 密码学和对称密钥算法
  • AI模拟了一场5亿年的进化
  • 微信小程序基于Canvas实现头像图片裁剪(上)
  • 【python】Plot a Square
  • 【SQL】取消sql某一列的唯一值key值的方法
  • XXX软件系统研发技术手册模板
  • “*(单星号)”和“**(双星号)”在Python中的灵活运用
  • PySide6控件:QFont设置、QColor调色板、QPixmap图像处理与QCursor光标自定义
  • ESP32 C3mini与ESP32-WROOM蓝牙连接问题
  • 离线模型添加联网搜索功能
  • hpu萌新训练赛(三)
  • NVR接入录像回放平台EasyCVR打造基层安防 “智慧中枢”:一站式智慧安防方案
  • 使用 Mockito 快速构建 Mock 测试环境
  • uniapp如何接入星火大模型