度量快速开发平台-专业、快速的软件定制快开平台
标题: Oracle insert插入语句总结:单条插入与多条插入 [打印本页]
作者: fteair 时间: 2020-2-15 22:43
作者: caixuqad 时间: 2020-5-1 18:03
作者: 万望 时间: 2020-6-8 12:03
标题: Oracle insert插入语句总结:单条插入与多条插入
1、标准Insert --单表单行插入
语法:
- INSERT INTO table [(column1,column2,...)] VALUE (value1,value2,...)
复制代码例子:
- insert into dep (dep_id,dep_name) values(1,'技术部');
复制代码备注:使用标准语法只能插入一条数据,且只能在一张表中插入数据
2、无条件 Insert all --多表多行插入
语法:
- INSERT [ALL] [condition_insert_clause]
- [insert_into_clause values_clause] (subquery)
复制代码示例:
- INSERT ALL
- INTO sal_history(emp_id,hire_date,salary) values (empid,hiredate,sal)
- INTO mgr_history(emp_id,manager_id,salary) values (empid,hiredate,sal)
- SELECT employee_id empid,hire_date hiredate,salary sal,manager_id mgr
- FROM employees
- WHERE employee_id>200;
复制代码3,有条件的Insert
语法:
- INSERT [ALL | FIRST]
- WHEN condition THEN insert_into_clause values_clause
- [WHEN condition THEN] [insert_into_clause values_clause]
- ......
- [ELSE] [insert_into_clause values_clause]
- Subquery;
复制代码示例:
- Insert All
- when id>5 then into z_test1(id, name) values(id,name)
- when id<>2 then into z_test2(id) values(id)
- else into z_test3 values(name)
- 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)
- create table sales_source_data (
- employee_id number(6),
- week_id number(2),
- sales_mon number(8,2),
- sales_tue number(8,2),
- sales_wed number(8,2),
- sales_thur number(8,2),
- sales_fri number(8,2)
- );
- insert into sales_source_data values (176,6,2000,3000,4000,5000,6000);
-
- create table sales_info (
- employee_id number(6),
- week number(2),
- sales number(8,2)
- );
复制代码看上面的表结构,现在将要sales_source_data表中的数据转换到sales_info表中,这种情况就需要使用旋转Insert。
示例如下:
- insert all
- into sales_info values(employee_id,week_id,sales_mon)
- into sales_info values(employee_id,week_id,sales_tue)
- into sales_info values(employee_id,week_id,sales_wed)
- into sales_info values(employee_id,week_id,sales_thur)
- into sales_info values(employee_id,week_id,sales_fri)
- select employee_id,week_id,sales_mon,sales_tue,
- sales_wed,sales_thur,sales_fri
- from sales_source_data;
复制代码从该例子可以看出,所谓旋转Insert是无条件insert all的一种特殊应用,但这种应用被oracle官方,赋予了一个pivoting insert的名称,即旋转insert。
作者: 张兴康 时间: 2020-6-9 13:48
这个不错,收藏了
作者: 陈晓龙 时间: 2020-6-9 14:47
欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://plat.delit.cn/) |
Powered by Discuz! X3.2 |