SQL 附录:SQL 数据类型

注意了,ANSI SQL 定义了标准数据类型体系,但是各数据库(MySQL、Oracle、PostgreSQL 等)会在此基础上扩展专属类型,但标准类型是所有数据库都支持的核心基础。

下面我会按类别梳理完整的 ANSI SQL 标准数据类型:

数值类型(Numeric Types)

用于存储数字,分为精确数值和近似数值两类:

类型名称

说明

典型使用场景

INTEGER (INT)

整数,精度固定,范围约 ±2^31-1(±21 亿)

存储 ID、数量、年龄等整数

SMALLINT

小整数,范围约 ±2^15-1(±32767)

存储状态码、小范围计数

BIGINT

大整数,范围约 ±2^63-1(±9e18)

存储超大 ID、海量计数

DECIMAL(p, s)

NUMERIC(p, s)

精确小数,p= 总位数(精度),s= 小数位数(标度)

金额、税率、高精度计量

FLOAT(p)

单精度浮点数,p为二进制精度(1-53)

非精确计量(如科学计算)

REAL

单精度浮点数(等价于 FLOAT (24))

普通浮点计算

DOUBLE PRECISION

双精度浮点数(等价于 FLOAT (53))

高精度浮点计算

BOOLEAN

布尔值,取值为 TRUE / FALSE / UNKNOWN(兼容 NULL)

存储开关、状态标记

字符类型(Character Types)

用于存储文本字符串:

类型名称

说明

典型使用场景

CHAR(n)

定长字符,n为字符数(不足补空格),n默认 1

存储固定长度编码(如邮编)

VARCHAR(n)

变长字符,n为最大字符数(仅存储实际长度)

存储名称、描述等可变文本

CLOB (Character Large Object)

大字符对象,存储超长文本(无长度限制)

存储文章、日志、富文本

日期时间类型(Date/Time Types)

用于存储时间相关数据:

类型名称

说明

典型使用场景

DATE

日期类型,仅存储年 - 月 - 日(无时间)

存储生日、交易日期

TIME

时间类型,仅存储时:分: 秒(可含小数秒)

存储打卡时间、事件时刻

TIME WITH TIME ZONE

带时区的时间类型

跨时区业务的时间记录

TIMESTAMP

时间戳,存储年 - 月 - 日 时:分: 秒(可含小数秒)

存储创建时间、更新时间

TIMESTAMP WITH TIME ZONE

带时区的时间戳(跨时区业务核心类型)

全球化业务的时间记录

INTERVAL

时间间隔,存储两个时间点的差值(如 1 天 2 小时)

计算时间差、有效期

二进制类型(Binary Types)

用于存储非文本的二进制数据:

类型名称

说明

典型使用场景

BINARY(n)

定长二进制数据,n为字节数

存储固定长度二进制编码

VARBINARY(n)

变长二进制数据,n为最大字节数

存储短二进制数据(如 MD5)

BLOB (Binary Large Object)

大二进制对象,存储超长二进制数据(无长度限制)

存储图片、文件、音频视频

集合 / 结构化类型(Advanced Types)

ANSI SQL 99 及以上版本定义的高级类型(部分数据库需开启扩展支持):

类型名称

说明

典型使用场景

ARRAY

数组类型,存储同类型的有序集合(如 INT ARRAY)

存储标签列表、选项集合

ROW

行类型,存储结构化的复合数据(如 ROW (name VARCHAR (50), age INT))

临时存储复合数据

JSON

JSON 类型,存储 JSON 格式数据(ANSI SQL 2016 新增)

存储非结构化 / 半结构化数据

 

 

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号