度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 1070|回复: 4
打印 上一主题 下一主题

[分享] Oracle insert插入语句总结:单条插入与多条插入

[复制链接]

348

主题

3572

帖子

9300

积分

论坛元老

Rank: 8Rank: 8

积分
9300
跳转到指定楼层
楼主
发表于 2020-6-8 12:03:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

1、标准Insert --单表单行插入

语法:

  1. INSERT INTO table [(column1,column2,...)] VALUE (value1,value2,...)
复制代码

例子:

  1. insert into dep (dep_id,dep_name) values(1,'技术部');
复制代码

备注:使用标准语法只能插入一条数据,且只能在一张表中插入数据

2、无条件 Insert all --多表多行插入

语法:

  1. INSERT [ALL] [condition_insert_clause]
  2. [insert_into_clause values_clause] (subquery)
复制代码

示例:

  1. INSERT ALL
  2. INTO sal_history(emp_id,hire_date,salary) values (empid,hiredate,sal)
  3. INTO mgr_history(emp_id,manager_id,salary) values (empid,hiredate,sal)
  4. SELECT employee_id empid,hire_date hiredate,salary sal,manager_id mgr
  5. FROM employees
  6. WHERE employee_id>200;
复制代码

3,有条件的Insert

语法:

  1. INSERT [ALL | FIRST]
  2. WHEN condition THEN insert_into_clause values_clause
  3. [WHEN condition THEN] [insert_into_clause values_clause]
  4. ......
  5. [ELSE] [insert_into_clause values_clause]
  6. Subquery;
复制代码

示例:

  1. Insert All
  2. when id>5 then into z_test1(id, name) values(id,name)
  3. when id<>2 then into z_test2(id) values(id)
  4. else into z_test3 values(name)
  5. select id,name from z_test;
复制代码

当使用ALL关键字时,oracle会从上至下判断每一个条件,当条件满足时就执行后面的into语句,在上面的例子中,如果ID=6 那么将会在z_test1中插入一条记录,同时也在z_test2中插入一条记录。

备注:

当使用FIRST关键字时,oracle会从上至下判断每一个条件,当遇到第一个满足时就执行后面的into语句,同时中断判断的条件判断,在上面的例子中,如果ID=6,仅仅会在z_test1中插入一条数据。

4、旋转Insert (pivoting insert)

  1. create table sales_source_data (
  2. employee_id number(6),
  3. week_id number(2),
  4. sales_mon number(8,2),
  5. sales_tue number(8,2),
  6. sales_wed number(8,2),
  7. sales_thur number(8,2),
  8. sales_fri number(8,2)
  9. );
  10. insert into sales_source_data values (176,6,2000,3000,4000,5000,6000);

  11. create table sales_info (
  12. employee_id number(6),
  13. week number(2),
  14. sales number(8,2)
  15. );
复制代码

看上面的表结构,现在将要sales_source_data表中的数据转换到sales_info表中,这种情况就需要使用旋转Insert。

示例如下:

  1. insert all
  2. into sales_info values(employee_id,week_id,sales_mon)
  3. into sales_info values(employee_id,week_id,sales_tue)
  4. into sales_info values(employee_id,week_id,sales_wed)
  5. into sales_info values(employee_id,week_id,sales_thur)
  6. into sales_info values(employee_id,week_id,sales_fri)
  7. select employee_id,week_id,sales_mon,sales_tue,
  8. sales_wed,sales_thur,sales_fri
  9. from sales_source_data;
复制代码

从该例子可以看出,所谓旋转Insert是无条件insert all的一种特殊应用,但这种应用被oracle官方,赋予了一个pivoting insert的名称,即旋转insert。




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
沙发
发表于 2020-6-9 13:48:41 | 只看该作者
这个不错,收藏了
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
板凳
发表于 2020-6-9 14:47:49 | 只看该作者
回复 支持 反对

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
地板
发表于 2020-2-15 22:43:23 | 只看该作者
回复 支持 反对

使用道具 举报

141

主题

1551

帖子

3573

积分

论坛元老

Rank: 8Rank: 8

积分
3573
5#
发表于 2020-5-1 18:03:29 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-1 23:30 , Processed in 0.151432 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表