`
jimill
  • 浏览: 1510 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

oracle sql语法实现表数据拷贝,更新

阅读更多
一、oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解

1.INSERT INTO SELECT语句

语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1

注意:(1)要求目标表Table2必须存在,并且字段field,field2...也必须存在

(2)注意Table2的主键约束,如果Table2有主键而且不为空,则 field1, field2...中必须包括主键

(3)注意语法,不要加values,和插入一条数据的sql混了,不要写成:

Insert into Table2(field1,field2,...) values (select value1,value2,... from Table1)

由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。

2.SELECT INTO FROM语句

语句形式为:SELECT vale1, value2 into Table2 from Table1

要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。

select a,c INTO Table2 from Table1 

:如果在sql/plus或者PL/SQL执行这条语句,会报"ORA-00905:缺失关键字"错误,原因是PL/Sql与T-SQL的区别。
T-SQL中该句正常,但PL/SQL中解释是:
select..into is part of PL/SQL language which means you have to use it inside a PL/SQL block. You can not use it in a SQL statement outside of PL/SQL.
即不能单独作为一条sql语句执行,一般在PL/SQL程序块(block)中使用。
如果想在PL/SQL中实现该功能,可使用Create table newTable as select * from ...:
如: create table NewTable as select * from ATable;

NewTable 除了没有键,其他的和ATable一样
eg:
SELECT LastName,Firstname INTO Persons_backup FROM Persons WHERE City='Beijing'

SELECT Persons.LastName,Orders.OrderNo INTO Persons_Order_Backup
FROM Persons INNER JOIN Orders ON Persons.Id_P=Orders.Id_P

二、Oracle中merge into的使用

•1,可省略的update 或者insert
•   MERGE INTO products p  
•    2 USING newproducts np  
•    3 ON (p.product_id = np.product_id)  
•    4 WHEN MATCHED THEN 
•    5 UPDATE 
•    6 SET p.product_name = np.product_name,  
•    7 p.category = np.category;
  使用表newproducts中的product_name 和category字段来更新表products 中相同product_id的product_name 和category.

2,当条件不满足的时候把newproducts表中的数据INSERT 到表products中。

•MERGE INTO products p  
•    USING newproducts np  
•     ON (p.product_id = np.product_id)  
•     WHEN NOT MATCHED THEN 
•     INSERT 
•     VALUES (np.product_id, np.product_name,  
•     np.category);  
3,带条件的insert 和update

•MERGE INTO products p  
• USING newproducts np  
•   ON (p.product_id = np.product_id)  
•   WHEN MATCHED THEN 
•   UPDATE 
•   SET p.product_name = np.product_name  
•   WHERE p.category = np.category;
insert 和update 都带有where 字句



•MERGE INTO products p  
• USING newproducts np  
•    ON (p.product_id = np.product_id)  
•    WHEN MATCHED THEN 
•    UPDATE 
•     SET p.product_name = np.product_name,  
•     p.category = np.category  
•    WHERE p.category = 'DVD' 
•    WHEN NOT MATCHED THEN 
•     INSERT 
•     VALUES (np.product_id, np.product_name, np.category)  
•    WHERE np.category != 'BOOKS' 
4,无条件的insert

•MERGE INTO products p  
• USING newproducts np  
•  ON (1=0)  
•  WHEN NOT MATCHED THEN 
•   INSERT 
•   VALUES (np.product_id, np.product_name, np.category)  
•   WHERE np.category = 'BOOKS' 


5,delete 子句

1  merge into products p
  2  using newproducts np
  3  on(p.product_id = np.product_id)
  4  when matched then
  5  update
  6  set p.product_name = np.product_name
  7  delete where category = 'macle1_cate';


动机:

想在Oracle中用一条SQL语句直接进行Insert/Update的操作。

说明:

在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也就是说当存在记录时,就更新(Update),不存在数据时,就插入(Insert)。


参考
http://www.cnblogs.com/highriver/archive/2011/08/02/2125043.html
分享到:
评论

相关推荐

    INFORMIX数据库操作及SQL语法

    除了DBMS之外,还包括各种应用程序、中间件等,它们共同协作实现数据的存储、检索和更新等功能。 ###### 2.2.4 数据库系统特点 - **数据独立性**:物理结构变化不影响逻辑结构,逻辑结构变化不影响应用程序。 - **...

    Mysql迁移到Oracle就是这么简单

    2. **数据模型转换**:MySQL与Oracle的SQL语法和数据类型存在差异,需要将MySQL的表结构和数据类型转换为Oracle兼容的形式。例如,MySQL的`VARCHAR2`在Oracle中对应`VARCHAR2`,但长度限制不同;`DATE`类型在Oracle...

    一些简单的SQL语句

    3. 拷贝表空间文件到新的位置: ``` cp /原路径/USERS01.DBF /新路径/USERS01.DBF ``` 4. 修改Oracle数据库中的文件路径: ``` SQL> alter database rename file '原路径\USERS01.DBF' to '新路径\USERS01.DBF...

    (二)Oracle 补充.md

    ### Oracle 补充知识点 #### 创建表 在Oracle数据库中,创建表是一项基本且重要的操作。...以上内容涵盖了Oracle中创建表、修改表、拷贝表、清空表、删除表及表约束的相关知识,希望对您有所帮助。

    Oracle8i_9i数据库基础

    第一部分 Oracle SQL*PLUS基础 23 第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24...

    Oracle学习笔记.pdf

    创建表空间的语法包括指定数据文件的位置和大小,以及分配给用户的默认表空间。 6. **常用命令**: - `CONNECT`:切换或连接数据库用户。 - `SHOW USER`:显示当前用户。 - `HOST`:执行操作系统命令。 - `...

    oracle第二讲(创建及管理表)PPT课件.ppt

    在管理表的过程中,还会涉及到修改表的定义(如添加、删除或修改列)、插入数据(INSERT)、更新数据(UPDATE)、删除数据(DELETE)以及进行各种复杂的查询操作。学习这些基本操作对于管理和维护Oracle数据库至关...

    oracle讲义

    - **数据模型**:数据模型是表示和实现数据之间联系的方法。主要包括层次模型、网状模型和关系模型。 - **层次模型**:层次模型是一种有根节点的定向有序树结构,适用于描述具有明确层次关系的数据。 - **网状模型...

    数据表对拷程序Delphi控件版

    2. SQL语句生成:程序能够根据用户指定的源表和目标表自动生成复制数据所需的INSERT、UPDATE或DELETE语句,这需要对SQL语法有深入理解。 3. 数据处理性能:为了提高数据拷贝的速度,程序可能采用了批处理技术,一次...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。  SQL语言主要包含5个部分  数据定义...

    oracle常用操作备份

    在SQL语句方面,Oracle提供了一系列用于管理数据库的命令,如`ALTER DATABASE`用于修改数据库参数,`CREATE TABLE`用于创建表,`INSERT INTO`用于插入数据,`SELECT`用于查询数据,`UPDATE`用于更新数据,`DELETE`...

    经典SQL语句大全

    2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用) insert into b(a, b, c) select d,e,f from b; 3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用) insert into b(a, b, c) select ...

    dblesson.sql

    视图是虚表,在数据库中只存储视图定义(物化视图除外),通过视图可以查询、更新基本表中的数据;索引主要用于提高存取效率。通过本次实验,可以掌握基本表、视图、索引在数据库中的基本管理方法。 实验要求 熟悉...

    链接服务器相关的T—SQL命令.pdf

    链接服务器是SQL Server数据库引擎中的一个特性,允许用户在一个SQL Server实例中执行分布式查询、插入、更新和删除操作,以访问其他数据源的数据。这些数据源可以是其他SQL Server实例,也可以是其他类型的数据库,...

    绿色版sql查询分析器

    它主要功能包括数据查询、数据更新、数据插入和数据删除。SQL分为四大类型: 1. **DDL (Data Definition Language)**:用于定义数据库结构,如创建、修改或删除表、视图等。 2. **DML (Data Manipulation Language)...

    sql语言参考大全(光盘源码)

    sql语言参考大全(光盘源码)书中的实例后台数据库采用了SQL Server 2000、SQL Server 2005、Oracle、MySQL、Access5种数据库。光盘包含了本书运行需要的光盘源程序文件(脚本)和光盘使用说明书。光盘源程序文件...

    01-oracle数据库简单使用1

    了解这些基本概念后,可以进一步学习Oracle的SQL语法、表和索引的创建、存储过程、触发器、视图以及安全管理等方面的知识。对于Java开发者而言,理解Oracle数据库的使用对于开发和部署基于Java的数据库应用程序至关...

    v512工作室_张利国_Java高端培训系列教材_Oracle实用教程_06章_DML与事务控制

    ###### 6.1.2 表间数据拷贝 除了使用VALUES子句插入单条记录外,还可以使用子查询来实现多条记录的同时插入。这种方式特别适用于从一个表复制数据到另一个表的场景。 **基本语法**: ```sql INSERT INTO 目标表 ...

    Oracle 12c OCP认证IZO-61模拟题

    使用SQL SELECT语句检索数据 (Chapter02) 在Oracle数据库中,`SELECT`语句是最基本的数据检索手段之一。它允许用户从一个或多个表中选取特定的数据行和列。对于准备OCP认证考试的考生而言,熟练掌握`SELECT`语句的...

Global site tag (gtag.js) - Google Analytics