Oracle_3_复制表、插入选择、递归查询

一、复制表

1、select into,使用查询结果新建表

结构:

create table 表名(字段名1,字段名2,......)
as select 语句

2、insert into select,使用查询结果插入到表中

结构:

insert into 表名(字段名1,字段名2,......)
select 语句

二、插入时,选择插入或修改

若数据存在,则更新数据,否则,新增数据。

结构:

merge into 表名
using 与表产生关联的字段值
on (判断语句)
when matched then
    如果条件为真
when not matched then
    如果条件不为真

例如:

--表中是否有id为6的数据,如果有则修改它,如果没有则新建一条

--需要新增数据的表
merge into students a
--确定比较对象:为一行两列的表,字段为id,name,内容为6,lurenjia
using (select 6 id,'lurenjia' name from dual) b
--比较条件:判断学生中是否有id为6的数据,
on (a.id = b.id)
--如果有:更新学生数据
when matched then
    update set  a.name = b.name
--如果没有:新增lurenjia数据
when not matched then
    insert (id,name) values(b.id,b.name)

三、递归函数

若一个表内有自关联,则为一个树形结构,通过递归操作可以取出某一个数的分支。

结构:

select * from 表名
--开始位置
start with 字段名=--id为共有属性,pid为关联数据
--pid在后,向下查询,pid在前,向上查询
connect by prior id = pid

例如:查询Austin的上级结构。

select * from EMPLOYEES t
start with last_name='Austin'
connect by prior manager_id=employee_id
posted @ 2022-12-30 21:09  在博客做笔记的路人甲  阅读(79)  评论(0编辑  收藏  举报