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

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.lryc.cn/news/622032.html

相关文章:

  • 在Ubuntu 22.04上安装远程桌面服务
  • C语言指针(五):回调函数与 qsort 的深层关联
  • 【大模型微调系列-03】 大模型数学基础直观入门
  • Codeforces Deque工艺
  • 专题三_二分_x 的平方根
  • Swift 实战:用最长递增子序列算法解“俄罗斯套娃信封”问题(LeetCode 354)
  • Effective C++ 条款42:了解 typename 的双重含义
  • 旅游管理实训室:旅游教育实践育人的关键支撑
  • spring中异步任务注解@Async和@scheduled的使用
  • 5G赋能井下“毛细血管”:巴拉素煤矿零散排水点智能监控系统
  • 基于阿里云音频识别模型的网页语音识别系统实现
  • Spring WebFlux 性能优化实践指南
  • 近日算法备案事项:九月批复审即将启动/赶11月批最后安全启动时间已过
  • week1-[顺序结构]跑道
  • YAML 中定义 List 的几种方式
  • WEB安全--Java安全--Servlet内存马
  • 第十四节:物理引擎集成:Cannon.js入门
  • Linux之高可用集群实战(二)
  • 机器学习 - Kaggle项目实践(4)Toxic Comment Classification Challenge 垃圾评论分类问题
  • 嵌入式第二十九课!!!回收子进程资源空间函数与exec函数
  • 大模型——如何让 AI 绘图的中文呈现更稳定和准确
  • Spring 条件注解与 SPI 机制(深度解析)
  • LeetCode 面试经典 150_数组/字符串_最长公共前缀(20_14_C++_简单)(暴力破解)(求交集)
  • Docker 实战:情感分析系统-容器化部署全流程(sa-logic、sa-webapp、sa-frontend )
  • Highcharts Dashboards | 打造企业级数据仪表板:从图表到数据驾驶舱
  • CUDA 编程笔记:GPU 硬件资源
  • 敏捷数据开发实践:基于 Amazon Q Developer + Remote MCP 构建本地与云端 Amazon Redshift 交互体系
  • mysql-条件查询案例
  • C++从入门到实战(十九)C++ vector容器及其常用接口
  • dockerfile自定义镜像,乌班图版