SQL 문법 정리 : 데이터조작(INSERT, UPDATE, UPDATE JOIN,DELETE,UPSERT,EXPORT,IMPORT)
INSERT
테이블이 만들어지면 빈 공간이 만들어 지는 것이며 테이블 안에 테이터를 INSERT하는 것이 필요하다.
INSERT
INTO
TABLE_NAME
VALUES
(
VALUE1
,VALUE2
,VLAUE3
,........
)
;
INSERT
INTO
TABLE_NAME
(
COLUMN1
,COLUMN2
)
VALUES
(
VALUE1
,VALUE2
)
;
*테이블을 테이블에 입력하는 경우
CREATE TABLE LINK_TMP AS
SELECT * FROM LINK WHERE 0=1
(#LINK테이블의 스키마(껍데기)만 가져와서 LINK_TMP테이블을 생성한다.)
(#LINK_TMP테이블 구조는 LINK와 같고 데이터는 0건이 된다.)
INSERT
INTO LINK_TMP
SELECT *
FROM LINK
;
(#LINK_TMP 테치블에 입력SELECT문을 작성함)
UPDATE
테이블의 존재하는 데이터를 수정하는 작업이다. 업무를 처리하는데 필수적인 것이며 동시성에 유의해야 한다.
UPDATE는 대상 행에 대해서 락을 잡는다.
락이란 다른 사용자는 해당 행에 대해서 작업을 하지 못한다는 것이다. 즉 UPDATE를 한 후 재빨리 COMMIT을 하지 않는다면 RDBMS의 동시성이 낮아진다.
UPDATE
TABLE_NAME
SET COLUMN_1 = VALUES1
,COLUMN_2 = VALUE2
WHERE 조건 #대상조건
;
(#UPDATE할 테이블 지정 수정할 컬럼 및 값 입력)
UPDATE JOIN
UPDATE 시 다른 테이블의 내용을 참조 하고 싶을 때 UPDATE JOIN문을 사용한다. 복잡한 업무를 처리하는데 매우 유용한 방법이다
UPDATE
TARGET_TABLE A
SET A.COLUMN_1 = 표현식
FROM REF_TABLE B #참조테이블 지정
WHERE A.COLUMN_1 = B.CLOUMN_1;
DELETE
DELETE문은 테이블에서 특정 데이터를 삭제하거나 테이블 내에 존재하는 모든 데이터를 삭제 할 수 있다.
DELETE
FROM
TARGET_TABLE A
WHERE 조건식
;
DELETE FROM
LINK_TMP A
USING LINK B #LINK테이블과조인
WHERE A.ID = B.ID
;
UPSERT
INSERT를 시도할 때 조건(상황)에 따라 UPDATE를 할수 있는 구문이다. 복잡한 업무 처리에 자주 사용한다.
INSERT INTO
TABLE_NAME(COLUMN_1) VALUES(VALUE_1)
ON CONFLICT TARGET ACTION;
(#INSERT 시도, 충돌시 다른 액션)
INSERT INTO
CUSTOMERS (NAME, EMAIL)
VALUES #기존에 존재하는 NAME
(
'Microsft','hotline@microsfot.com'
)
ON CONFLICT (NAME) 충돌시(기존에 존재할 경우)
DO NOTHING; #아무것도 안함
UPSERT - UPDATE
INSERT INTO CUSTOMERS (NAME, EMAIL)
VALUES
(
'Microsft','hotline@microsfot.com'
) ON CONFLICT (NAME)
DO UPDATE
SET EMAIL = EXCLUDED.EMAIL ||
';' ||
CUSTOMERS.EMAIL
;
(#충돌시(기존에 존재할 경우) UPDATE함)
(#EXCLUDED.EMAIL은 위에서 INSERT시도한 EMAIL값을 가리킴)
EXPORT
데이블의 데이터를 다른 형태의 데이터로 추출하는 작업니다.
대표적으로 CSV형식으로 가장 많이 추출한다.
COPY CATEGORY(CATEGORY_ID, NAME, LAST_UPDATE)
#추출할 테이블과 컬럼을 지정한다
TO 'C:/tep/DB_CATEGORY.CSV'
#추출할 데이터를 저장할 파일을 지정한다
DELIMITER ',' #구분자 지정
CSV HEADER #파일형식을 지정한다, HEADER 없이는 생략
;
IMPORT
IMPORT는 다른 형식의 데이터를 테이블에 넣는 작업을 말한다.
데이터 구축시 자주 사용 된다.
COPY CATEGORY_IMPORT(CATEGORY, 'NAME', LAST_UPDATE)
FROM 'C:/tep/DB_CATEGORY.CSV'
DELIMITER ',' #'|'
CSV HEADER
;
(# 컬럼명(헤더)이 존재하지 않으므로 반드시 HEADER를 제거해야 한다.)
(# HEADER를 제거하지 않을 경우 가장 첫번째 데이터를 헤더로 인삭하여 한건이 누락된다)
'SQL' 카테고리의 다른 글
SQL 문법정리 : 테이블생성 (0) | 2021.02.22 |
---|---|
SQL 문법정리 : 데이터타입Boolean,Character,Numeric,Time, Arrays, JSON (0) | 2021.02.22 |
SQL 문법 정리 : SQL의 종류(DDL,DML,DCL,TCL) (0) | 2021.02.19 |
SQL 문법 정리 : 서브커리(중첩 서브쿼리,인라인 뷰,스칼라서브쿼리, ALL,ANY,EXISTS) (0) | 2021.02.19 |
SQL 문법 정리 : 집합연산자(UNION,UNION ALL,INTERSECT,EXCEPT) (0) | 2021.02.19 |