IT/DB

MYSQL, MSSQL INSERT INTO ... SELECT 구문

Dev. Sean 2024. 1. 21. 23:53
반응형

INSERT INTO ... SELECT 구문을 활용하여 데이터를 한 테이블에서 다른 테이블로 쉽게 이동하는 방법

 

시나리오 설명

상상해보죠, 우리에게는 employees former_employees 두 개의 테이블이 있다고 합니다. 

employees 테이블은 현재 직원들의 정보를, former_employees는 이전 직원들의 정보를 저장합니다.

이제, 우리의 목표는 employees 테이블에서 특정 조건을 만족하는 직원들을 former_employees 테이블로 이동시키는 것입니다.

테이블 구조

  • employees
    • id: 직원 ID
    • name: 이름
    • department: 부서
    • hire_date: 고용 날짜
  • former_employees
    • id: 직원 ID
    • name: 이름
    • department: 부서
    • end_date: 퇴사 날짜

INSERT INTO ... SELECT 구문 사용 예시

아래는 employees 테이블에서 2024년 이전에 고용된 모든 직원을 former_employees 테이블로 이동시키는 SQL 문의 예시입니다. 이 경우, end_date는 현재 날짜로 설정됩니다.

 

INSERT INTO former_employees (id, name, department, end_date)
SELECT id, name, department, CURDATE()
FROM employees
WHERE YEAR(hire_date) < 2024;

 

작동 원리

  • INSERT INTO former_employees (...): former_employees 테이블에 데이터를 삽입하겠다고 선언합니다.
  • SELECT id, name, department, CURDATE() FROM employees WHERE YEAR(hire_date) < 2024: employees 테이블에서 2024년 이전에 고용된 직원들의 id, name, department를 선택하고, CURDATE() 함수를 사용하여 현재 날짜를 end_date로 설정합니다.

이처럼 INSERT INTO ... SELECT 구문을 사용하면 한 테이블에서 다른 테이블로 데이터를 효율적으로 이동할 수 있습니다. 

반응형