[MySQL] 테이블 복사 및 데이터 추가

2024. 6. 5. 15:08·MySQL/MySQL 기본

데이터베이스에서 한 테이블의 구조나 데이터를 다른 테이블로 복사하는 작업은 여러 상황에서 유용하게 사용된다.

테이블의 구조만을 복사하거나, 구조와 데이터 모두를 복사할 수 있다

1. 테이블 구조만 복사하기

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

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

use employees;
-- 테이블 복사(구조만 복사) 
create table dept_emp_copy
as select * from dept_emp 
where 1 = 0; 

select * from dept_emp_copy;
desc dept_emp_copy;

이 쿼리는 기존 테이블의 모든 컬럼을 선택하지만, WHERE 1=0 조건 때문에 어떠한 데이터도 가져오지 않는다. 결과적으로 컬럼 구조만 복제된 새 테이블이 생성된다.

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

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

use employees;
-- 테이블 복사(구조만 복사) 
create table dept_emp_copy
as select * from dept_emp 
where 1 = 0; 

select * from dept_emp_copy;
desc dept_emp_copy;


create table employees_copy
as select * from employees;

select * from employees_copy;

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

 

‼ 주의사항

기본키, 외래키, 인덱스 등의 제약사항은 복사되지 않을 수 있다. 따라서, 이러한 제약사항을 수동으로 추가해야 할 필요가 있다.

💡 기존 테이블의 데이터를 이용하여 새 데이터를 삽입할 수 있습니다.

 

INSERT INTO SELECT 문 사용

use employees;
-- 테이블 복사(구조만 복사) 
create table dept_emp_copy
as select * from dept_emp 
where 1 = 0; 

select * from dept_emp;
desc dept_emp_copy;

create table employees_copy
as select * from employees;
select * from employees_copy;

-- ------
select * from dept_emp_copy;
delete from dept_emp_copy;

insert into dept_emp_copy(emp_no, dept_no, from_date, to_date)
select emp_no, dept_no, from_date, to_date 
		from dept_emp
        where emp_no > 20001;

CSV 파일 또는 외부 데이터 소스 사용

대량의 데이터를 처리해야 할 때는 외부 파일(예: CSV)에서 데이터를 읽어와서 데이터베이스 테이블에 삽입하는 방법이 효율적이다. 대부분의 데이터베이스 시스템에서는 외부 데이터 파일을 삽입할 수 있는 도구나 명령어를 제공한다.

LOAD DATA INFILE 'path/to/yourfile.csv'
INTO TABLE students
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;  -- 첫 번째 행이 헤더일 경우 이 행을 무시

'MySQL > MySQL 기본' 카테고리의 다른 글

[MySQL] Groub By 와 having 절  (0) 2024.06.10
[MySQL] MySQL Function  (1) 2024.06.10
[MySQL] MySQL JOIN  (0) 2024.06.05
[MySQL] 관계 차수란  (0) 2024.06.05
[MySQL] MySQL에서 인덱스(index)란  (0) 2024.06.04
'MySQL/MySQL 기본' 카테고리의 다른 글
  • [MySQL] Groub By 와 having 절
  • [MySQL] MySQL Function
  • [MySQL] MySQL JOIN
  • [MySQL] 관계 차수란
미로910
미로910
개발자를 꿈꾸는 민경이의 기록 블로그
  • 미로910
    개발 note
    미로910
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 설치 메뉴얼
      • HTML
      • JAVA
        • Java 기초
        • Java 응용
        • 자료구조
        • HTTP
        • JSP 프로그래밍
      • MySQL
        • MySQL 기본
        • 1일 1쿼리
      • CSS
      • Spring boot
      • JS
        • 게시판 만들기
      • Git
      • Flutter
        • MVVM 활용
        • 심화 버전
        • 1일 1 Flutter
      • 디자인 패턴의 활용
      • error note
      • My Project
        • [졸작] LLM 기반 특허 유사도 분석 시스템
        • 도서 관리 프로그램 (final project)
        • amigo
        • 친구 매칭 프로그램(FMP)
      • Python
      • 딥러닝
      • 네트워크
      • 공부 노트
        • 연구회
        • 자료구조
      • 기타
  • 블로그 메뉴

    • 홈
    • 전체보기
    • -----------------------
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Flutter
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
미로910
[MySQL] 테이블 복사 및 데이터 추가
상단으로

티스토리툴바