PostgreSql 使用自定義序列(Sequence)向表插入資料
阿新 • • 發佈:2019-01-24
最近公司使用到了PostgreSql,哈哈,這個SQL之前基本上沒有用過,既然公司使用到了,那就學習一下吧,記一篇小筆記;
按照以往Oracle建表的流程,我們來新建表,並且向表中匯入資料。
1.建立Book表
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位元組) |
2.建立自動增長序列
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表新增自動增長序列
ALTER TABLE book ALTER COLUMN id SET DEFAULT nextval('book_id_seq');
4.向book表Insert資料
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表中資料
SELECT * FROM public.book;
查詢結果:
6.相關序列操作:
--查詢序列 (每查詢一次,序列就做了一次+1操作,即查詢下一次的value)
SELECT nextval('book_id_seq');
--移除序列
DROP SEQUENCE 'book_id_seq';