• Postgresql数据类型-数字类型


    PostgreSQL支持的数字类型有整数类型、用户指定精度类型、浮点类型、serial类型。

    PostgreSQL支持的数字类型如表所示

    smallint、integer、bigint都是整数类型,存储一定范围的整数,超出范围将会报错。smallint存储2字节整数,字段定义时可写成int2, integer存储4字节整数,支持的数值范围比smallint大,字段定义时可写成int4,是最常用的整数类型,bigint存储8字节整数,支持的数值范围比integer大,字段定义时可写成int8。对于大多数使用整数类型的场景使用integer就够了,除非integer范围不够用的情况下才使用bigint。定义一张使用integer类型的表如下所示:

    1. mydb=> CREATE TABLE test_integer (id1 integer, id2 int4) ;
    2. CREATE TABLE

     decimal和numeric是等效的,可以存储指定精度的多位数据,比如带小数位的数据,适用于要求计算准确的数值运算,声明numeric的语法如下所示:

    NUMERIC(precision, scale)

    precision是指numeric数字里的全部位数,scale是指小数部分的数字位数,例如18.222的precision为5,而scale为3; precision必须为正整数,scale可以是0或整数,由于numeric类型上的算术运算相比整数类型性能低,因此,如果两种数据类型都能满足业务需求,从性能上考虑不建议使用numeric数据类型。real和double precision是指浮点数据类型,real支持4字节,double precision支持8字节,浮点数据类型在实际生产案例的使用相比整数类型会少些。smallserial、serial和bigserial类型是指自增serial类型,严格意义上不能称之为一种数据类型,如下代码创建一张测试表,定义test_serial表的id字段为serial类型:

    1. mydb=> CREATE TABLE test_serial (id serial, flag text);
    2. CREATE TABLE

    查看表test_serial的表结构,如下所示:

    1. mydb=> \d test_serial
    2. Table "pguser.test_serial"
    3. Column | Type | Collation | Nullable | Default
    4. -----------+---------+-----------+----------+-------------------------------------
    5. id | integer | | not null | nextval('test_serial_id_seq'::regclass)
    6. flag | text | | |

    以上显示id字段使用了序列test_serial_id_seq,插入表数据时可以不指定serial字段名称,将自动使用序列值填充,如下所示:

    1. mydb=> INSERT INTO test_serial(flag) VALUES ('a');
    2. INSERT 0 1
    3. mydb=> INSERT INTO test_serial(flag) VALUES ('b');
    4. INSERT 0 1
    5. mydb=> INSERT INTO test_serial(flag) VALUES ('c');
    6. INSERT 0 1
    7. mydb=> SELECTFROM test_serial;
    8. id | flag
    9. -------+------
    10. 1 | a
    11. 2 | b
    12. 3 | c
    13. (3 rows)

    PostgreSQL支持数字类型操作符和丰富的数学函数,例如支持加、减、乘、除、模取余操作符,如下所示:

    1. mydb=> SELECT 1+2,23,4/2,8%3;
    2. ?column? | ? column? | ? column? | ? column?
    3. -------------+----------+----------+----------
    4. 3 | 6 | 2 | 2

    按模取余如下所示:

    1. mydb=> SELECT mod(8,3);
    2. mod
    3. -----
    4. 2
    5. (1 row)

    四舍五入函数如下所示:

    1. mydb=> SELECT round(10.2), round(10.9);
    2. round | round
    3. ----------+-------
    4. 10 | 11
    5. (1 row)

    返回大于或等于给出参数的最小整数,如下所示:

    1. mydb=> SELECT ceil(3.6), ceil(-3.6);
    2. ceil | ceil
    3. ---------+------
    4. 4 | -3
    5. (1 row)

    返回小于或等于给出参数的最大整数,如下所示:

    1. mydb=> SELECT floor(3.6), floor(-3.6);
    2. floor | floor
    3. ----------+-------
    4. 3 | -4
    5. (1 row)

    参考手册https://www.postgresql.org/docs/10/static/datatype.html

  • 相关阅读:
    vue-element-admin依赖报错npm ERR! code 128 npm ERR! An unknown git error occurred
    C# EPPlus导出dataset----Excel1
    云原生微服务 第六章 Spring Cloud中使用OpenFeign
    PDF格式分析(六十九)——注释字典
    后端搜索条件
    Silicon labs BG22蓝牙开发记录(一)
    三极管是一项伟大的发明
    java异常
    访问共享故障解决方法
    c++11产生指定范围内均匀分布随机数、产生大量不重复随机数
  • 原文地址:https://blog.csdn.net/LG_15011399296/article/details/134245119