๐ฅ INSERT INTO SELECT
INSERT INTO SELECT๋ ๋ค๋ฅธ ํ
์ด๋ธ์ ์กฐํ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ์กด ํ
์ด๋ธ์ ์ฝ์
ํ๋ ๊ตฌ๋ฌธ์
๋๋ค.
SELECT INTO์ ๋ฌ๋ฆฌ ๋์ ํ
์ด๋ธ์ด ์กด์ฌํด์ผ ํด์!
๐ ์์ ํ
์ด๋ธ โ students
| id | name | grade | score | teacher_id |
|---|---|---|---|---|
| 1 | ๊น์ฒ ์ | 1 | 85 | 1 |
| 2 | ์ด์ํฌ | 2 | NULL | 1 |
| 3 | ๋ฐ๋ฏผ์ค | 1 | 90 | 2 |
| 4 | ์ต์ง์ | 3 | 72 | NULL |
| 5 | ์ ์ํ | 2 | NULL | 2 |
| 6 | ํ์ง๋ฏผ | 1 | 78 | 1 |
| 7 | ์ค์์ค | 3 | 95 | 2 |
| 8 | ๊ฐ๋ค์ | 2 | 88 | 1 |
| 9 | ์ํ์ฐ | 3 | NULL | 2 |
| 10 | ์ค์ง์ | 1 | 65 | NULL |
CREATE DATABASE IF NOT EXISTS practice;
USE practice;
DROP TABLE IF EXISTS students;
DROP TABLE IF EXISTS students_backup;
CREATE TABLE students (
id INT,
name VARCHAR(10),
grade INT,
score INT,
teacher_id INT
);
CREATE TABLE students_backup (
id INT,
name VARCHAR(10),
grade INT,
score INT,
teacher_id INT
);
INSERT INTO students VALUES (1, '๊น์ฒ ์', 1, 85, 1);
INSERT INTO students VALUES (2, '์ด์ํฌ', 2, NULL, 1);
INSERT INTO students VALUES (3, '๋ฐ๋ฏผ์ค', 1, 90, 2);
INSERT INTO students VALUES (4, '์ต์ง์', 3, 72, NULL);
INSERT INTO students VALUES (5, '์ ์ํ', 2, NULL, 2);
INSERT INTO students VALUES (6, 'ํ์ง๋ฏผ', 1, 78, 1);
INSERT INTO students VALUES (7, '์ค์์ค', 3, 95, 2);
INSERT INTO students VALUES (8, '๊ฐ๋ค์', 2, 88, 1);
INSERT INTO students VALUES (9, '์ํ์ฐ', 3, NULL, 2);
INSERT INTO students VALUES (10, '์ค์ง์', 1, 65, NULL);
โผ๏ธ ์ ํ ์ด๋ธ์ ๊ธฐ์ค์ผ๋ก ์๋ ์์๋ฅผ ์ค๋ช ํฉ๋๋ค.
๐ง INSERT INTO SELECT๋?
INSERT INTO SELECT๋ ๋ค๋ฅธ ํ ์ด๋ธ์ ์กฐํ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ์กด ํ ์ด๋ธ์ ์ฝ์ ํ๋ ๊ตฌ๋ฌธ์ ๋๋ค.
๐ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
INSERT INTO ๋์ํ
์ด๋ธ (์ปฌ๋ผ1, ์ปฌ๋ผ2, ...)
SELECT ์ปฌ๋ผ1, ์ปฌ๋ผ2, ...
FROM ์๋ณธํ
์ด๋ธ
WHERE ์กฐ๊ฑด;
โน๏ธ SELECT INTO์ ์ฐจ์ด์
| SELECT INTO | INSERT INTO SELECT | |
|---|---|---|
| ๋์ ํ ์ด๋ธ | ์๋ ์์ฑ | ์ด๋ฏธ ์กด์ฌํด์ผ ํจ |
| ๊ธฐ์กด ๋ฐ์ดํฐ | - | ์ ์ง๋๊ณ ์ถ๊ฐ๋จ |
| MySQL ์ง์ | โ | โ |
๐น ํ ์ด๋ธ ์ ์ฒด ๋ณต์ฌ
students ์ ์ฒด๋ฅผ students_backup์ ์ฝ์
INSERT INTO students_backup
SELECT * FROM students;
๐ฅ ๊ฒฐ๊ณผ โ students_backup
| id | name | grade | score | teacher_id |
|---|---|---|---|---|
| 1 | ๊น์ฒ ์ | 1 | 85 | 1 |
| 2 | ์ด์ํฌ | 2 | NULL | 1 |
| 3 | ๋ฐ๋ฏผ์ค | 1 | 90 | 2 |
| 4 | ์ต์ง์ | 3 | 72 | NULL |
| 5 | ์ ์ํ | 2 | NULL | 2 |
| 6 | ํ์ง๋ฏผ | 1 | 78 | 1 |
| 7 | ์ค์์ค | 3 | 95 | 2 |
| 8 | ๊ฐ๋ค์ | 2 | 88 | 1 |
| 9 | ์ํ์ฐ | 3 | NULL | 2 |
| 10 | ์ค์ง์ | 1 | 65 | NULL |
๐น ์กฐ๊ฑด๋ถ ์ฝ์
์ ์๊ฐ ์๋ ํ์๋ง ์ฝ์
INSERT INTO students_backup
SELECT * FROM students
WHERE score IS NOT NULL;
๐ฅ ๊ฒฐ๊ณผ โ students_backup
| id | name | grade | score | teacher_id |
|---|---|---|---|---|
| 1 | ๊น์ฒ ์ | 1 | 85 | 1 |
| 3 | ๋ฐ๋ฏผ์ค | 1 | 90 | 2 |
| 4 | ์ต์ง์ | 3 | 72 | NULL |
| 6 | ํ์ง๋ฏผ | 1 | 78 | 1 |
| 7 | ์ค์์ค | 3 | 95 | 2 |
| 8 | ๊ฐ๋ค์ | 2 | 88 | 1 |
| 10 | ์ค์ง์ | 1 | 65 | NULL |
์ด์ํฌ, ์ ์ํ, ์ํ์ฐ๋ score๊ฐ NULL์ด๋ผ ์ ์ธ๋ฉ๋๋ค.
๐น ํน์ ์ปฌ๋ผ๋ง ์ฝ์
name, score๋ง ๋ค๋ฅธ ํ ์ด๋ธ์ ์ฝ์
INSERT INTO students_score_only (name, score)
SELECT name, score
FROM students;
์ปฌ๋ผ ๊ตฌ์กฐ๊ฐ ๋ค๋ฅธ ํ ์ด๋ธ์ ์ฝ์ ํ ๋๋ ์ปฌ๋ผ์ ๋ช ์ํด์ค์ผ ํด์.
๐ฅ ๊ฒฐ๊ณผ โ students_score_only
| name | score |
|---|---|
| ๊น์ฒ ์ | 85 |
| ์ด์ํฌ | NULL |
| ๋ฐ๋ฏผ์ค | 90 |
| ์ต์ง์ | 72 |
| ์ ์ํ | NULL |
| ํ์ง๋ฏผ | 78 |
| ์ค์์ค | 95 |
| ๊ฐ๋ค์ | 88 |
| ์ํ์ฐ | NULL |
| ์ค์ง์ | 65 |
โ ๋ง๋ฌด๋ฆฌ
| ์ฉ๋ | ์์ |
|---|---|
| ์ ์ฒด ๋ณต์ฌ | INSERT INTO ๋์ SELECT * FROM ์๋ณธ |
| ์กฐ๊ฑด๋ถ ์ฝ์ | INSERT INTO ๋์ SELECT * FROM ์๋ณธ WHERE ์กฐ๊ฑด |
| ํน์ ์ปฌ๋ผ๋ง ์ฝ์ | INSERT INTO ๋์ (์ปฌ๋ผ) SELECT ์ปฌ๋ผ FROM ์๋ณธ |
๐ ์ฐธ๊ณ ์๋ฃ
'Database > SQL ๊ธฐ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| SQL ๊ธฐ์ด - SELECT INTO (ํ ์ด๋ธ ๋ณต์ฌ) (0) | 2026.04.16 |
|---|---|
| SQL ๊ธฐ์ด - AND, OR, NOT (0) | 2026.04.07 |
| SQL ๊ธฐ์ด - IN, EXISTS, ANY, ALL (0) | 2026.03.31 |
| SQL ๊ธฐ์ด - ์๋ธ์ฟผ๋ฆฌ(Subquery) (0) | 2026.03.31 |
| SQL ๊ธฐ์ด - JOIN (0) | 2026.03.27 |