본문 바로가기
Database

오라클 DB에서 INSERT INTO로 데이터 추가하기

by 굿센스굿 2024. 12. 3.
반응형


데이터베이스에서 INSERT INTO 문은 테이블에 데이터를 삽입할 때 사용됩니다. 오라클 DB에서는 INSERT INTO 문을 활용하여 새 데이터를 추가하거나 기존 데이터를 기반으로 데이터를 삽입할 수 있습니다. 이번 글에서는 INSERT INTO 문법과 다양한 활용 예제를 상세히 설명하겠습니다.


1. INSERT INTO 기본 문법

INSERT INTO는 두 가지 방식으로 사용할 수 있습니다.

  1. 명시적으로 컬럼 이름을 지정하는 방식
    지정한 컬럼에만 데이터를 삽입할 수 있습니다.
  2. INSERT INTO 테이블명 (컬럼1, 컬럼2, 컬럼3) VALUES (값1, 값2, 값3);
  3. 모든 컬럼에 값을 삽입하는 방식
    테이블의 모든 컬럼에 값을 입력해야 합니다.
  4. INSERT INTO 테이블명 VALUES (값1, 값2, 값3, ...);

2. INSERT INTO 사용 예제

예제 1: 직원 데이터 추가하기
employees 테이블에 새 직원 데이터를 삽입합니다.

INSERT INTO employees (employee_id, first_name, last_name, hire_date, job_id, salary)
VALUES (101, 'John', 'Doe', TO_DATE('2024-12-01', 'YYYY-MM-DD'), 'IT_PROG', 5000);
  • 설명:
    • TO_DATE 함수는 날짜 데이터를 지정된 형식으로 변환합니다.
    • 지정된 컬럼에만 값을 삽입하므로 순서와 개수를 일치시켜야 합니다.

예제 2: 모든 컬럼에 데이터 삽입하기
테이블의 모든 컬럼에 데이터를 삽입합니다.

INSERT INTO departments
VALUES (10, 'Administration', 200, 1700);
  • 설명:
    • 테이블의 모든 컬럼 순서에 맞게 값을 입력해야 하며, NULL 값을 허용하는 컬럼은 생략 가능합니다.

3. SELECT 문을 사용한 INSERT

기존 테이블 데이터를 활용하여 새 데이터를 추가할 때 사용합니다.

구문:

INSERT INTO 테이블명 (컬럼1, 컬럼2, 컬럼3)
SELECT 값1, 값2, 값3
FROM 다른_테이블
WHERE 조건;

예제:
departments 테이블의 부서 이름을 department_history 테이블로 복사합니다.

INSERT INTO department_history (department_id, department_name)
SELECT department_id, department_name
FROM departments
WHERE location_id = 1700;
  • 설명:
    • SELECT 문으로 원하는 데이터를 가져와 삽입합니다.
    • 복사 조건을 WHERE 절로 설정할 수 있습니다.

4. 서브쿼리를 사용한 INSERT

서브쿼리를 사용하여 동적으로 데이터를 추가할 수 있습니다.

예제:
employees 테이블에서 IT 부서 직원 정보를 it_employees 테이블에 삽입합니다.

INSERT INTO it_employees (employee_id, first_name, last_name, department_id)
SELECT employee_id, first_name, last_name, department_id
FROM employees
WHERE department_id = 60;

5. INSERT ALL: 다중 행 삽입

INSERT ALL은 여러 행을 한 번에 삽입할 때 사용합니다.

구문:

INSERT ALL
INTO 테이블명 (컬럼1, 컬럼2) VALUES (값1, 값2)
INTO 테이블명 (컬럼1, 컬럼2) VALUES (값3, 값4)
SELECT * FROM DUAL;

예제:
여러 부서 데이터를 한 번에 삽입합니다.

INSERT ALL
INTO departments (department_id, department_name) VALUES (101, 'HR')
INTO departments (department_id, department_name) VALUES (102, 'Finance')
INTO departments (department_id, department_name) VALUES (103, 'Marketing')
SELECT * FROM DUAL;
  • 설명:
    • DUAL은 오라클에서 단일 행 결과를 반환하는 가상 테이블입니다.
    • 여러 행 삽입을 효율적으로 처리할 수 있습니다.

6. INSERT INTO 주의점

  1. 데이터 타입:
    삽입할 값의 데이터 타입이 테이블 컬럼의 데이터 타입과 일치해야 합니다.
    예를 들어, 숫자 컬럼에 문자열 데이터를 삽입하면 오류가 발생합니다.
  2. NOT NULL 제약 조건:
    테이블의 특정 컬럼이 NOT NULL로 설정되어 있다면 해당 컬럼에 반드시 값을 입력해야 합니다.
  3. 중복 데이터 처리:
    기본 키 또는 유니크 키 제약 조건이 있는 경우 중복된 데이터 삽입 시 오류가 발생합니다.
  4. 트랜잭션 관리:
    데이터 삽입 작업은 트랜잭션으로 처리됩니다. 필요 시 COMMIT 또는 ROLLBACK 명령을 사용하여 작업을 저장하거나 취소할 수 있습니다.

7. 실제 사례로 배우는 INSERT INTO

사례 1: 신규 고객 데이터 추가

INSERT INTO customers (customer_id, name, email, registration_date)
VALUES (1001, 'Alice Kim', 'alice.kim@example.com', SYSDATE);
  • 신규 고객 등록 시 현재 날짜를 SYSDATE 함수로 입력.

사례 2: 프로모션 정보 복사

INSERT INTO promotions (promotion_id, description, start_date, end_date)
SELECT promotion_id, description, start_date, end_date
FROM past_promotions
WHERE end_date >= SYSDATE;
  • 종료되지 않은 프로모션 데이터를 새로운 테이블로 복사.

사례 3: 다중 행 삽입으로 상품 등록

INSERT ALL
INTO products (product_id, product_name, price) VALUES (201, 'Laptop', 1200)
INTO products (product_id, product_name, price) VALUES (202, 'Tablet', 600)
INTO products (product_id, product_name, price) VALUES (203, 'Smartphone', 800)
SELECT * FROM DUAL;
  • 한 번의 작업으로 여러 상품 데이터를 추가.

결론

INSERT INTO는 오라클 DB에서 데이터를 추가하는 가장 기본적이면서도 강력한 명령어입니다. 기본 문법부터 다중 행 삽입 및 서브쿼리를 활용한 삽입까지 다양한 방식으로 데이터를 처리할 수 있습니다. 실무 환경에서 요구되는 다양한 사례를 연습하여 효율적으로 데이터를 관리해 보세요!

반응형