oracle merge into用法及例子
ORACLE 9I中加入了MERGE
语法:
MERGE [hint] INTO [schema .] table [t_alias]
USING [schema .] { table | view | subquery } [t_alias]
ON ( condition )
WHEN MATCHED THEN merge_update_clause
WHEN NOT MATCHED THEN merge_insert_clause;
创建测试数据表:
create table tj_test(id number,name varchar2(20),age number);
向表中插入数据:
insert into tj_test values (1,'jan',23);
insert into tj_test values (2,'kk',22);
insert into tj_test values (3,'joe',27);
select * from tj_test;
查询结果如下:
1 jan 23
2 kk 22
3 joe 27
创建另一新表
create table tj_test1 as select * from tj_test where 1=0
插入一条数据
insert into tj_test1 values (1,'jlk',23);
select * from tj_test1
查询结果如下:
1 jkl 23 --注意,这里的的NAME字段中的值是jkl
使用MERGE,实现有则更新,无则插入,sql语句如下:
merge into tj_test1 tt1
using tj_test tt
on (tt1.id=tt.id)
when matched then
update set
tt1.name=tt.name,
tt1.age=tt.age
when not matched then
insert values(
tt.id,
tt.name,
tt.age)
查询tj_test1表(对比原来表中的数据,更新了ID=1 ROW中字段NAME,同时多出两条新数据)
select * from tj_test1
改变行数据如下:
1 jan 23 --这里的原有jkl值被更新
3 joe 27 --原来表中没有的插入
2 kk 22 --原来表中没有的插入
如果存在就更新,不存在就插入
分享到:
相关推荐
在Oracle 9i版本之前,`MERGE INTO`语句要求同时指定`UPDATE`和`INSERT`,但在9i及以后的版本,尤其是Oracle 10g中,这一限制被放宽了。现在,你可以根据需求选择性地使用`UPDATE`或`INSERT`,并且在`ON`条件中可以...
### Oracle Merge 用法详解 #### 一、Oracle Merge 命令介绍 自Oracle 9i版本开始,Oracle数据库引入了一个非常强大的SQL语句——`MERGE`命令。通过这个命令,用户可以在一个单一的SQL语句中完成对表的插入(`...
Oracle中的`MERGE INTO`语句是一种强大的工具,用于整合数据操作,如更新、插入和删除,基于两个数据源的匹配条件。这个语句在处理数据仓库、数据同步或者复杂业务逻辑时非常有用。让我们详细了解一下`MERGE INTO`的...
本文将详细介绍 Oracle 中 `MERGE` 关键字的使用方法,并结合实际示例来解析其工作原理。 #### 二、`MERGE` 语句的基本概念 在 Oracle 9i R2 版本之前,如果需要同时进行更新和插入操作,开发人员通常需要编写两条...
Oracle的`MERGE INTO`语句是一种强大的工具,用于根据源数据更新或插入目标表的记录。这个SQL命令结合了`INSERT`, `UPDATE`和`DELETE`操作,使得在处理数据匹配和同步时更加高效。在给定的实例中,`MERGE INTO`被...
Oracle的MERGE语句是一种强大的数据操作工具,它在Oracle9i版本中被引入,用于合并UPDATE和INSERT操作。在处理需要根据特定条件更新或插入数据的场景时,MERGE语句提供了高效的解决方案,尤其适合那些需要在单个SQL...
3. **处理`DBLINK`问题**:在跨数据库链接使用`MERGE`时,需要注意Oracle 10g中一个已知的bug(Bug ID 4311273),该bug可能导致ORA-02064错误。解决方法是确保`WHEN MATCHED THEN`和`WHEN NOT MATCHED THEN`两个...
在Oracle数据库中,当需要将一个表的字段值更新到另一个表时,通常可以使用`MERGE INTO`语句来实现。`MERGE INTO`是一个非常强大的SQL操作,它结合了`INSERT`、`UPDATE`和`DELETE`的功能,允许你在匹配条件的基础上...
文档中通过具体的例子展示了如何使用SQL语句来实现高效的数据操作,包括数据的选择和插入等。 ### 二、知识点详细解析 #### 1. 多表插入(Multitable INSERT) ##### 1.1 无条件INSERT ALL **应用场景**:当需要...
最后,`MERGE INTO`语句是Oracle中的合并查询,用于合并插入和更新操作: ```sql MERGE INTO table_name USING table_name ON (join_condition) WHEN MATCHED THEN UPDATE SET… WHEN NOT MATCHED THEN INSERT(…) ...
- **Mergeinto应用**:执行插入或更新操作。 - **Truncate table**:清空表中的所有数据。 - **绑定变量与非绑定变量之比较**:探讨这两种变量类型的不同之处。 - **取不重复的记录行**:筛选出唯一的记录。 - ...
2. **导入数据**:使用 `INSERT INTO ... SELECT FROM` 或其他方法将原始表的数据导入到新创建的分区表中。 3. **删除原始表**:确认数据迁移无误后,可以删除原始表。 4. **重命名新表**:最后,将新创建的分区表...
- Mergeinto是一个强大的DML语句,用于插入或更新数据。 **8. Truncatetable** - TRUNCATE TABLE命令用于清空表中的所有数据,但保留表结构不变。 **9. 绑定变量与非绑定变量之比较** - 绑定变量在SQL性能优化中...
这个例子展示了如何在一个游标(c1)中使用 BULK COLLECT INTO。首先定义了一个 DeptRecTab 类型,用于存储 DEPT 表的行记录。然后,打开游标并使用 BULK COLLECT INTO 将查询结果批量加载到 dept_recs 集合中。 3...
sql> alter index xay_id allocate extent(size 200k datafile \'c:/oracle/index.dbf\'); <8>.alter index xay_id deallocate unused; 、查看索引 SQL>select index_name,index_type,table_name from user...
根据给定的信息,我们可以提取和总结出与Oracle数据库管理及技术相关的几个重要知识点: ### 1. 暂时表空间离线操作 在Oracle数据库中,暂时表空间主要用于存储临时对象,例如排序操作或创建索引过程中的临时数据...