>데이터 베이스 >Oracle >오라클에서 병합의 사용법은 무엇입니까?

오라클에서 병합의 사용법은 무엇입니까?

WBOY
WBOY원래의
2022-03-07 16:15:0417936검색

Oracle에서 병합 명령은 하나의 SQL 문에서 동시에 테이블에 대한 삽입 및 업데이트 작업을 수행할 수 있습니다. 병합 문은 지정된 두 테이블에 대해 병합 작업을 수행하는 데 자주 사용됩니다. 구문은 "MEGER INTO 병합 대상 테이블입니다. 병합 소스 테이블 ON 조건 사용".

오라클에서 병합의 사용법은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 10 시스템, Oracle 11g 버전, Dell G3 컴퓨터.

oracle에서 병합의 사용법은 무엇입니까

merge 명령

이 병합을 통해 하나의 SQL 문에서 테이블에 대한 삽입과 업데이트를 동시에 수행할 수 있습니다.

meger 문을 사용하면 두 테이블에 대한 병합 작업을 수행할 수 있습니다.

MEGER INTO table1_name
USING table2_name ON join_condition
WHEN MATCHEO THEN UPDATE SET...
WHEN NOT MATCHED THEN INSERT ...VALUES...

구문 설명은 다음과 같습니다.

table1_name은 병합해야 할 대상 테이블을 나타냅니다.

table2_name은 병합해야 하는 소스 테이블을 나타냅니다.

join_condition은 병합 조건을 나타냅니다.

matcheo then update는 병합 조건이 충족되면 업데이트 작업이 수행된다는 의미입니다.

일치하지 않을 경우 삽입하면 조건이 충족되지 않으면 삽입 작업이 수행된다는 의미입니다.

update and insert

원본 테이블의 정규화된 데이터를 대상 테이블에 병합하려는 경우 병합을 충족하지 않는 원본 테이블의 데이터를 병합하려는 경우에만 업데이트 절을 사용할 수 있습니다. 조건을 대상 테이블에 추가하려면 insert 절만 사용할 수 있습니다.

update 절과 insert 절 모두에서 where 절을 사용하여 업데이트된 삽입 조건을 지정할 수 있습니다. 이때, 병합 연산을 위해 두 가지 수준의 필터링 조건이 제공됩니다. 첫 번째 수준은 meger 절의 on 절에 지정된 병합 조건이고, 두 번째 수준은 update 또는 insert 절에 지정된 where 조건입니다. . 이는 병합 작업을 더욱 유연하고 정교하게 만듭니다.

여기서 두 개의 테이블을 생성합니다. 하나는 person 테이블이고 다른 하나는 newpersono 테이블입니다. 두 테이블의 구조는 동일합니다

SQL> create table person(
2  pid number(4),
3  page number(3)
4  );

테이블이 생성되었습니다.

--세 개의 데이터 행 삽입

SQL> insert into person values(1,20);

1개의 행이 생성되었습니다.

SQL> insert into person values(2,21);

1개의 행이 생성되었습니다.

SQL> insert into person values(3,22);

1개의 행이 생성되었습니다.

SQL> create table newperson(
2  pid number(4),
3  page number(3)
4  );

테이블이 생성되었습니다.

--插入三行数据
SQL> insert into newperson values(1,100);

1개의 행이 생성되었습니다.

SQL> insert into newperson values(4,100);

1개의 행이 생성되었습니다.

SQL> insert into newperson values(5,100);

1개의 행이 생성되었습니다.

SQL> select * from person;
PID       PAGE
---------- ----------
1         20
2         21
3         22
SQL> select * from newperson;
PID       PAGE
---------- ----------
1        100
4        100
5        100
SQL> merge into person p1
2  using newperson p2
3  on (p1.pid=p2.pid)
4  when matched then
5    update set p1.page=p2.page
6  when not matched then
7    insert (pid,page) values(p2.pid,p2.page);

3개 행이 병합되었습니다.

--위 SQL문은 person의 pid가 newperson의 pid와 같을 때 해당 페이지를 newperson의 age로 설정하고, 일치하지 않을 경우에는 person에 정규화되지 않은 데이터를 삽입합니다. 실행 결과는 다음과 같습니다.

SQL> select * from person;
PID       PAGE
---------- ----------
1        100
2         21
3         22
5        100
4        100
--newperson表中的数据不会改变:
SQL> select * from newperson;
PID       PAGE
---------- ----------
1        100
4        100
5        100

추천 튜토리얼: "Oracle Video Tutorial"

위 내용은 오라클에서 병합의 사용법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.