千家信息网

数据库insert高级语法用法

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍"数据库insert高级语法用法",在日常操作中,相信很多人在数据库insert高级语法用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"数据库inse
千家信息网最后更新 2025年01月20日数据库insert高级语法用法

这篇文章主要介绍"数据库insert高级语法用法",在日常操作中,相信很多人在数据库insert高级语法用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"数据库insert高级语法用法"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

有这样一个业务需求,要求根据不同条件将源数据插入到不同的表中,源数据表更新十分频繁,这样的一个业务需求应该怎么做呢?我先给出源表结构和需要插入的表结构:
更新十分频繁的源表:
create table people(id number,name varchar2(20),sex char(3),address varchar2(500));

给源表插入数据:
insert into people
values(1,'张翠山','男','武当山');
insert into people
values(2,'殷素素','女','天鹰教');
insert into people
values(3,'张无忌','男','明教');
insert into people
values(4,'赵敏','女','皇室');
insert into people
values(5,'周芷若','女','峨眉山');
insert into people
values(6,'成昆','男','少林寺');
commit;
查询一下people结果,如图所示:

待插入的几张表结构:
create table people_1(id number,name varchar2(20));
create table people_2(id number,sex char(3));
create table people_3(sex char(3),address varchar2(500));
现在的业务需求是,将ID<=4的记录插入到people_1中,SEX='男'的插入到people_2,剩下的插入到people_3中。乍一看,此需求可以这样做insert into people_1 select id,name from people where id<=4; insert into people_2 select id,sex from people where SEX='男'; insert into people_3 select sex,sddress from people where id>4 and SEX!='男';但是people是一个频繁DML的表,如果分成这样子三步执行,在数据量特别大的情况下,每步插入操作会消耗较长时间,在这一段时间之内,又会有大批量数据改变,导致三步操作的表数据基数都不一样,结果当然会有偏差。因此,在这里我们用到了insert的高级语法。
SQL如下:
insert all
when id<=4 then into people_1 values(id,name)
when sex='男' then into people_2 values(id,sex)
else into people_3 values(sex,address)
select * from people;
结果如下:
PEOPLE_1: PEOPLE_2: PEOPLE_3:


如果我只想ID=1在people_1中插入之后就不在people_2中插入,那么可以使用insert first,它会从前到后进行判断,如果一条记录在前面已经插入,则在之后略过此条记录。
SQL如下:
insert first
when id<=4 then into people_1 values(id,name)
when sex='男' then into people_2 values(id,sex)
else into people_3 values(sex,address)
select * from people;
结果如下:
PEOPLE_1: PEOPLE_2: PEOPLE_3:


当然,这个是根据条件插入的,当没有条件的时候,可以直接进行插入。
SQL如下:
insert all/first
into people_1 values(id,name)
into people_2 values(id,sex)
into people_3 values(sex,address)
select * from people;
其实很多时候,现实业务的要求oracle都为我们考虑到了,而且其性能通常强于我们自己写的PL/SQL,更多的精彩业务实现,还等着我们去探索。

到此,关于"数据库insert高级语法用法"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

数据 高级 语法 业务 数据库 结果 需求 学习 频繁 更多 条件 结构 不同 时候 帮助 更新 实用 精彩 接下来 偏差 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中国黑客网络安全 嵌入式软件开发测试流程 软件开发公司要交几个点的税 宝安区国内网络技术开发服务价格 共享行业软件开发 力争补好网络安全发展课 怎样看一个游戏服务器多少钱租的 会数据库找什么样子的工作 国际网络安全峰会中国 软件开发甲乙双方分工 msyql 修改数据库名 网络安全法41条全文 互联网信息网络安全专业 山西学业考试管理服务器地址 黑龙江电信服务器 厦门土拨鼠网络技术有限公司 mysql统计节点数据库 e袋洗软件开发 有数据库的文档 成都益玩早软件开发工作室 巴州网络安全和信息化办公室 模拟器硬件厂家寻软件开发商 金蝶上机日志怎么修改数据库 交通违章管理信息系统数据库 广州翰银网络技术有限公司 网络安全周2021第几届 删除数据库3个月前的数据 北京居竹网络技术有限公司 使用dns协议的服务器 日立安斯泰莫嵌入式软件开发
0