ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Oracle - Insert 개념정리
    DataBase/Oracle 2024. 8. 27. 22:04
    반응형

    1. 기본적인 INSERT 문

    가장 단순한 형태로, 특정 테이블에 데이터를 삽입하는 문장은 다음과 같습니다.

    INSERT INTO 테이블_이름 (컬럼1, 컬럼2, 컬럼3, ...)
    VALUES (값1, 값2, 값3, ...);

     

    • 테이블_이름: 데이터를 삽입할 테이블의 이름입니다.
    • 컬럼1, 컬럼2, ...: 데이터를 삽입할 컬럼들의 이름입니다.
    • 값1, 값2, ...: 해당 컬럼에 삽입할 값들입니다. 각각의 값은 해당 컬럼의 데이터 타입과 일치해야 합니다.

    예를 들어, EMPLOYEES라는 테이블에 새로운 직원을 추가하려면 다음과 같이 작성할 수 있습니다:

    INSERT INTO EMPLOYEES (EMPLOYEE_ID, FIRST_NAME, LAST_NAME, DEPARTMENT_ID)
    VALUES (101, 'John', 'Doe', 10);

     

     

     

    2. 컬럼 명시 없이 INSERT 문 사용하기

    만약 모든 컬럼에 데이터를 삽입할 경우, 컬럼 목록을 생략할 수 있습니다. 이 경우 VALUES 절에 지정된 값들이 테이블의 모든 컬럼에 순서대로 매핑됩니다.

    INSERT INTO 테이블_이름
    VALUES (값1, 값2, 값3, ...);

    이 방법은 테이블의 모든 컬럼에 대해 값을 제공할 때 유용합니다. 하지만 테이블의 구조가 변경될 경우 문제를 일으킬 수 있으므로 권장되지는 않습니다.

     

     

    3. 서브쿼리를 사용한 INSERT 문

    또한, 서브쿼리(subquery)를 사용하여 다른 테이블이나 쿼리의 결과를 기반으로 데이터를 삽입할 수도 있습니다.

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

    예를 들어, TEMP_EMPLOYEES 테이블에 있는 데이터를 EMPLOYEES 테이블로 옮기려면 다음과 같이 할 수 있습니다:

    INSERT INTO EMPLOYEES (EMPLOYEE_ID, FIRST_NAME, LAST_NAME, DEPARTMENT_ID)
    SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, DEPARTMENT_ID
    FROM TEMP_EMPLOYEES
    WHERE DEPARTMENT_ID = 10;

     

     

    4. 다중 행 삽입

    오라클에서는 한 번의 INSERT 문으로 여러 행을 삽입할 수도 있습니다.

    INSERT ALL
    INTO EMPLOYEES (EMPLOYEE_ID, FIRST_NAME, LAST_NAME, DEPARTMENT_ID) VALUES (102, 'Alice', 'Smith', 20)
    INTO EMPLOYEES (EMPLOYEE_ID, FIRST_NAME, LAST_NAME, DEPARTMENT_ID) VALUES (103, 'Bob', 'Johnson', 30)
    SELECT * FROM DUAL;

    이 방식은 여러 행을 한 번에 삽입할 때 유용합니다.

     

     

    5. 삽입된 데이터 확인

    오라클에서는 RETURNING 절을 사용하여 INSERT 문이 실행된 후 삽입된 데이터를 반환할 수 있습니다.

    INSERT INTO EMPLOYEES (EMPLOYEE_ID, FIRST_NAME, LAST_NAME, DEPARTMENT_ID)
    VALUES (104, 'Jane', 'Doe', 40)
    RETURNING EMPLOYEE_ID INTO :new_employee_id;

    여기서 :new_employee_id는 반환된 값을 저장할 변수입니다.

    반응형

    댓글

Designed by Tistory.