오라클 dml 예제

모든 Oracle 데이터베이스/ 응용 프로그램 전문가 만나기 MERGE 문을 사용하여 한 테이블에서 행을 선택하여 업데이트하거나 다른 테이블에 삽입합니다. 대상 테이블을 업데이트할지 삽입할지 여부는 ON 절의 조건을 기반으로 합니다. 그것은 오라클 Ver. 9i의 새로운 기능입니다. UPSERT 즉 업데이트와 삽입의 조합으로도 알려져 있습니다. Oracle INSERT 문은 테이블에 새 행을 추가하는 데 사용됩니다. 이 설명에 익숙해지기 전에 Oracle WHERE 절을 사용하지 않고 Oracle UPDATE 문을 실행하면 열의 모든 필드가 업데이트됩니다. Oracle MERGE 문은 두 테이블 간의 차이점에 따라 두 테이블의 데이터를 동기화하는 데 사용되며, 동일한 행이 두 테이블(예: 동일한 고객 ID가 있는 행)에 있는 경우 각 행마다 서로 다른 값(각 테이블은 다른 테이블을 보유함)을 유지합니다. 해당 고객의 전화 번호), UPDATE 작업이 실행됩니다.

행이 한 테이블에만 있는 경우 INSERT 작업이 실행됩니다. 어떤 상황에서 문제에 대한 가장 명백한 해결책은 DML 문입니다 (INSERT … SELECT, UPDATE, DELETE)를 선택하지만 예외에 반응하는 방식으로 인해 DML을 피할 수 있습니다. 기본적으로 DML 문이 실패하면 오류가 감지되기 전에 성공적으로 처리된 행 수에 관계없이 전체 문이 롤백됩니다. 과거에는 이 문제를 해결할 수 있는 유일한 방법은 각 행을 개별적으로 처리하는 것이었으며, 바람직하게는 FORALL 및 SAVE EXCEPTIONS 절을 사용하는 대량 작업을 사용하는 것이 좋습니다. Oracle 10g 데이터베이스 릴리스 2에서는 이 문제를 해결하기 위해 DML 오류 로깅 기능이 도입되었습니다. 대부분의 INSERT, UPDATE, MERGE 및 DELETE 문에 적절한 LOG 오류 절을 추가하면 오류에 관계없이 작업을 완료할 수 있습니다. 이 문서에서는 각 DML 문 유형의 예제와 함께 DML 오류 로깅 기능에 대한 개요를 제공합니다. 오라클은 응용 프로그램 프로그램에서 트랜잭션을 커밋하거나 롤백하여 명시적으로 종료할 것을 권장합니다. 트랜잭션은 Oracle Database가 하나의 단위로 취급하는 하나 이상의 SQL 문의 시퀀스입니다. 여러 작업을 단위로 수행해야 하는 비즈니스 프로세스를 모델링하려면 트랜잭션이 필요합니다.

이 SQL 자습서에서는 Oracle DML 문에 중점을 둡니다. DML(데이터 조작 언어) 문은 데이터 검색 및 조작에 사용되는 SQL 언어의 요소입니다. 이러한 문을 사용하면 새 행 추가, 기존 행 업데이트 및 삭제, 테이블 병합 등과 같은 작업을 수행할 수 있습니다. 여러 필드를 동시에 업데이트할 수 있습니다: 제품 번호 100의 가격 및 이름을 수정하면 다음 명령문은 앞의 예와 동일한 효과를 가지지만 하위 쿼리를 사용합니다. 을 참조하십시오. 응용 프로그램에서 이 프로세스를 모델링하려면 INSERT 및 UPDATE 문을 단일 트랜잭션으로 그룹화해야 합니다. 하위 쿼리는 Oracle UPDATE 문에 중첩될 수 있습니다. 예를 들어 범주 60에 있는 제품의 가격을 업데이트하여 범주 50에 속하는 제품의 평균 가격과 일치하도록 업데이트합니다. 다음 문을 줄 수 있습니다.

예를 들어 직원 없음 102의 이름을 `사미`에서 `Mohd Sami`로 변경하고 급여를 10% 인상하려고 합니다. 그런 다음 문이 됩니다. Oracle UPDATE 문은 기존 행을 수정하는 데 사용됩니다. 예를 들어 empno가 102인 직원을 삭제합니다. 다음은 오라클에서 사용할 수 있는 DML 문입니다. DML 문이 포함된 트랜잭션을 커밋할 때까지 DML 문의 효과는 영구적이지 않습니다. 트랜잭션은 Oracle Database가 하나의 단위로 취급하는 SQL 문의 시퀀스입니다(단일 DML 명령문일 수 있음).