PostgreSQL教程:数值类型(整型、浮点型、序列、数值的常见操作)
  0SnbOly3LC5t 2023年11月02日 70 0


整型

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

  • 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()


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
0SnbOly3LC5t