首页 > 数据库 >PostgreSQL教程:数值类型(整型、浮点型、序列、数值的常见操作)

PostgreSQL教程:数值类型(整型、浮点型、序列、数值的常见操作)

时间:2023-09-24 22:33:53浏览次数:33  
标签:PostgreSQL laozheng PGSQL 浮点 数值 序列 table id


整型

整型比较简单,主要就是三个:

  • smallint、int2:2字节
  • integer、int、int4:4字节
  • bigint、int8:8字节

正常没啥事就integer,如果要存主键,比如雪花算法,那就bigint。空间要节约,根据情况smallint

浮点型

浮点类型就关注2个(其实是一个)

  • decimal(n,m):本质就是numeric,PGSQL会帮你转换
  • numeric(n,m):PGSQL本质的浮点类型

针对浮点类型的数据,就使用 numeric

序列

MySQL中的主键自增,是基于auto_increment去实现。MySQL里没有序列的对象。

PGSQL和Oracle十分相似,支持序列:sequence。

PGSQL可没有auto_increment。

序列的正常构建方式:

create sequence laozheng.table_id_seq;
-- 查询下一个值
select nextval('laozheng.table_id_seq');
-- 查询当前值
select currval('laozheng.table_id_seq');

默认情况下,seqeunce的起始值是0,每次nextval递增1,最大值9223372036854775807

告诉缓存,插入的数据比较多,可以指定告诉缓存,一次性计算出20个后续的值,nextval时,就不可以不去计算,直接去高速缓存拿值,效率会有一内内的提升。

序列大多数的应用,是用作表的主键自增效果。

-- 表自增
create table laozheng.xxx(
    id int8 default nextval('laozheng.table_id_seq'),
    name varchar(16)
);
insert into laozheng.xxx (name) values ('xxx');
select * from laozheng.xxx;

上面这种写法没有问题,但是很不爽~很麻烦。

PGSQL提供了序列的数据类型,可以在声明表结构时,直接指定序列的类型即可。

bigserial相当于给bigint类型设置了序列实现自增。

  • smallserial
  • serial
  • bigserial
-- 表自增(爽)
create table laozheng.yyy(
    id bigserial,   
    name varchar(16)
);
insert into laozheng.yyy (name) values ('yyy');

在drop表之后,序列不会被删除,但是序列会变为不可用的状态。
因为序列在使用serial去构建时,会绑定到指定表的指定列上。

如果是单独构建序列,再构建表,使用传统方式实现,序列和表就是相对独立的。

数值的常见操作

针对数值咱们可以实现加减乘除取余这5个操作

还有其他的操作方式

操作符

描述

示例

结果

^


2 ^ 3

8

|/

平方根

|/ 36

6

@

绝对值

@ -5

5

&


31 & 16

16

|


31|32

63

<<

左移

1<<1

2

>>

右移

16>>1

8

数值操作也提供了一些函数,比如pi(),round(数值,位数),floor(),ceil()


标签:PostgreSQL,laozheng,PGSQL,浮点,数值,序列,table,id
From: https://blog.51cto.com/zhangxueliang/7589232

相关文章

  • PostgreSQL教程:布尔类型
    布尔类型简单的丫批,可以存储三个值,true,false,null--布尔类型的约束没有那么强,true,false大小写随意,他会给你转,同时yes,no这种他也认识,但是需要转换selecttrue,false,'yes'::boolean,boolean'no',True,FaLse,NULL::boolean;boolean类型在做and和or的逻辑操作时,结果字段A字段Baand......
  • PostgreSQL教程:单引号和双引号的使用、数据类型转换
    单引号和双引号在PGSQL中,写SQL语句时,单引号用来标识实际的值。双引号用来标识一个关键字,比如表名,字段名。--单引号写具体的值,双引号类似MySQL的``标记,用来填充关键字--下面的葡萄牙会报错,因为葡萄牙不是关键字select1.414,'卡塔尔',"葡萄牙";数据类型转换第一种方式:只需要在值......
  • PostgreSQL教程:数据类型
    PGSQL支持的类型特别丰富,大多数的类型和MySQL都有对应的关系名称说明对比MySQL布尔类型boolean,标准的布尔类型,只能存储true,falseMySQL中虽然没有对应的boolean,但是有替换的类型,数值的tinyint类型,和PGSQL的boolean都是占1个字节。整型smallint(2字节),integer(4字节),bigint(8字节)跟MySQL没......
  • PostgreSQL教程:SQL案例(创建用户、创建数据库、创建schema、赋权)
    需求构建一个用户构建一个数据库在这个数据库下构建一个schema(数据库默认有一个public的schema)将这个schema的权限赋予用户在这个schema下构建一个表将表的select,update,insert权限赋予用户实现--准备用户createuserlaozhengwithpassword'laozheng';--准备数据库createda......
  • PostgreSQL教程:权限操作
    权限操作前,要先掌握一下PGSQL的逻辑结构逻辑结构图可以看到PGSQL一个数据库中有多个schema,在每个schema下都有自己的相应的库表信息,权限粒度会比MySQL更细一些。在PGSQL中,权限的管理分为很多多层server、cluster、tablespace级别:这个级别一般是基于pg_hba.conf去配置database级别:通......
  • PostgreSQL排序字段不唯一导致分页查询结果出现重复数据
    背景pg单字段排序,排序字段中可能会出现重复,这样就会导致我们在进行分页查询时会出现一些和预期不相符的现象,如这个数据在第一页出现了,然后再第二页又出现。复现步骤createtabletest_select_order_page_duplicate(idvarchar(36)notnullconstrainttest_select_order_pa......
  • yum安装postgresql-14
    PostgreSQL:Linuxdownloads(RedHatfamily)sudoyuminstall-yhttps://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm#InstallPostgreSQL:sudoyuminstall-ypostgresql14-server#Optionallyinitializet......
  • 浮点数计算
    浮点数的表示(科学计数法)在此处我们将指数叫做阶码。阶码我们将科学计数法的指数叫做阶码。一般尾数用补码表示,阶码用移码表示阶码的位数决定数的表示范围,位数越多范围越大尾数的位数决定数的有效精度,尾数越多精度越高浮点数的运算过程对阶>尾数计算>结果格式化......
  • 数值类型
    Python中的常见数值类型包括整数(int)、浮点数(float)和复数(complex)。以下是使用这些数值类型进行操作和运算的示例代码:整数类型(int)操作和运算:#定义整数变量a=10b=5#基本运算c=a+b#加法d=a-b#减法e=a*b#乘法f=a/b#除法,返回浮点数结......
  • 漏洞修复系列-如何升级linux系统Upgrade to PostgreSQL JDBC Driver version 42.2.27,
    问题遇到一个PostgreSQLJDBCDriver漏洞PostgreSQLJDBCDriverthatis42.2.xpriorto42.2.27,42.3.xpriorto42.3.8,42.4.xpriorto42.4.3or42.5.xpriorto42.5.1.Itis,therefore,affectedbyaninformationdisclosurevulnerability.原因PostgreSQLJD......