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 구문을 사용하면 한 테이블에서 다른 테이블로 데이터를 효율적으로 이동할 수 있습니다.
반응형