기존 데이터베이스 테이블에 있는 데이터를 활용한 테스트를 진행하고자, 테이블 복사에 대한 방법을 찾아보고 정리했다.
1. 테이블 구조 복사
기존 테이블의 생성 구문을 확인한다.
SHOW CREATE TABLE existing_table;
2. 새 테이블 생성
위에서 확인한 생성 구문에서 테이블명만 바꾸고 실행한다.
3. 데이터 복사
INSERT INTO new_table SELECT * FROM existing_table;
번외.
테이블 복사에 관해 찾아보던 중, 평소 즐겨보던 블로그에서 `LIKE`를 활용한 테이블 구조 복사는 'PK', 'Auto increment'와 같은 설정은 복사할 수 없다는 글을 보게 되었다. "왜 `LIKE`는 위 설정을 복사할 수 없을까?" 하는 물음에 `LIKE`에 대한 MySQL, W3School과 같은 래퍼런스들도 찾아봤지만 정규표현식에 대한 비교 설명만 볼 수 있었다. 따라서 직접 테스트를 진행해보았고, `LIKE`를 통한 테이블 구조 복사 또한 'PK', 'Auto increment'와 같은 설정을 그대로 복사하는 것을 확인할 수 있었다.
1) 학생 테이블 생성
CREATE TABLE students (
student_id INT AUTO_INCREMENT PRIMARY KEY, -- 학생 ID, 기본 키
name VARCHAR(100) NOT NULL, -- 학생 이름
birth_date DATE NOT NULL, -- 생년월일
phone_number VARCHAR(15), -- 전화번호
email VARCHAR(100) NOT NULL UNIQUE -- 이메일, 유니크 키
);
2) dummy 데이터 삽입
INSERT INTO students (name, birth_date, phone_number, email) VALUES
('홍길동', '2000-01-15', '010-1234-5678', 'honggildong@example.com'),
('김영희', '1999-02-22', '010-2345-6789', 'kimyounghee@example.com'),
('이철수', '2001-03-10', '010-3456-7890', 'leechulsoo@example.com'),
('박지민', '2000-04-05', '010-4567-8901', 'parkjimin@example.com'),
('최민수', '1998-05-30', '010-5678-9012', 'choiminsu@example.com'),
('정수빈', '2002-06-18', '010-6789-0123', 'jeongsubin@example.com'),
('한지민', '1997-07-25', '010-7890-1234', 'hanjimin@example.com'),
('김다', '2001-08-14', '010-8901-2345', 'osehun@example.com'),
('임수정', '2000-09-09', '010-9012-3456', 'imsujeong@example.com'),
('배수진', '1999-10-20', '010-0123-4567', 'baesujin@example.com');
3) 테이블 구조 복사
CREATE TABLE new_students LIKE students;
4) 데이터 복사
INSERT INTO new_students SELECT * FROM students;
참고문헌.
https://javaoop.tistory.com/94
https://dev.mysql.com/doc/refman/8.4/en/pattern-matching.html
https://www.w3schools.com/mysql/mysql_like.asp
'MySQL' 카테고리의 다른 글
[MySQL] View Processing Alogrighms (MERGE vs. TEMPTABLE) (3) | 2024.10.11 |
---|---|
[MySQL] Partition 3. DATE 기반 월별 파티션 구현 (0) | 2024.08.05 |
[MySQL] Partition 2. 적용하기 전 개념 정리 (0) | 2024.08.02 |
[MySQL] Partition 1. 테이블 수동 분할과 파티셔닝 (+. 샤딩 / 래플리케이션) (0) | 2024.07.30 |