SQL 常用数据类型汇总
2026/6/4 23:19:57 网站建设 项目流程

SQL 数据类型是数据库表设计的核心,用于定义列的存储格式、取值范围和运算规则。不同数据库(MySQL、SQL Server、PostgreSQL)虽有方言差异,但核心类型分类一致。本文按数值型、字符串型、日期时间型、二进制型、特殊类型五大类梳理常用类型,并说明跨库差异与选型原则。

一、数值类型

用于存储数字,核心关注取值范围精度,分为整数、浮点(近似值)、定点(精确值)三类。

1. 整数类型

存储无小数部分的数字,按字节数划分不同范围,需根据实际数值大小选择。

2. 浮点类型(近似值)

基于二进制存储小数,存在精度丢失,适用于对精度要求不高的场景(如身高、温度)。

3. 定点类型(精确值)

以字符串形式存储小数,无精度丢失,是金额、税率等高精度数值的首选。

二、字符串类型

用于存储文本数据,核心关注长度限制存储效率,分为定长、变长、大文本三类。

1. 定长字符串:CHAR

  • 语法:CHAR(N),N 为字符数(MySQL 中 N 范围 1~255);
  • 特点:无论实际存储多少字符,均占用 N 个字符空间,查询速度快;
  • 适用场景:短且长度固定的字符串(如手机号、身份证号、邮编)。

2. 变长字符串:VARCHAR

  • 语法:VARCHAR(N),N 为字符数;
  • 特点:仅占用实际字符数 + 1~2 字节的存储空间,节省空间;
  • 适用场景:长度不固定的短字符串(如用户名、商品名称、地址)。

跨库差异

  • MySQL:VARCHAR最大长度受行大小(65535 字节)限制;
  • SQL Server:VARCHAR(N)为非 Unicode 字符,NVARCHAR(N)为 Unicode 字符(支持中文);
  • PostgreSQL:VARCHAR(N)无性能损耗,也可直接用VARCHAR(无长度限制)。

3. 大文本类型

用于存储超长文本(如文章内容、商品详情),不同数据库的类型名称差异较大。

4. 特殊字符串类型

  • 枚举类型ENUM(MySQL 特有):存储预定义的枚举值,只能选其一,节省空间。
  • 集合类型SET(MySQL 特有):存储多个预定义值(最多 64 个),可多选。

三、日期时间类型

用于存储日期和时间,核心关注时间范围精度,跨库差异较明显。

关键对比

  • DATETIME:存储绝对时间,不受时区影响,范围大;
  • TIMESTAMP:存储相对时间(从 1970-01-01 开始的秒数),受时区影响,范围小。

四、二进制类型

用于存储二进制数据(如图片、音频、序列化数据),不建议直接存储大文件(推荐存储文件路径)。

五、数据类型选型建议

  1. 最小化原则:选择能容纳数据的最小类型(如状态用TINYINT而非INT),节省空间并提升查询效率。
  2. 金额必用定点数DECIMAL/NUMERIC是唯一选择,避免浮点数精度丢失。
  3. 字符串选型
    • 长度固定:用CHAR(如手机号);
    • 长度可变且短:用VARCHAR(如用户名);
    • 超长文本:用TEXT/VARCHAR(MAX)(如文章)。
  4. 日期时间选型
    • 记录创建 / 修改时间:MySQL 用TIMESTAMP(自动更新),其他数据库用DATETIME2
    • 仅存日期:用DATE,避免冗余。
  5. 二进制数据:尽量存储文件 URL(如云存储地址),而非直接存储二进制数据。
  6. 唯一标识:单库用自增INT/BIGINT,分布式系统用UUID

总结

SQL 数据类型的选择直接影响数据库的存储效率、查询性能和数据完整性。核心原则是匹配数据的实际特征:根据数值范围选数值类型,根据文本长度选字符串类型,根据时间精度选日期时间类型。同时需兼顾不同数据库的方言差异,确保表结构的可移植性。掌握常用类型的特性,是设计高效数据库表结构的基础。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询