본문 바로가기

Database/ORACLE

[ORACLE] 다중 insert - 여러행 한번에 insert하기

반응형

안녕하세요! Plitche(플리체)입니다.
이번 포스팅은 [Oracle] 다중 insert - 여러행 한번에 insert하기 입니다.

Intro

개발을 진행하다 보면, Database에 한 번만 접근하여 여러 행을 insert해주어야 하는 경우가 발생한다. 물론 해당 메소드를 여러번 호출하여 진행 할 수도 있지만, 더 간편한 방법이 있어서 소개하려 한다. dual 더미 테이블을 이용하여 insert하는 방법이며, 모든 칼럼에 대해서 혹은 원하는 특정 칼럼에 대해서만 적용이 가능하다.

테이블 구조 (table)

테이블 명 : EMP

컬럼명 데이터타입
EMP_NAME VARCHAR2
EMP_AGE NUMBER
EMP_GENDER VARCHAR2

 

일반적인 insert 쿼리문 (One row insert query statemet)

INSERT INTO EMP (EMP_NAME, EMP_AGE, EMP_GENDER) VALUES ('김철수', 25, 'M');

위와 같이 칼럼 명을 다 작성해 줄 수도 있으며, 모든 칼럼에 대해 값을 INSERT하는 경우에는 아래처럼 생략도 가능하다.

INSERT INTO EMP VALUES ('김철수', 25, 'M');

만약 일반적인 insert 쿼리문을 이용하여 다중 행을 삽입 할 경우 아래와 같은 코드로 작성해야 하고, 쿼리문이 insert할 행의 개수만큼 실행되어야 함으로 시간도 보다 많이 소요될 수 있다.

  INSERT INTO EMP VALUES ('김철수', 25, 'M');
  INSERT INTO EMP VALUES ('이영희', 30, 'F');
  INSERT INTO EMP VALUES ('박진수', 22, 'M');

다중 insert 쿼리문 (Multiple row insert query statement)

  • 위와 같은 부분을 수정하고 개선하여 insert 쿼리문을 작성한다면, 하나의 쿼리문으로 데이터를 삽입 할 수 있다.
    INSERT ALL
      INTO EMP VALUES ('김철수', 25, 'M')
      INTO EMP VALUES ('이영희', 30, 'F')
      INTO EMP VALUES ('박진수', 22, 'M')
    SELECT *
    FROM DUAL;

일반 insert문과 마찬가지로 원하는 칼럼에만 데이터를 넣기 희망한다면 아래와 같이 칼럼을 지정해주어 insert 할 수 있다.

  INSERT ALL
    INTO EMP (EMP_NAME, EMP_AGE) VALUES ('김철수', 25)
    INTO EMP (EMP_NAME, EMP_AGE) VALUES ('이영희', 30)
    INTO EMP (EMP_NAME, EMP_AGE) VALUES ('박진수', 22)
  SELECT *
  FROM DUAL;

주의

DUAL테이블은 더미 테이블로 아무런 값이 들어가 있지않은 오라클 자체에서 제공되는 테이블이다.

QUERY문의 마지막에서 SELECT * FROM DUAL 을 작성하지 않으면 제대로 실행되지 않으니 주의해야한다.

반응형