데이터베이스에서 INSERT INTO 문은 테이블에 데이터를 삽입할 때 사용됩니다. 오라클 DB에서는 INSERT INTO 문을 활용하여 새 데이터를 추가하거나 기존 데이터를 기반으로 데이터를 삽입할 수 있습니다. 이번 글에서는 INSERT INTO 문법과 다양한 활용 예제를 상세히 설명하겠습니다.
1. INSERT INTO 기본 문법
INSERT INTO는 두 가지 방식으로 사용할 수 있습니다.
- 명시적으로 컬럼 이름을 지정하는 방식
지정한 컬럼에만 데이터를 삽입할 수 있습니다. - INSERT INTO 테이블명 (컬럼1, 컬럼2, 컬럼3) VALUES (값1, 값2, 값3);
- 모든 컬럼에 값을 삽입하는 방식
테이블의 모든 컬럼에 값을 입력해야 합니다. - 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 주의점
- 데이터 타입:
삽입할 값의 데이터 타입이 테이블 컬럼의 데이터 타입과 일치해야 합니다.
예를 들어, 숫자 컬럼에 문자열 데이터를 삽입하면 오류가 발생합니다. - NOT NULL 제약 조건:
테이블의 특정 컬럼이 NOT NULL로 설정되어 있다면 해당 컬럼에 반드시 값을 입력해야 합니다. - 중복 데이터 처리:
기본 키 또는 유니크 키 제약 조건이 있는 경우 중복된 데이터 삽입 시 오류가 발생합니다. - 트랜잭션 관리:
데이터 삽입 작업은 트랜잭션으로 처리됩니다. 필요 시 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에서 데이터를 추가하는 가장 기본적이면서도 강력한 명령어입니다. 기본 문법부터 다중 행 삽입 및 서브쿼리를 활용한 삽입까지 다양한 방식으로 데이터를 처리할 수 있습니다. 실무 환경에서 요구되는 다양한 사례를 연습하여 효율적으로 데이터를 관리해 보세요!
'Database' 카테고리의 다른 글
오라클 DELETE를 활용한 데이터 삭제 (0) | 2024.12.03 |
---|---|
오라클 UPDATE로 데이터 수정하기 (0) | 2024.12.03 |
오라클 DROP TABLE로 테이블 삭제하기 (0) | 2024.12.03 |
오라클 ALTER TABLE로 테이블 수정하기 (0) | 2024.12.03 |
오라클 PRIMARY KEY와 FOREIGN KEY 설정하기 (0) | 2024.12.03 |