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.1235
 1113.1234
(2 rows)

csdn=> insert into decimal_type_t1 values(1113.123346);
INSERT 0 1
csdn=> select * from decimal_type_t1;
  dt_col1
-----------
 1113.1235
 1113.1234
 1113.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 | 1
 2 | 2 | 2 | 2
 3 | 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 批注

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

相关推荐
nbsaas-boot4 分钟前
用 FreeMarker 动态构造 SQL 实现数据透视分析
数据库·windows·sql·freemarker·数据报表
电商API_1800790524721 分钟前
大规模调用淘宝商品详情 API 的分布式请求调度实践
服务器·数据库·分布式·爬虫
Menior_1 小时前
【补充】数据库中有关系统编码和校验规则的简述
数据库·mysql·oracle
晴子呀2 小时前
分库分表和sql的进阶用法总结
数据库·sql
编程(变成)小辣鸡2 小时前
Redis 知识点与应用场景
数据库·redis·缓存
Kay_Liang2 小时前
从聚合到透视:SQL 窗口函数的系统解读
大数据·数据库·sql·mysql·数据分析·窗口函数
H2122021652 小时前
SQLite3库链接与加载问题解决方案
数据库·oracle·sqlite
IT毕设实战小研2 小时前
基于Spring Boot校园二手交易平台系统设计与实现 二手交易系统 交易平台小程序
java·数据库·vue.js·spring boot·后端·小程序·课程设计
倔强的石头_2 小时前
KingbaseES高可用架构深度解析——从读写分离到异地灾备的全方位守护
数据库
范纹杉想快点毕业3 小时前
嵌入式 C 语言编程规范个人学习笔记,参考华为《C 语言编程规范》
linux·服务器·数据库·笔记·单片机·嵌入式硬件·fpga开发