INSERT INTO [table] ([column1], [column2]) VALUES ([value1], [value2]);
INSERT INTO [table] VALUES ([value1], [value2])
INSERT INTO [table] SELECT * FROM TABLE2
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 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