MySQL

테이블 복사 및 데이터 추가

whs5758 2025. 5. 16. 12:43

데이터베이스에서 한 테이블의 구조나 데이터를 다른 테이블로 복사하는 작업은 여러 상황에서 유용하게 사용됩니다. 테이블의 구조만을 복사하거나, 구조와 데이터 모두를 복사할 수 있습니다.

 

테이블 구조만 복사하기

테이블의 구조만을 새로운 테이블로 복사하고자 할 때, 데이터는 복사하지 않고 구조만 생성합니다.

CREATE TABLE 새_테이블
AS SELECT * FROM 기존_테이블 WHERE 1 = 0;

-- AS는 CREATE TABLE과 SELECT 사이를 연결하는 역할을 합니다
-- 즉, SELECT 쿼리의 결과(컬럼 구조와 데이터)를 새 테이블(새_테이블)의 정의로 사용하도록 지시합니다. 

-- 테스트 
CREATE TABLE new_student
AS SELECT * FROM tb_student WHERE 1=0;

select * from new_student;

 

이 쿼리는 기존 테이블의 모든 컬럼을 선택하지만, WHERE 1=0 조건 때문에 어떠한 데이터도 가져오지 않습니다.

결과적으로 컬럼 구조만 복제된 새 테이블이 생성됩니다.

 

테이블 구조와 데이터 모두 복사하기

테이블의 구조와 함께 데이터도 새로운 테이블로 복사하려면 다음 쿼리를 사용합니다.

CREATE TABLE 새_테이블
AS SELECT * FROM 기존_테이블;

-- 테스트 
CREATE TABLE new_student2
AS SELECT * FROM tb_student ;

select * from new_student2;

 

제약 조건(기본키, 외래키, 인덱스, 트리거 등)은 복사되지 않습니다. 필요 시 수동으로 추가해야 합니다.


실습 쿼리

-- 테이블 복사 하는 방법 

-- 1. 테이블 구조만 복사하는 방법(컬럼) 
create table 새_테이블 
as select * from 기존_테이블 where 1 = 0; 

select * from accounts;

create table new_accounts
as select * from accounts where 1 = 0; 

-- 테이블 복사 확인 
select * from new_accounts;


-- 테이블 구조와(컬럼) 데이터 모두 복사 방법 
create table new_accounts_2
as select * from accounts; 


select * from new_accounts_2

 

 

 

 

'MySQL' 카테고리의 다른 글

GROUP BY 와 HAVING 절  (0) 2025.05.16
MySQL ANSI SQL 표준과 주요 함수  (0) 2025.05.16
트랜잭션 이란 & (COMMIT, ROLLBACK)  (0) 2025.05.16
MySQL 별칭, 변수 선언, IF 문  (0) 2025.05.15
MySQL JOIN  (0) 2025.05.14