好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PostgreSQL 实现给查询列表增加序号操作

利用 ROW_NUMBER() over( ) 给 查询 序列增加排序字段

?

1

2

SELECT ROW_NUMBER() over( ORDER bY biztypename DESC ) AS num,biztypename

FROM ( SELECT DISTINCT biztypename FROM bizmaptype) t;

效果如下:

补充:PostgreSql 使用自定义序列(Sequence)向表插入数据 id 自增长

按照以往Oracle建表的流程,我们来新建表,并且向表中导入数据。

1.创建Book表

 

?

1

2

3

4

5

6

CREATE TABLE book(

  id INTEGER PRIMARY KEY ,

  name CHARACTER VARYING (50),

  price DOUBLE PRECISION ,

  author CHARACTER VARYING (20)

);

PRIMARY KEY 将id设置为主键;

数据类型

类型名称 别名 描述

integer int,int4 有正负之分的4字节整数

character varying [ (n) ] varchar [ (n) ]

可变长度的字符串

double precision float8 双精度浮点数(8字节)

更多类型请参考文档:https://www.postgresql.org/docs/9.3/static/datatype.html

2.创建自动增长序列

 

?

1

2

3

4

5

6

CREATE SEQUENCE book_id_seq

  START WITH 1

  INCREMENT BY 1

  NO MINVALUE

  NO MAXVALUE

  CACHE 1;

参数 描述

START WITH 设置起始值,允许序列从任何地方开始

INCREMENT BY 设置增量,指定在哪个值得基础上创建新值,正值将产生递增序列,负值将产生递减序列;默认值为1。

NO MINVALUE 设置序列可以生成的最小值,如果未指定NO MINVALUE,对于升序和降序序列,默认值分别为1和。

NO MAXVALUE 设置序列可以生成的最大值,如果未指定此子句,将使用默认值,对于升序和降序序列,默认值为和-1。

CACHE 设置高速缓存,要分配多少序列号并将其存贮在内存中方便更快的访问,最小值为1,默认值也是1。

3.为book表添加自动增长序列

 

?

1

ALTER TABLE book ALTER COLUMN id SET DEFAULT nextval( 'book_id_seq' );

4.向book表Insert数据

 

?

1

2

3

4

INSERT INTO public .book VALUES (nextval( 'book_id_seq' ), '《本色》' ,30.5, '乐嘉' );

INSERT INTO public .book VALUES (nextval( 'book_id_seq' ), '《平凡世界》' ,90.5, '路遥' );

INSERT INTO public .book VALUES (nextval( 'book_id_seq' ), '《Java编程思想》' ,60.5, '詹姆斯·高斯林' );

INSERT INTO public .book VALUES (nextval( 'book_id_seq' ), '《Web高级编程》' ,50.5, '李三' );

5.查询book表中数据

 

?

1

SELECT * FROM public .book;

查询结果:

6.相关序列操作:

 

?

1

2

3

4

--查询序列 (每查询一次,序列就做了一次+1操作,即查询下一次的value)

SELECT nextval( 'book_id_seq' );

--移除序列

DROP SEQUENCE 'book_id_seq' ;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。

原文链接:https://uzong.blog.csdn.net/article/details/103806597

查看更多关于PostgreSQL 实现给查询列表增加序号操作的详细内容...

  阅读:75次