OCP1z0-047 :多表插入

我们来看下面这个例子看一下一个子查询返回的数据行是如何被用来插入多个表中的,好我们来建三个表分别是:small_customers、medium_customers、large_customers。我们想要按照每位消费者所下订单的总金额来将数据分别插入这些表。子查询将每一位消费者的order_total列求和来确定刻消费者的消费金额是小(所有订单的累加金额小于10000)、中等(介于10000与99999.99)还是大(大于等于100000),然后按照条件将这些行插入对应的表中。

gyj@OCM>  create tablesmall_customers(customer_id number,sum_orders number);

Table created.

gyj@OCM> create tablemedium_customers(customer_id number,sum_orders number);

Table created.

gyj@OCM> create tablelarge_customers(customer_id number,sum_orders number);

Table created.

gyj@OCM>  create tableorders(customer_id number,order_total number);

Table created.

gyj@OCM> insert into ordersvalues(1,200);

gyj@OCM> insert into ordersvalues(1,400);

gyj@OCM> insert into ordersvalues(2,50000);

gyj@OCM> insert into ordersvalues(2,80000);

gyj@OCM> insert into ordersvalues(3,200000);

gyj@OCM> insert into ordersvalues(3,2000);

gyj@OCM> commit;

gyj@OCM> insert all

2    when sum_orders < 10000then

3    into small_customers

4    when sum_orders >=10000 and sum_orders < 200000 then

5    into medium_customers

6    else

7    into large_customers

8    selectcustomer_id,sum(order_total) sum_orders

9    from orders

10    group by customer_id;

commit;

3 rows created.

gyj@OCM>

Commit complete.

gyj@OCM> select * from small_customers;

CUSTOMER_ID SUM_ORDERS

----------- ----------

1       600

gyj@OCM> select * from medium_customers;

CUSTOMER_ID SUM_ORDERS

----------- ----------

2    130000

gyj@OCM> select * from large_customers;

CUSTOMER_ID SUM_ORDERS

----------- ----------

3    202000

注意Insert关键字后面用ALL还是FIRST,视具体情况而定。

答案是: C

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

时间: 2024-09-27 08:49:42

OCP1z0-047 :多表插入的相关文章

oracle同时向多表插入数据

在Oracle操作过程中经常会碰到同时向多个不同的表插入数据,此时用该语句就非常合适. All表示非短路运算,即满足了第一个条件也得向下执行查看是否满足其它条件,而First是短路运算找到合适条件就不向下进行. INSERT ALL WHEN prod_category='B' THEN INTO book_sales(prod_id,cust_id,qty_sold,amt_sold) VALUES(prodUCt_id,customer_id,sale_qty,sale_price) WHE

页面添加,向一个表插入数据,如何判断某个列的值是否存在(不一定是id)如果存在就删除

问题描述 页面添加,向一个表插入数据,如何判断某个列的值是否存在(不一定是id)如果存在就删除 页面添加,向一个表插入数据,如何判断某个列的值是否存在(不一定是id)如果存在就删除 解决方案 插入前先查询,如果有存在相同数据的列删除,然后再插入! 解决方案二: 先去查询一遍,按照你要找的那个值,找到了的话,就把哪一行删除了,然后在添加.(记得用事务) 大概步骤: 1.先按照条件查询某个列是否存在: 2.删除上面查询出来的列: 3.新增新的数据 解决方案三: 添加前做一个查询表数据,跟新增对象的列

多线程-怎么提高哈希表插入效率?

问题描述 怎么提高哈希表插入效率? key 值和 value 都是长整形,key 值可以重复 ,即一个 key值可以有多个 value 值, 各位大牛有没有什么好的想法觉得可以加快插入速度,比如多线程? 解决方案 要提高效率,首先需要做两件事情,一个是算法优化,分析你的算法复杂度,是不是有更优化的算法存在. 比如hash表插入,最理想的算法也必须是logN,当然如果你超过这个,有优化的可能,如果已经是logN就不要折腾了. 然后是代码优化,你首先要分析你的算法的理论最优运行时间,比如说,你插入h

oracle从另一表插入数据的问题

问题描述 oracle从另一表插入数据的问题 我的oracle想插入数据,代码是这样的 declare temp varchar2(25):='admin'; lay varchar2(20); i number; begin for i in 1..66 loop insert into NSGL_USER_DATA(FID,DELETED,USERID,DATAID) values(i,1,tempm,lay); end loop; end; 然后我想DATAID是从另一个表DATA来的数据

spring-jpa + Spring 2.5 表插入不了数据

问题描述 jpa + Spring 2.5 表插入不了数据 @Testpublic void runtest() { ApplicationContext ctx = new ClassPathXmlApplicationContext(""beans.xml""); ProductService productService = (ProductService) ctx.getBean(""productServiceImpl"&qu

做WEB,怎么用内存表,怎么向内存表插入数据。请指点。最好用C#

问题描述 做WEB,怎么用内存表,怎么向内存表插入数据.请指点.最好用C# 解决方案 解决方案二:利用DataTable和SESSION把TABLE表里的值覆给SESSION,之后进行操作表!购物车有很多都是利用这一点做的解决方案三:????????????解决方案四:内存表...-------->DataTabledt=newDataTable();dt.Columns.Add(...);dt.Columns.Add(...);DataRowdr=dt.NewRows();dr[0]=text

sqlserver A表插入B表后如何返回A表原有ID和插入B表后新增ID的对应关系

问题描述 sqlserver A表插入B表后如何返回A表原有ID和插入B表后新增ID的对应关系 表:A id(自增), name 1 'a' 2 'b' 表 B id(自增), name 3 'c' 4, 'd' 执行 insert into B(name) select name from A 表 B id(自增), name 3 'c' 4 'd' 5 'a' 6 'b' 现在的问题是如何返回 A表插入B表后新增的ID及原A表的ID对应关系 newID oldID 5 1 6 2 解决方案

sql使用触发器当一张表插入数据就往另一张表插入数据

问题描述 sql使用触发器当一张表插入数据就往另一张表插入数据 日期格式是这样的但是使用触发器当上图插入了一条数据就往下图插入相同的数据,如下图为什么日期格式不一样呢? 解决方案 SQL(二) 将一张表数据插入另外一张表从表中插入数据到另外一张表oracle 将一张表的数据插入到另一张表 解决方案二: 日期格式的问题,先确保两张表对应列的数字类型一致,插入使用convert格式化一下:CONVERT(varchar(10), GETDATE(), 111).

游标-需要需要往同一张表插入 多条 主键递增 其他字段数值完全相同的几条数据 (数据就来自这张表)怎么做?

问题描述 需要需要往同一张表插入 多条 主键递增 其他字段数值完全相同的几条数据 (数据就来自这张表)怎么做? 需要需要往同一张表插入 多条 主键递增 其他字段数值完全相同的几条数据 (数据就来自这张表)怎么做? 解决方案 declare aa integer :=1; begin while aa<10 loop insert into test values('test',aa); aa:=aa+1; end loop; end; 解决方案二: 比如你的表的结构是 a(id,name,age

A表插入数据 mysql 触发器

问题描述 A表插入数据 mysql 触发器 三个表 A 表 温度 压力 B表 温度最小 温度最大 压力最小压力最大 C表 (id 报警类型 ) 当向 A表插入数据后 如果 A表中的温度 低于B表中的最小温度或高于再大温度 A表中的压力 低于B表中的最小压力或高于再大压力 则向C表中添加记录 1 值为温度 2 值为压力 如果在范围内 则不需要向c表添加记录 解决方案 create trigger tg4 after insert on A 表 for each row begin //放你的逻辑