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

GaussDB 常用数值类型

1 数值类型作用

用来数据计算的,如加,减,乘,除,幂,乘方等的业务场景。

2 整型类型

名称

描述

存储空间

范围

TINYINT

微整数,带符号别名为INT1,无符号别名为UINT1。

1字节

  • 带符号的范围是0 ~ +255。
  • 无符号的范围是0 ~ +255。

SMALLINT 

小范围整数,带符号别名为INT2,无符号别名为UINT2。

2字节

  • 带符号的范围是-32,768 ~ +32,767。
  • 无符号的范围是0 ~ +65,535。

INTEGER

常用的整数,带符号别名为INT4,无符号别名为UINT4。

4字节

  • 带符号的范围是-2,147,483,648 ~ +2,147,483,647。
  • 无符号的范围是0 ~ +4,294,967,295。

BIGINT

大范围的整数,带符号别名为INT8,无符号别名为UINT8。

8字节

  • 带符号的范围是-9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807。
  • 无符号的范围是0 ~ +18,446,744,073,709,551,615。

举例:

创建具有TINYINT,INTEGER,BIGINT类型数据的表

csdn=> create table int_type_t22(a tinyint,b integer, c bigint
);
CREATE TABLE

注:如果超出来integer类型的范围,会直接报ERROR:  integer out of range

csdn=> INSERT INTO int_type_t22 VALUES(100,21000000000,3100000000000000000);
ERROR:  integer out of range
CONTEXT:  referenced column: b

3 精度类型

名称

描述

存储空间

范围

NUMERIC[(p[,s])],

DECIMAL[(p[,s])]

  • 精度p取值范围为[1,1000],标度s取值范围为[0,p]。

说明:p为总位数,s为小数位数。

用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。

未指定精度的情况下,小数点前最大131,072位,小数点后最大16,383位。

NUMBER[(p[,s])]

NUMERIC类型的别名。

用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。

未指定精度的情况下,小数点前最大131,072位,小数点后最大16,383位。

举例:

