Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 기존 테이블의 특정 행만 선택하여 새 테이블 생성하는 방법

이미 생성되어 있는 테이블을 기반으로 새로운 테이블을 만들 때는 CREATE TABLE AS SELECT 문을 사용합니다. 이 문법은 기존 테이블의 구조와 데이터를 그대로 복사하면서, WHERE 절을 활용하면 원하는 조건에 맞는 특정 행만 골라서 새 테이블에 담을 수 있습니다.

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable1318
-> (
-> Id int,
-> FirstName varchar(10),
-> LastName varchar(10),
-> Age int
-> );
Query OK, 0 rows affected (0.50 sec)

INSERT 명령어를 사용해 테이블에 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable1318 values(1,'Chris','Brown',21);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable1318 values(2,'David','Miller',24);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1318 values(3,'Carol','Taylor',23);
Query OK, 1 row affected (0.11 sec)

SELECT 문으로 테이블의 모든 레코드를 확인해 보겠습니다.

mysql> select * from DemoTable1318;

출력 결과

+------+-----------+----------+------+
| Id | FirstName | LastName | Age |
+------+-----------+----------+------+
| 1 | Chris | Brown | 21 |
| 2 | David | Miller | 24 |
| 3 | Carol | Taylor | 23 |
+------+-----------+----------+------+
3 rows in set (0.00 sec)

특정 행만 선택하여 새 테이블 생성하기

다음은 기존 테이블에서 Age가 21 또는 23인 행만 선택하여 새 테이블을 생성하는 쿼리입니다. WHERE 절과 IN 연산자를 함께 사용하면 여러 값을 손쉽게 필터링할 수 있습니다.

mysql> create table DemoTable1319
-> as select * from DemoTable1318
-> where Age IN(21,23);
Query OK, 2 rows affected (0.81 sec)
Records: 2 Duplicates: 0 Warnings: 0

새로 생성된 테이블의 전체 레코드를 SELECT 문으로 확인해 보겠습니다.

mysql> select * from DemoTable1319;

출력 결과

+------+-----------+----------+------+
| Id | FirstName | LastName | Age |
+------+-----------+----------+------+
| 1 | Chris | Brown | 21 |
| 3 | Carol | Taylor | 23 |
+------+-----------+----------+------+
2 rows in set (0.00 sec)

실행 결과를 보면 나이가 21살인 Chris와 23살인 Carol의 데이터만 새 테이블 DemoTable1319에 복사된 것을 확인할 수 있습니다. 이처럼 CREATE TABLE AS SELECT 문은 백업 테이블 생성, 조건별 데이터 분리 등 다양한 상황에서 유용하게 활용할 수 있습니다.