728x90

Oracle Database는 고성능 데이터베이스 시스템으로서, 다양한 방식의 데이터를 다루기 위한 SQL 구문을 지원합니다. 이 글에서는 데이터 입력의 핵심인 INSERT 문에 대해 설명하고, 개발자들이 실무에서 바로 사용할 수 있는 예제를 중심으로 정리하였습니다.
1. INSERT 문이란?
INSERT 문은 Oracle 데이터베이스 테이블에 새로운 레코드(행)를 추가할 때 사용하는 SQL 명령어입니다. 다음은 가장 기본적인 문법입니다.
INSERT INTO 테이블명 (컬럼1, 컬럼2, ...)
VALUES (값1, 값2, ...);
2. 단일 행 삽입 예제
다음은 employees 테이블에 새로운 직원 정보를 추가하는 예입니다.
INSERT INTO employees (employee_id, first_name, last_name, hire_date, salary)
VALUES (207, 'LEE', 'JAEHUN', TO_DATE('2025-06-01', 'YYYY-MM-DD'), 5000);
3. 모든 칼럼에 값을 넣는 경우
모든 칼럼에 값을 입력할 때는 칼럼명을 생략할 수 있습니다.
INSERT INTO employees
VALUES (208, 'PARK', 'SOOJIN', TO_DATE('2025-06-02', 'YYYY-MM-DD'), 4500);
주의: 테이블에 정의된 칼럼 순서와 정확히 일치해야 하며, NOT NULL 제약 조건도 확인해야 합니다.
4. 날짜/문자/숫자 형식 주의사항
- 날짜형: TO_DATE 함수 사용 (예:
TO_DATE('2025-01-01', 'YYYY-MM-DD')) - 문자형: 홑따옴표(')로 감싸기
- 숫자형: 따옴표 없이 입력
5. 서브쿼리를 이용한 INSERT
다른 테이블에서 데이터를 조회한 뒤 결과를 삽입할 수 있습니다.
INSERT INTO employees_backup (employee_id, first_name, last_name)
SELECT employee_id, first_name, last_name
FROM employees
WHERE department_id = 50;
6. INSERT ALL: 다중 행 다중 테이블 삽입
INSERT ALL 구문은 여러 테이블 또는 한 테이블에 다중 행을 한 번에 입력할 수 있는 기능입니다.
INSERT ALL
INTO emp_log (emp_id, log_date) VALUES (101, SYSDATE)
INTO audit_log (log_type, description) VALUES ('INSERT', 'New Employee')
SELECT * FROM dual;
7. INSERT FIRST: 조건별 분기 삽입
INSERT FIRST
WHEN salary > 5000 THEN
INTO high_salary_employees VALUES (employee_id, salary)
WHEN salary <= 5000 THEN
INTO low_salary_employees VALUES (employee_id, salary)
SELECT employee_id, salary FROM employees;
조건에 따라 다른 테이블로 데이터를 분기 삽입할 수 있습니다.
8. 시퀀스를 활용한 INSERT
오라클에서는 기본 키 생성을 위해 시퀀스를 자주 사용합니다.
INSERT INTO employees (
employee_id, first_name, last_name, hire_date, salary)
VALUES (
emp_seq.NEXTVAL, 'KIM', 'YUNA', SYSDATE, 5500);
9. INSERT + RETURNING INTO
입력과 동시에 생성된 값을 변수로 받을 수 있는 구문입니다. PL/SQL에서 자주 사용됩니다.
DECLARE
v_id NUMBER;
BEGIN
INSERT INTO employees (employee_id, first_name, salary)
VALUES (emp_seq.NEXTVAL, 'SEO', 6000)
RETURNING employee_id INTO v_id;
END;
10. INSERT 예외 처리와 트러블슈팅
- ORA-00001: 고유 제약 조건 위반 – 이미 존재하는 PRIMARY KEY 사용 시 발생
- ORA-01400: NOT NULL 칼럼에 NULL 입력 – 필수 칼럼 확인 필요
- ORA-00947: 값 개수 불일치 – 칼럼 개수와 VALUES 개수 확인
11. 트랜잭션 관리
INSERT 작업 후 반드시 COMMIT 또는 ROLLBACK을 통해 트랜잭션을 마무리해야 합니다.
COMMIT; -- 데이터 확정 저장
ROLLBACK; -- 변경 내용 취소
12. INSERT 성능 팁
- BULK INSERT 시
FORALL또는INSERT /*+ APPEND */힌트 활용 - 로그 최소화를 위해 NOLOGGING 설정 고려
- 대량 INSERT 전 인덱스 비활성화 후 재생성 검토
참고 출처
- Oracle 공식 문서
- Oracle Insert Tutorial
- 『오라클 PL/SQL 프로그래밍 6판』, 이지스퍼블리싱
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] UPDATE() 기본 문법부터 실전 예제까지 완전 정리 (0) | 2025.06.08 |
|---|---|
| [ORACLE] MERGE() 문법 완전 정리 : INSERT와 UPDATE를 동시에 처리하기 (0) | 2025.06.08 |
| [ORACLE] SELECT()로 데이터 조회하기 : 실무에서 자주 쓰는 패턴 (0) | 2025.06.08 |
| [ORACLE] LNNVL() 함수 활용 예제 모음과 실무 적용 법 (0) | 2025.06.07 |
| [ORACLE] USER() 함수 개념 정리 및 실습 가이드 (0) | 2025.06.07 |