SQL - Insert Into Select: 초보자를 위한 종합 가이드

안녕하세요, SQL 열정가 여러분! SQL의 Insert Into Select 문을 다루는 흥미로운 여정을 안내해 드리게 되어 기쁩니다. 컴퓨터 과학을 가르쳐온 경험을 바탕으로 말씀드리건다면, 이 개념을 마스터하시면 데이터베이스 관리 기술에서 게임 체인저가 될 것입니다. 그麼, 시작해 보겠습니다!

SQL - Insert Into Select

The Insert Into... Select Statement: 당신의 데이터의 새로운 최고 친구

무엇인가요?

Insert Into Select 문은 SQL에서 마법의 지팡이 같은 존재입니다. 하나의 테이블에서 데이터를 복사하여 다른 테이블로 일거에 삽입할 수 있습니다. 생각해 보세요. 새로운 집으로 이사할 때, 각 아이템을 하나씩 들고 이사하는 대신 이사 트럭을 사용하여 모든 것을 한 번에 옮기는 것처럼, Insert Into Select는 데이터를 처리하는 데 그런 역할을 합니다!

기본 문법

먼저 기본 구조를 알아보겠습니다:

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;

각 부분의 역할은 다음과 같습니다:

  • INSERT INTO table2: 여기서 데이터를 이동시키는 곳입니다.
  • (column1, column2, column3, ...): 새로운 테이블의 열입니다.
  • SELECT: 이동하고 싶은 데이터를 선택하는 곳입니다.
  • FROM table1: 데이터의 원본입니다.
  • WHERE condition: 선택 사항이지만, 이동할 데이터를 필터링하는 데 사용합니다.

간단한 예제

두 개의 테이블 old_employeesnew_employees가 있다고 가정해 보겠습니다. 30세 이상인 모든 직원을 새로운 테이블로 이동하고 싶습니다.

INSERT INTO new_employees (id, name, age, department)
SELECT id, name, age, department
FROM old_employees
WHERE age > 30;

이 명령어는 old_employees 테이블에서 30세 이상인 모든 직원을 new_employees 테이블로 복사합니다. 마치 30세 이상 직원들에게 "이제 새로운 사무실로 이동하세요!"라고 말하는 것과 같습니다!

SQL - 특정 레코드 삽입: 데이터를 골라내는 방법

occasionally, you might not want to move everything. You might just want to select specific records. Let's explore how to do that!

예제 1: 여러 조건을 기반으로 삽입

가령 IT 부서에 속한 25세 이상 직원만을 새로운 it_team 테이블로 이동하고 싶다고 가정해 봅시다.

INSERT INTO it_team (id, name, age)
SELECT id, name, age
FROM old_employees
WHERE department = 'IT' AND age > 25;

이 명령어는 IT 부서에 속한 25세 이상 직원들을 "이제 새로운 팀에 오세요!"라고 말하는 것과 같습니다!

예제 2: OR 조건을 사용하여 삽입

가령 IT 또는 HR 부서에 속한 직원들을 이동하고 싶다고 가정해 봅시다.

INSERT INTO new_department (id, name, department)
SELECT id, name, department
FROM old_employees
WHERE department = 'IT' OR department = 'HR';

이는 "IT와 HR 동료 여러분, 이제 새로운 층으로 이동하세요!"라고 알리는 것과 같습니다!

SQL - 상위 N 행 삽입: VIP 대우

occasionally, you might want to move only a specific number of rows. SQL has you covered with the TOP clause (or LIMIT in some databases).

예제: 상위 5명의 최고 연봉 직원 이동

INSERT INTO top_earners (id, name, salary)
SELECT TOP 5 id, name, salary
FROM employees
ORDER BY salary DESC;

이는 상위 5명의 최고 연봉 직원을 위한 "명예의 벽"을 만드는 것과 같습니다!

다양한 데이터베이스 시스템의 다른 문법

다양한 데이터베이스 시스템은 이를 위해 약간 다른 문법을 사용할 수 있습니다. 다음은 유용한 표입니다:

데이터베이스 시스템 문법
SQL Server SELECT TOP 5 ...
MySQL SELECT ... LIMIT 5
Oracle SELECT ... WHERE ROWNUM <= 5
PostgreSQL SELECT ... LIMIT 5

모든 것을 합쳐서: 실제 세계 시나리오

가령 도서관 데이터베이스를 관리하고 있다고 가정해 봅시다. books 테이블이 있으며, 작년 한해 동안 100번 이상 빌려간 책들을 포함하는 popular_books 테이블을 만들고 싶습니다.

CREATE TABLE popular_books (
id INT,
title VARCHAR(100),
author VARCHAR(100),
borrow_count INT
);

INSERT INTO popular_books (id, title, author, borrow_count)
SELECT id, title, author, borrow_count
FROM books
WHERE borrow_count > 100 AND last_borrowed >= DATE_SUB(CURDATE(), INTERVAL 1 YEAR)
ORDER BY borrow_count DESC
LIMIT 10;

이 스크립트는 다음과 같은 작업을 수행합니다:

  1. 새로운 popular_books 테이블을 생성합니다.
  2. books 테이블에서 조건을 만족하는 책을 선택합니다.
  3. 선택한 책들을 대여 횟수로 정렬합니다.
  4. 상위 10개만을 선택합니다.

이는 도서관에서 "职원 추천" 선반을 만드는 것과 같지만, 데이터가 어떤 책을 선택할지 결정합니다!

결론: 새로운 데이터 슈퍼파워

이제 여러분은 Insert Into Select 문을 프로처럼 사용하는 방법을 배웠습니다. 기억하세요, 이것은 단순히 데이터를 이동시키는 것 이상의 의미가 있습니다. 이는 데이터를 효율적으로 관리하고 분석하는 것입니다.

이 기술들을 연습하면서, 여러분은 데이터 마법사가 될 것입니다. 데이터를 자유롭게 조작할 수 있는 능력을 얻게 되며, 마치 요리를 배우는 것처럼, 처음에는 레시피를 따르지만, 곧 자신만의 데이터 요리를 만들 수 있을 것입니다!

계속 실험하고, 배우고, 가장 중요한 것은 즐기세요. SQL은처음에는 어려울 수 있지만, 이해가 되면 데이터를 어떻게 관리할 수 없었는지 깨닫게 될 것입니다.

즐거운 쿼리 작성과, 데이터가 항상 깨끗하고 조인이 항상 원활하길 바랍니다!

Credits: Image by storyset