반응형
MySQL 8.0 이상에서 기존 테이블의 데이터를 포함한 백업 테이블을 만들고 싶을 때 간단하게 사용할 수 있는 두 가지 방법을 소개합니다.
방법 1: CREATE TABLE ... AS SELECT ...
이 방법은 기존 테이블의 구조와 데이터를 복사하여 새 테이블을 생성합니다.
사용 예제:
CREATE TABLE _a AS SELECT * FROM a;
설명:
- 구조 복사: 기존 테이블의 열 이름과 데이터 타입을 그대로 가져옵니다.
- 데이터 복사: 모든 데이터를 복사하여 새로운 테이블에 저장합니다.
장점:
- 빠르고 간단합니다.
- 기존 테이블의 데이터를 즉시 복사하여 백업할 수 있습니다.
단점:
- 기본 키, 외래 키, 인덱스, 트리거 등의 메타데이터는 복사되지 않습니다.
참고:
특정 조건에 맞는 데이터만 복사하고 싶다면 WHERE 절을 추가할 수 있습니다.
CREATE TABLE _a AS SELECT * FROM a WHERE status = 'active';
방법 2: CREATE TABLE ... LIKE와 INSERT INTO 조합
이 방법은 기존 테이블의 구조를 완전히 복사한 뒤, 데이터를 추가로 삽입하는 방식입니다.
사용 예제:
- 테이블 구조 복사:
- CREATE TABLE _a LIKE a;
- 데이터 복사:
- INSERT INTO _a SELECT * FROM a;
설명:
- 구조 복사: 기존 테이블의 기본 키, 인덱스, 제약 조건(외래 키 제외) 등을 포함한 전체 구조를 복사합니다.
- 데이터 복사: 원본 테이블의 데이터를 새 테이블로 삽입합니다.
장점:
- 인덱스와 기본 키 같은 구조적인 요소를 함께 복사할 수 있습니다.
단점:
- 두 단계로 나뉘어 처리되므로 CREATE TABLE AS에 비해 상대적으로 복잡합니다.
- 트리거와 외래 키는 복사되지 않습니다.
두 방법의 비교
CREATE TABLE AS | CREATE TABLE LIKE + INSERT INTO | |
데이터 복사 | O | O |
기본 키 복사 | X | O |
인덱스 복사 | X | O |
외래 키 복사 | X | X |
트리거 복사 | X | X |
사용 편의성 | 간단 | 복잡 |
요약
- 빠르고 간단한 백업이 필요하다면 CREATE TABLE ... AS SELECT ...을 사용하세요.
- 테이블 구조까지 정확히 복사하려면 CREATE TABLE ... LIKE와 INSERT INTO의 조합을 사용하세요.
위 방법들을 활용하여 데이터를 안전하게 백업하고 관리하세요!
반응형
'Database' 카테고리의 다른 글
[MySQL] 테이블, 컬럼 코멘트 조회 (0) | 2024.12.03 |
---|---|
[Database] Key의 종류와 특징 (0) | 2023.07.24 |
[Database] DDL, DML, DCL, TCL (0) | 2023.07.22 |
[SQL] COUNT(1), COUNT(*), COUNT(column) 차이점 (1) | 2023.07.04 |
[SQL] DELETE, TRUNCATE, DROP 차이점 (0) | 2023.06.23 |