카테고리 없음

쿼리 INSERT문

deadlock 2025. 4. 13. 19:56

INSERT문 기초

INSERT문은 데이터베이스 테이블에 새로운 행(row)을 추가할 때 사용하는 SQL 명령어입니다. 다음은 INSERT문의 기본 내용입니다.

기본 구문

INSERT문은 주로 두 가지 형태로 사용됩니다:

 
sql
-- 형태 1: 열 이름을 명시하는 방법
INSERT INTO 테이블_이름 (열1, 열2, ...)
VALUES (값1, 값2, ...);

-- 형태 2: 모든 열에 값을 순서대로 입력하는 방법
INSERT INTO 테이블_이름
VALUES (값1, 값2, ...);

사용 예제

열 이름을 명시하는 방법

 
sql
INSERT INTO employees (employee_id, first_name, last_name, email, hire_date, job_id)
VALUES (207, 'Jane', 'Doe', 'JDOE', TO_DATE('2023-04-13', 'YYYY-MM-DD'), 'IT_PROG');

모든 열에 값을 입력하는 방법

 
sql
INSERT INTO departments
VALUES (280, 'Data Science', 100, 1700);

주요 특징

1. NULL 값 처리

  • 명시적으로 NULL 입력 가능: INSERT INTO employees (employee_id, first_name, last_name) VALUES (208, 'John', NULL);
  • 열 목록에서 생략하면 해당 열은 NULL 또는 기본값으로 설정됨

2. 기본값(DEFAULT) 사용

 
sql
-- DEFAULT 키워드를 사용하여 테이블에 정의된 기본값 사용
INSERT INTO employees (employee_id, first_name, last_name, hire_date)
VALUES (209, 'Mary', 'Johnson', DEFAULT);

3. 서브쿼리를 이용한 다중 행 삽입

 
sql
-- 다른 테이블의 데이터를 이용한 삽입
INSERT INTO emp_history (employee_id, start_date, end_date, job_id)
SELECT employee_id, hire_date, SYSDATE, job_id
FROM employees
WHERE department_id = 90;

4. 다중 행 삽입

 
sql
-- 오라클 12c 이상에서 지원
INSERT ALL
  INTO employees VALUES (210, 'David', 'Kim', 'DKIM', '515.123.4567', SYSDATE, 'IT_PROG', 6000, NULL, 103, 60)
  INTO employees VALUES (211, 'Sarah', 'Park', 'SPARK', '515.123.4568', SYSDATE, 'IT_PROG', 6500, NULL, 103, 60)
SELECT * FROM dual;

주의사항

  1. 기본 키(Primary Key): 중복된 기본 키 값으로 INSERT하면 오류가 발생합니다.
  2. 외래 키(Foreign Key): 참조 무결성을 위반하는 값을 입력하면 오류가 발생합니다.
  3. 데이터 타입: 열의 데이터 타입과 일치하는 값을 입력해야 합니다.
  4. NOT NULL 제약조건: NOT NULL 제약조건이 있는 열은 반드시 값을 입력해야 합니다.
  5. 날짜 형식: 날짜를 입력할 때는 TO_DATE 함수 사용을 권장합니다.
     
    sql
    INSERT INTO employees (employee_id, first_name, hire_date)
    VALUES (212, 'Robert', TO_DATE('2023-04-13', 'YYYY-MM-DD'));

트랜잭션 관리

INSERT문 실행 후에는 COMMIT 또는 ROLLBACK을 사용하여 트랜잭션을 완료해야 합니다:

 
sql
-- 변경 사항 저장
COMMIT;

-- 변경 사항 취소
ROLLBACK;

이 기본 내용을 바탕으로 오라클 DB에서 INSERT문을 활용하여 데이터를 추가할 수 있습니다.

 
재시도

Claude는 아직 생성한 코드를 실행할 수 없습니다.