Oracle DML, DDL 정리

8472 단어 oracleoracle

DML

INSERT

  • 총 3가지 방법이 있다.
INSERT INTO [table] ([column1], [column2]) VALUES ([value1], [value2]);
INSERT INTO [table] VALUES ([value1], [value2])
INSERT INTO [table] SELECT * FROM TABLE2

MERGE USING

  • 예제
MERGE INTO CUSTOMER C
USING
(
      SELECT USERNO
           , USERNAME
           , ADDRESS
           , PHONE
       FROM NEW_JOIN
      WHERE INPUT_DATE = '20170724'
) N
ON ( C.USERNO = N.USERNO)
WHEN MATCHED THEN
UPDATE
SET C.USERNAME = N.USERNAME
  , C.ADDRESS  = N.ADDRESS
  , C.PHONE    = N.PHONE
WHEN NOT MATCHED THEN
INSERT ( USERNO
       , USERNAME
       , ADDRESS
       , PHONE
       )
 VALUES (
         N.USERNO
       , N.USERNAME
       , N.ADDRESS
       , N.PHONE
 )
  • MERGE USING TABLE: INSERT 또는 UPDATE 할 테이블을 지정해준다.

  • USING : 원하는 결과를 추출하기 위한 SELECT 구문. 해당 구문에서 나온 결과를 INSERT 또는 UPDATE 를 한다.

  • ON : SELECT 한 결과와 입력하고 싶은 테이블의 UNIQUE 한 값을 매칭하는 연결고리 (주로 KEY 값을 사용한다)

  • WHEN MATCHED THEN: SELECT의 결과가 INSERT할 테이블에 값이 이미 존재 할 경우 실행

  • WHEN NOT MATCHED THEN: SELECT의 결과가 INSERT할 테이블에 값이 없는 경우 실행한다.

  • UPDATE만 하고 싶은 경우에는 WHEN NOT MATCHED THEN을 제거하면 된다.

MERGE INTO CUSTOMER C
USING
(
      SELECT USERNO
           , USERNAME
           , ADDRESS
           , PHONE
       FROM NEW_JOIN
      WHERE INPUT_DATE = '20170724'
) N
ON ( C.USERNO = N.USERNO)
WHEN MATCHED THEN
UPDATE
SET C.USERNAME = N.USERNAME
  , C.ADDRESS  = N.ADDRESS
  , C.PHONE    = N.PHONE
  • MERGE UPDATE DELETE 예제
MERGE INTO CUSTOMER C
USING
(
      SELECT USERNO
           , USERNAME
           , ADDRESS
           , PHONE
       FROM NEW_JOIN
      WHERE INPUT_DATE = '20170724'
) N
ON ( C.USERNO = N.USERNO)
WHEN MATCHED THEN
UPDATE
SET C.USERNAME = N.USERNAME
  , C.ADDRESS  = N.ADDRESS
  , C.PHONE    = N.PHONE
DELETE WHERE SAL >= 3000

좋은 웹페이지 즐겨찾기