csdn=> CREATE TABLE decimal_type_t1
csdn-> (
csdn(>     DT_COL1 DECIMAL(10,4)
csdn(> );
CREATE TABLE
csdn=>
csdn=>csdn=> insert into decimal_type_t1 values(1113.123456);
INSERT 0 1
csdn=> select * from decimal_type_t1;dt_col1
-----------1113.1235
(1 row)csdn=> insert into decimal_type_t1 values(1113.123356);
INSERT 0 1
csdn=> select * from decimal_type_t1;dt_col1
-----------1113.12351113.1234
(2 rows)csdn=> insert into decimal_type_t1 values(1113.123346);
INSERT 0 1
csdn=> select * from decimal_type_t1;dt_col1
-----------1113.12351113.12341113.1233
(3 rows)csdn=>

注:默认会做四舍五入运算

4 序列整数

名称

描述

存储空间

范围

SMALLSERIAL

二字节序列整型。

2字节。

-32,768 ~ +32,767。

SERIAL

四字节序列整型。

4字节。

-2,147,483,648 ~ +2,147,483,647。

BIGSERIAL

八字节序列整型。

8字节。

-9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807。

LARGESERIAL

默认插入十六字节序列整型,实际数值类型和NUMERIC相同。

变长类型,每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。

小数点前最大131,072位,小数点后最大16,383位。

举例:

csdn=> create table serial_type_tab(a smallserial,b serial,c bigserial,d largeserial);
NOTICE:  CREATE TABLE will create implicit sequence "serial_type_tab_a_seq" for serial column "serial_type_tab.a"
NOTICE:  CREATE TABLE will create implicit sequence "serial_type_tab_b_seq" for serial column "serial_type_tab.b"
NOTICE:  CREATE TABLE will create implicit sequence "serial_type_tab_c_seq" for serial column "serial_type_tab.c"
NOTICE:  CREATE TABLE will create implicit sequence "serial_type_tab_d_seq" for serial column "serial_type_tab.d"
CREATE TABLE
csdn=> insert into smallserial_type_tab values(default,default,default,default);
INSERT 0 1
csdn=> insert into smallserial_type_tab values(default,default,default,default);
INSERT 0 1
csdn=> select * from smallserial_type_tab;a | b | c | d
---+---+---+---1 | 1 | 1 | 12 | 2 | 2 | 23 | 3 | 3 | 3
(3 rows)csdn=>

5 浮点类型

名称

描述

存储空间

范围

REAL,

FLOAT4

单精度浮点数,不精准。

REAL数据类型在满足说明的场景下,映射为双精度浮点数FLOAT8,使用场景参考FLOAT8。

4字节。

-3.402E+38~+3.402E+38,6位十进制数字精度。

REAL(p,s)

精度p取值范围为[1,1000],标度s取值范围为[0,p]。

未指定精度和标度的情况下,默认精度p为10,标度s为0。

该类型映射为NUMERIC,使用场景参考NUMERIC。

用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。

在精度和标度指定最大的情况下,小数点前最大131,072位,小数点后最大16,383位。

DOUBLE PRECISION,

FLOAT8

双精度浮点数,不精准。

8字节。

-1.79E+308~+1.79E+308,15位十进制数字精度。

DOUBLE

双精度浮点数,不精准。

该类型映射为双精度浮点数FLOAT8,使用场景参考FLOAT8。

8字节。

-1.79E+308~+1.79E+308,15位十进制数字精度。

DOUBLE(p,s)

精度p取值范围为[1,1000],标度s取值范围为[0,p]。

未指定精度和标度的情况下,默认精度p为10,标度s为0。

该类型映射为NUMERIC,使用场景参考NUMERIC。

用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。

在精度和标度指定最大的情况下,小数点前最大131,072位,小数点后最大16,383位。

FLOAT[(p)]

浮点数,不精准。精度p取值范围为[1,53]。

根据精度p不同选择,p<=24时映射为REAL类型,p>24时映射为DOUBLE PRECISION类型,不指定精度时,映射为DOUBLE PRECISION类型。

在满足说明中的场景下,精度p<=24时映射为FLOAT4类型,p>24时映射为DOUBLE PRECISION类型,不指定精度时,映射为FLOAT4类型。

4字节或8字节。

-

FLOAT(p,s)

精度p取值范围为[1,1000],标度s取值范围为[0,p]。

在未指定精度和标度的情况下,默认精度p为10,标度s为0。

该类型映射为NUMERIC,使用场景参考NUMERIC。

用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。

在精度和标度指定最大的情况下,小数点前最大131,072位,小数点后最大16,383位。

BINARY_DOUBLE

是DOUBLE PRECISION的别名,为兼容Oracle数据类型。

8字节。

-1.79E+308~+1.79E+308,15位十进制数字精度。

DEC[(p[,s])]

精度p取值范围为[1,1000],标度s取值范围为[0,p]。

在满足说明中的场景且未指定精度和标度的情况下,默认精度p为10,标度s为0。

该类型映射为NUMERIC,使用场景参考NUMERIC。

用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。

在精度和标度指定最大的情况下,小数点前最大131,072位,小数点后最大16,383位。

INTEGER[(p[,s])]

精度p取值范围为[1,1000],标度s取值范围为[0,p]。

在未指定精度和标度的情况下,默认精度p为10,标度s为0。

未指定精度和标度的情况下,该类型映射为INTEGER。指定精度和标度的情况下,该类型映射为NUMERIC。

用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。

在精度和标度指定最大的情况下,小数点前最大131,072位,小数点后最大16,383位。

未指定精度和标度的情况下,范围是-2,147,483,648 ~ +2,147,483,647。

注:

  • 二进制浮点数据类型REAL、FLOAT4、DOUBLE、DOUBLE PRECISION、FLOAT8、FLOAT[(p)]和BINARY_DOUBLE为不精确的数值类型,其内部存储为近似值,因此存储和检索时可能会显示轻微的差异。当用户在使用二进制浮点数据类型时需要注意以下几点:

    • 精确存储和计算:如果需要精确存储和计算(例如货币金额),请改用精确的数据类型(例如numeric)。

    • 复杂计算:若使用不精确的数据类型执行复杂计算以获得重要数据,需要仔细评估其结果。

    • 浮点数比较:比较两个浮点数是否相等的结果可能与预期存在差异。

    • 下溢错误:如果一个浮点数过于接近零,反而无法准确表示,会导致下溢错误。

举证:

csdn=> CREATE TABLE float_type_t2
csdn-> (
csdn(>     FT_COL1 INTEGER,
csdn(>     FT_COL2 FLOAT4,
csdn(>     FT_COL3 FLOAT8,
csdn(>     FT_COL4 FLOAT(3),
csdn(>     FT_COL5 BINARY_DOUBLE,
csdn(>     FT_COL6 DECIMAL(10,4),
csdn(>     FT_COL7 INTEGER(6,3)
csdn(> );
CREATE TABLE
csdn=>csdn=> INSERT INTO float_type_t2 VALUES(10,10.365456,123456.1234,10.3214, 321.321, 123.123654, 123.123654);
INSERT 0 1
csdn=>
csdn=>
csdn=> select * from float_type_t2;ft_col1 | ft_col2 |   ft_col3   | ft_col4 | ft_col5 | ft_col6  | ft_col7
---------+---------+-------------+---------+---------+----------+---------10 | 10.3655 | 123456.1234 | 10.3214 | 321.321 | 123.1237 | 123.124
(1 row)csdn=>

6 批注

数值类型是最常用的一种数据类型,在做表设计时要清楚业务场景适当选择。

http://www.xdnf.cn/news/17954.html

相关文章:

  • 分布式锁:从理论到实战的深度指南
  • python自学笔记8 二维和三维可视化
  • 深入解析Prompt缓存机制:原理、优化与实践经验
  • 云原生俱乐部-杂谈1
  • CVE-2014-6271(bash破壳漏洞 )
  • Android数据缓存目录context.getCacheDir与Environment.getExternalStorageDirectory
  • Git 中切换到指定 tag
  • 会议系统进程池管理:初始化、通信与状态同步详解
  • Fiddler抓包
  • 【FreeRTOS】刨根问底4: 优先级反转是啥?咋解决?
  • 为什么Integer缓存-128 ~ 127
  • 学习设计模式《二十二》——职责链模式
  • 搭建 Docker 私有仓库
  • springboot项目不同平台项目通过http接口AES加密传输
  • UE5配置MRQ编解码器输出MP4视频
  • 机器人“ChatGPT 时刻”倒计时
  • 电池模组奇异值分解降阶模型
  • 两种方法实现,本地部署Qwen-Image,并开放API服务
  • MyBatis学习总结(六)
  • 高并发内存池 性能瓶颈分析与基数树优化(9)
  • vLLM(Vectorized Large Language Model Serving) 的深度解析
  • C++ 应用场景全景解析:从系统级到AI的跨越式演进
  • GaussDB数据库架构师修炼(十六) 如何选择磁盘
  • jetson orin nx(8G)烧录super系统实录
  • 亚马逊手工制品分类体系革新:从流量重构到运营升级的深度解析
  • Wireshark中常见协议
  • WriteBooster
  • 解决安装 scikit-learn==1.3.1 时出现的版本匹配错误
  • MixOne在macOS上安装碰到的问题
  • SpringMVC请求与响应