前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle insert all语句介绍

Oracle insert all语句介绍

作者头像
全栈程序员站长
发布2022-09-15 09:26:16
6800
发布2022-09-15 09:26:16
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

Oracle 中insert语句的高级用法,INSERT ALL 语句介绍:

1、无条件insert all 全部插入

代码语言:javascript
复制
CREATE TABLE t1(product_id NUMBER, product_name VARCHAR2(80),MONTH NUMBER);

INSERT INTO t1 VALUES(111, '苹果',1);
INSERT INTO t1 VALUES(222, '橘子',1);
INSERT INTO t1 VALUES(333, '香蕉',1);

COMMIT;

CREATE TABLE t2 AS SELECT * FROM t1 WHERE 1=2;

INSERT ALL
    INTO t2 
    VALUES (product_id, product_name,MONTH)
    INTO t2 
    VALUES (product_id, product_name,MONTH+1)
    INTO t2 
    VALUES (product_id, product_name,MONTH+2)
    INTO t2 
    VALUES (product_id, product_name,MONTH+3) 
SELECT product_id, product_name, MONTH
FROM t1;

COMMIT;

SELECT * FROM t2 ORDER BY product_id, product_name, MONTH;

———- ———- ———- 111 苹果 1 111 苹果 2 111 苹果 3 111 苹果 4 222 橘子 1 222 橘子 2 222 橘子 3 222 橘子 4 333 香蕉 1 333 香蕉 2 333 香蕉 3 333 香蕉 4

已选择12行。

2、有条件insert all

Oracle insert all语句介绍
Oracle insert all语句介绍
代码语言:javascript
复制
CREATE TABLE small_orders
(order_id   NUMBER(12) NOT NULL,
 customer_id    NUMBER(6) NOT NULL,
 order_total    NUMBER(8,2),
 sale_rep_id    NUMBER(6)
    
);

CREATE TABLE medium_orders AS SELECT * FROM small_orders;

CREATE TABLE large_orders AS SELECT * FROM small_orders;

CREATE TABLE special_orders
(order_id   NUMBER(12)  NOT NULL,
 customer_id    NUMBER(6)   NOT NULL,
 order_total    NUMBER(8,2),
 sale_rep_id    NUMBER(6),
 credit_limit   NUMBER(9,2),
 cust_email     VARCHAR2(30)

);

INSERT ALL
    WHEN order_total < 100000 THEN
        INTO small_orders
    WHEN order_total > 100000 AND order_total < 200000 THEN
        INTO medium_orders
    ELSE
        INTO large_orders
    SELECT order_id, customer_id, order_total, sales_rep_id 
      FROM orders;

3、有条件insert first

如果第一个 WHEN 子句的值为 true,Oracle 服务器对于给定的行执行相应的 INTO 子句, 并且跳过后面的 WHEN 子句(后面的when语句都不再考虑满足第一个When子句的记录,即使该记录满足when语句中的条件)。

代码语言:javascript
复制
INSERT FIRST
   WHEN ottl < 100000 THEN
      INTO small_orders
         VALUES(oid, ottl, sid, cid)
   WHEN ottl > 100000 and ottl < 200000 THEN
      INTO medium_orders
         VALUES(oid, ottl, sid, cid)
   WHEN ottl > 290000 THEN
      INTO special_orders
   WHEN ottl > 200000 THEN
      INTO large_orders
         VALUES(oid, ottl, sid, cid)
   SELECT o.order_id oid, o.customer_id cid, o.order_total ottl,
      o.sales_rep_id sid, c.credit_limit cl, c.cust_email cem
      FROM orders o, customers c
      WHERE o.customer_id = c.customer_id;
      
SELECT * FROM small_orders;
SELECT * FROM medium_orders;
SELECT * FROM large_orders;
SELECT * FROM special_orders;

———————————

By Dylan.

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160958.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、无条件insert all 全部插入
  • 2、有条件insert all
  • 3、有条件insert first
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档