SQL-DML

박현·2022년 11월 1일
0

SQL

목록 보기
28/34
  • DML(Data Manipulation Language) : 데이터조작어

INSERT

1. 단일 행 INSERT 문

: values절을 포함하며, 한 번에 한 행만 입력된다.

  • 기본형태
INSERT INTO 테이블명(컬럼1, 컬럼2, ...) VALUES(1,2,...);
  • INTO절의 컬럼명과 VALUES절의 값을 서로 1:1로 매핑해 기술한다.
  • 컬럼명의 기술순서는 테이블에 정의된 컬럼순서와 동일할 필요는 없다.
  • INTO절에 기술하지 않은 컬럼은 디폴트로 NULL값이 입력된다.
  • Primary key 제약 또는 Not NULL제약이 지정된 컬럼은 NULL값 입력을 허용하지 않으므로 오류가 발생.

2. 서브쿼리를 이용한 다중 행 INSERT문

: INSERT문에 서브쿼리를 사용하면 서브쿼리의 결과를 테이블에 입력할 수 있다. 서브쿼리의 결과가 다중행이면, 한번에 여러건이 입력된다. 단 INTO절의 컬럼명 개수와 서브쿼리의 SELECT절 컬럼개수가 일치해야한다.

INSERT INTO 테이블명[(컬럼1, 컬럼2, ...)]
서브쿼리;

UPDATE

: WHERE절을 사용하지 않는다면 테이블의 전체 데이터가 수정된다.

  • 기본형태
UPDATE 테이블명 
   SET 수정할컬럼명1 = 수정될새로운값1 
 WHERE 수정대상 식별 조건식;
  • UPDATE문의 SET절에 서브쿼리를 사용하면 서브쿼리의 결과로 값이 수정된다.
  • UPDATE문의 WHERE절에 서브쿼리를 사용해 수정될 행을 식별할 수도 있다.
    수정될 행을 식별함으로써 불필요한 수정을 방지할 수 있다.

DELETE

: 테이블에 저장된 데이터가 더이상 필요 없게 됐을 경우 데이터 삭제를 수행한다.

  • 기본형태
DELETE FROM 테이블명
 WHERE 삭제 대상 식별 조건식;
  • DELETE문의 WHERE절에 서브 쿼리를 사용하면, 다른 테이블을 참조해 삭제할 행을 식별할 수 있다.

MERGE

: 새로운 행을 입력하거나, 기존 행을 수정하는 작업을 한번에 할 수 있다.
ON절의 조인조건에 따라 성공한 행들에 대해서는 WHEN MATCHED THEN 아래 UPDATE문을 수행하고 조인에 실패한 행들에 대해서는 WHEN NOT MATCHED THEN 아래 INSERT구문을 수행한다.

  • 기본형태
MERGE
 INTO 타켓테이블
USING 소스 테이블
   ON (조인조건식)
 WHEN MATCHED THEN
   UPDATE
      SET 수정할컬럼명1 = 수정될 새로운값 1
 WHEN NOT MATCHED THEN
   INSERT [(컬럼1, 컬럼2, ....)]
   VALUES (1,2, ....);
  • MERGE문의 USING절에 소스테이블 대신 서브쿼리를 사용해 입력,수정할 수도 있다.

0개의 댓글