insert返回-1 oracle,Oracle Insert Into Select

insert返回-1 oracle,Oracle Insert Into Selectoracle函数的OracleInsertIntoSelect在本教程中,您将学习如何使用OracleINSERTINTOSELECT语句将数据从SELECT语句的结果中插入到表中。OracleINSERTINTOSELECT语句概述有时候,想要将从其它表中并将其到另一个表中。要做到这一点,可使用OracleINSERTINTOSELECT语句,如下所示:INSERT…

oracle函数 的 Oracle Insert Into Select

在本教程中,您将学习如何使用Oracle INSERT INTO SELECT语句将数据从SELECT语句的结果中插入到表中。

Oracle INSERT INTO SELECT语句概述

有时候,想要将从其它表中并将其到另一个表中。要做到这一点,可使用Oracle INSERT INTO SELECT语句,如下所示:

INSERT INTO target_table (col1, col2, col3)

SELECT col1,

col2,

col3

FROM source_table

WHERE condition;

Oracle INSERT INTO SELECT语句要求源表和目标表匹配。

Oracle INSERT INTO SELECT示例

1. 插入所有销售数据示例

下面了演示如何使用insert into select语句,首先创建一个名为sales的表。

CREATE TABLE sales (

customer_id NUMBER,

product_id NUMBER,

order_date DATE NOT NULL,

total NUMBER(9,2) DEFAULT 0 NOT NULL,

PRIMARY KEY(customer_id,

product_id,

order_date)

);

以下语句将orders和order_items表中的销售摘要插入到sales表中,参考以下实现语句 –

INSERT INTO sales(customer_id, product_id, order_date, total)

SELECT customer_id,

product_id,

order_date,

SUM(quantity * unit_price) amount

FROM orders

INNER JOIN order_items USING(order_id)

WHERE status = ‘Shipped’

GROUP BY customer_id,

product_id,

order_date;

以下语句从sales表中检索数据以验证插入结果:

SELECT *

FROM sales

ORDER BY order_date DESC,

total DESC;

执行上面查询语句,得到以下结果 –

a0fb456e3ced9cc0f679261b910e9cb9.png

2. 插入部分销售数据示例

假设只想将2017年的销售摘要数据复制到新表中。 为此,首先创建一个名为sales_2017的新表,如下所示:

CREATE TABLE sales_2017

AS SELECT

*

FROM

sales

WHERE

1 = 0;

WHERE子句中的条件是确保sales表中的数据不会被复制到sales_2017表中。

其次,使用Oracle INSERT INTO SELECT和WHERE子句将2017年的销售数据复制到sales_2017表中:

INSERT INTO sales_2017

SELECT customer_id,

product_id,

order_date,

SUM(quantity * unit_price) amount

FROM orders

INNER JOIN order_items USING(order_id)

WHERE status = ‘Shipped’ AND EXTRACT(year from order_date) = 2017

GROUP BY customer_id,

product_id,

order_date;

在此示例中,没有在INSERT INTO子句中指定列列表,因为SELECT语句的结果具有与sales_2017表的列对应的值。 另外,在SELECT语句的WHERE子句中添加了更多的条件,以在2017年仅检索销售数据。

以下查询选择sales_2017表中的所有数据:

SELECT *

FROM sales_2017

ORDER BY order_date DESC,

total DESC;

执行上面查询语句,得到以下结果 –

a27baf0c08808ccb3bbc94388d8804b2.png

3. 插入部分数据和文字值示例

假设,想要发送电子邮件给所有客户告知新产品上市。 要做到这一点,可以将客户数据复制到单独的表并跟踪电子邮件发送状态。

首先,创建一个名为customer_lists的新表,如下所示:

— oracle 12c写法

CREATE TABLE customer_lists(

list_id NUMBER GENERATED BY DEFAULT AS IDENTITY,

first_name varchar2(255) NOT NULL,

last_name varchar2(255) NOT NULL,

email varchar2(255) NOT NULL,

sent NUMBER(1) NOT NULL,

sent_date DATE,

PRIMARY KEY(list_id)

);

— oracle 11g写法

drop sequence customer_lists_seq;

create sequence customer_lists_seq

increment by 1

start with 1

maxvalue 9999999999

nocache;

CREATE TABLE customer_lists(

list_id NUMBER,

first_name varchar2(255) NOT NULL,

last_name varchar2(255) NOT NULL,

email varchar2(255) NOT NULL,

sent NUMBER(1) NOT NULL,

sent_date DATE,

PRIMARY KEY(list_id)

);

其次,将contacts表中的数据复制到customer_lists表中:

— oracle 12c写法

INSERT INTO

customer_lists(

first_name,

last_name,

email,

sent

) SELECT

first_name,

last_name,

email,

0

FROM

contacts;

— oracle 11g写法

INSERT INTO

customer_lists(

list_id,

first_name,

last_name,

email,

sent

) SELECT

customer_lists_seq.nextval,

first_name,

last_name,

email,

0

FROM

contacts;

在这个例子中,除了从contacts表中检索数据之外,我们还使用文字值:0 作为sent列的初始值。

以下查询从customer_lists表中检索数据:

416cf6940ae0536f88309f1c5cb4d726.png

请注意,这个例子只是为了演示,可以将DEFAULT 0添加到sent列的定义中。

在本教程中,您已经学习了如何使用Oracle INSERT INTO SELECT语句将查询结果向其它表中插入数据。

今天的文章insert返回-1 oracle,Oracle Insert Into Select分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/30829.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注