PostgreSql 使用自定义序列(Sequence)向表插入数据
最近公司使用到了PostgreSql,哈哈,这个SQL之前基本上没有用过,既然公司使用到了,那就学习一下吧,记一篇小笔记;
什么是PostgreSql:https://www.postgresql.org/about/
有关PostgreSql序列使用:https://www.cnblogs.com/alianbog/p/5654604.html
按照以往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字节)
更多类型请参考文档:https://www.postgresql.org/docs/9.3/static/datatype.html
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';
---------------------
作者:搬砖建高楼
来源:CSDN
原文:https://blog.csdn.net/qq_37464248/article/details/82769868
版权声明:本文为博主原创文章,转载请附上博文链接!
PostgreSql 使用自定义序列(Sequence)向表插入数据的更多相关文章
- sql实现同时向主表和子表插入数据方法
使用sql语句实现同时向主表和子表插入数据方法: Oracle: -- oracle创建sequence create sequence SEQ_test minvalue 1 maxvalue 99 ...
- 如何往有自增标识字段的表插入数据时,同时给自增标识字段插入值呢,在Inset Into语句前后加上SQL语句:SET IDENTITY_INSERT TableName ON和SET IDENTITY_INSERT TableName OFF
当要往有设置自增标识字段的表插入数据,并希望同时设置好自增字段的值时,可以在insert into 的SQL语句前后分别加上一句sql语句,SET IDENTITY_INSERT TableName ...
- 向oracle中的表插入数据的方法
向oracle中的表插入数据的方法有以下几种: 假设表名为User 第一种方法:select t.*,rowid from User t;-->点击钥匙那个标记就可向表中添加数据 第二种方法:s ...
- SQL-Oracle存储过程-循环A表,向B表插入数据
--存储过程,查询A表,向B表插入数据 create or replace procedure prc_sg_sjtj_config(p_flag out varchar2) IS BEGIN FOR ...
- python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
实例1.取得MYSQL版本 复制代码 代码如下: # -*- coding: UTF-8 -*-#安装MYSQL DB for pythonimport MySQLdb as mdbcon = Non ...
- 【JDBC】向数据表插入数据时,自动获取生成的主键
数据表设计时,一般都会有一个主键(Key)(自己指定),有时也可以使用联合主键: 有许多数据库提供了隐藏列为表中的每行记录分配一个唯一键值(如:rowid): 当我们没有指定哪一列作为主键key时,数 ...
- inserted触发器,一张表插入数据时,同时向另外一张表插入数据
有时候,一个服务器上有多个数据库,需要向其中一个数据库的表中插入数据时, 同时向另外一个数据的表里插入数据. 可以利用触发器和同义词(建立同义词的方法省略), 在一个数据库的表里插入数据时,同时向另外 ...
- mysql存储过程批量向表插入数据
业务需要,往某个表中批量插入数据,使用存储过程插入 首先,要建立一张mysql表,表明为phone_number, 三个字段,id 自增,number 就是要插入的表格,is_used 表示十分已经使 ...
- java实现mysql数据库从一张表插入数据到另一张表
创建两张表: create table employee( id ), name ), email ), gender ) ); create table copyEmployee( id ), na ...
随机推荐
- 禁止html页面返回上一层
两种方式: // 方式一 触发返回上一层页面事件,只会重新加载当前页面 window.addEventListener('pageshow', function(e) { if (e.persiste ...
- xargs 使用详解
参考转载:https://www.cnblogs.com/f-ck-need-u/p/5925923.html#auto_id_12 xargs 作用:将管道传输过来的stdin进行处理(分割.分批) ...
- python基本应用--三元应用
格式为:result=值1 if 条件 else 值2 如 a,b,c = 1,3,5 d =a if a>b else c 那么d的结果是多少? 其实可以使用if来完全表达 if a>b ...
- webpack 和 code splitting
Code Splitting指的是代码分割,那么什么是代码分割,webpack和code splitting又有什么样的联系呢? 使用npm run dev:"webpack-dev-ser ...
- 2018年5月20日--西安icpc邀请赛试题一览
热身赛 正式赛 A题,样例不代表后台数据,出题人把题意和后台数据代表的意思搞差了! B: C: D-E F f-G G G-H H-I I-J J-k K-2
- linux实操_组管理
1.文件/目录的所有者 一般为文件的创建者,谁创建了该文件,就自然成为该文件的所有者. 查看文件的所有者: 指令:ls -ahl 修改文件所有者: 指令:chown 用户名 文件名 组的创建: 指令: ...
- nodejs常用框架使用样例
Koa const Koa = require('koa'); const router = require('koa-router')(); const app = new Koa(); const ...
- eclipse中toolbar位置的系统URI
org.eclipse.ui.ide.IIDEActionConstants 这个类里存了系统toolbar,菜单等URI 定义自己的toolbar或者menu时,指定位置after=addition ...
- JS客户端类型的判断
**第一种:通过判断浏览器的userAgent,用正则来判断是否是ios和Android客户端.代码如下:** <script type="text/javascript"& ...
- Linux C打印所有的环境变量
#include <stdio.h> extern char** environ; int main() { ; ; environ[nIndex] != NULL; nIndex++) ...