PostgreSQL insert update 常用操作及insert用法区别

   创建测试数据表

create table student (
id int constraint idx_id primary key,
name varchar(20) constraint cst_name not null
);

   插入数据

insert into student values(1,'lens');

 1. 根据字段,当id冲突时更新name值 

insert into student values(1,'y5935') ON CONFLICT(id) do update set name=EXCLUDED.name ;

2.根据where条件选择性更新,由于id没有大于5的数据,故不更新

(可以直接指定约束名,不需要字段,在实际中最好使用字段名)

insert into student values(2,'Y') ON CONFLICT ON CONSTRAINT idx_id do update set name=EXCLUDED.name where student.id>5 ;

3.只插入满足条件的数据行 ,冲突不做任何更新。

insert into student values(2,'Lens5935'),(3,'YYY') ON CONFLICT(id) do nothing ; 

Insert用法区别:

1.insert into select

insert into Table1(field1,field2,...) select value1,value2,.....from Table2 [条件语句]

或者

insert into Table1 slelect * from Table2 [条件语句]

将Table2部分字段中的数据复制到Table1,首先字段的数量要一致,value的值可以是常量,但必须对应着字段接收;
将Table2全部字段数据复制到Table1,字段数量要一致; 

 示例:

insert into stu(id,name)
select id,name from student

或者

insert into stu
select id,name from student

 2.select insert into

select value1,value2 into Table1 from Table2 [条件语句]; 

要求Table1不存在,在插入时会自动创建表Table1,并将Table2中指定指定数据复制同步到Table1中; 

 示例:

select id,name into stu2 from student

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值