Oracle 通过子查询批量添加、修改表数据

1、通过查询快速创建表

create table test1(id,job,mgr,sal)
as
(select * from  (select rownum rn,a.JOB,a.MGR,a.SAL from emp a where rownum<=10)  where rn>=6)   ---这是一个分页查询

ok,表创建成功

 

2、通过查询快速创建视图

create or replace view V_test1
as
(select * from  (select rownum rn,a.JOB,a.MGR,a.SAL from emp a where rownum<=10)  where rn>=6)   ---这是一个分页查询

ok,视图创建成功

注意:resource角色可能无法创建视图,所以你在创建视图的时候,可能会遇到权限不足的情况,解决方案是:以dba身份登录数据库,然后执行如下语句:

ok,可以创建视图了。

 

3、通过查询结果集结合Insert语句快速填充表

create table test2(id varchar2(100),mgr number(4),sal number(7,2))  --创建一张表test2
insert into test2 
select * from (select rownum rn,a.* from (select MGR,SAL from emp) a where rownum<=10)  where rn>=6   

注意:此处是insert into 的省略用法,insert into 表名 values(值1,值2......); 省略了values和后面的括号。

ok,成功创建数据表,数据是自查询查出来的数据,注意表字段需要和子查询的结果集保持一致

 

4、通过子查询修改表数据

例:希望员工scott员工的岗位、工资、补助和smith的一样。

update emp set (job,sal,comm)=
(select job,sal,comm from emp where ename='SMITH')
where ename='SCOTT';

select job,sal,comm from emp where ename in ('SMITH','SCOTT')

ok,批量更新成功。

使用子查询更新,这样我们就不用一条条语句进行更新了

转载自:https://www.cnblogs.com/GreenLeaves/p/6635566.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值