SQL - Insert Into Select: 초보자를 위한 종합 가이드
안녕하세요, SQL 열정가 여러분! 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_employees
와 new_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;
이 스크립트는 다음과 같은 작업을 수행합니다:
- 새로운
popular_books
테이블을 생성합니다. -
books
테이블에서 조건을 만족하는 책을 선택합니다. - 선택한 책들을 대여 횟수로 정렬합니다.
- 상위 10개만을 선택합니다.
이는 도서관에서 "职원 추천" 선반을 만드는 것과 같지만, 데이터가 어떤 책을 선택할지 결정합니다!
결론: 새로운 데이터 슈퍼파워
이제 여러분은 Insert Into Select 문을 프로처럼 사용하는 방법을 배웠습니다. 기억하세요, 이것은 단순히 데이터를 이동시키는 것 이상의 의미가 있습니다. 이는 데이터를 효율적으로 관리하고 분석하는 것입니다.
이 기술들을 연습하면서, 여러분은 데이터 마법사가 될 것입니다. 데이터를 자유롭게 조작할 수 있는 능력을 얻게 되며, 마치 요리를 배우는 것처럼, 처음에는 레시피를 따르지만, 곧 자신만의 데이터 요리를 만들 수 있을 것입니다!
계속 실험하고, 배우고, 가장 중요한 것은 즐기세요. SQL은처음에는 어려울 수 있지만, 이해가 되면 데이터를 어떻게 관리할 수 없었는지 깨닫게 될 것입니다.
즐거운 쿼리 작성과, 데이터가 항상 깨끗하고 조인이 항상 원활하길 바랍니다!
Credits: Image by storyset