DB

[MySQL] CREATE TABLE AS 완벽 가이드 사용법(데이터를 조회하여 테이블 생성)

인생아 2025. 1. 15. 14:12
반응형

CREATE TABLE AS는 MySQL에서 기존 테이블이나 쿼리 결과를 기반으로 새로운 테이블을 생성할 때 사용하는 강력한 SQL 문입니다. 이 문법을 활용하면 데이터를 복사하거나 특정 데이터 구조를 재사용하여 효율적으로 새로운 테이블을 만들 수 있습니다. 

CREATE TABLE AS란?

CREATE TABLE AS는 기존 테이블의 구조, 데이터, 또는 둘 다를 복사하여 새로운 테이블을 생성합니다. 이를 통해 데이터베이스 작업의 효율성을 높이고, 특정 데이터를 임시로 저장하거나 분석 목적으로 활용할 수 있습니다.

CREATE TABLE AS 기본 문법

CREATE TABLE 새_테이블명 AS
SELECT 열_목록
FROM 기존_테이블명
[WHERE 조건];
  • 새_테이블명: 생성할 새로운 테이블의 이름입니다.
  • SELECT 열_목록: 복사할 열의 목록을 지정합니다.
  • 기존_테이블명: 데이터를 가져올 원본 테이블의 이름입니다.
  • WHERE 조건: (선택 사항) 특정 조건을 만족하는 데이터만 복사합니다.
반응형

CREATE TABLE AS의 주요 특징

  1. 데이터와 구조 복사: 원본 테이블의 데이터와 구조를 모두 복사할 수 있습니다.
  2. 구조만 복사: WHERE 절에서 조건을 사용해 데이터를 제외하면 테이블 구조만 복사 가능합니다.
  3. 임시 테이블 생성: 분석 또는 테스트를 위해 데이터를 임시 저장하는 데 유용합니다.

CREATE TABLE AS 예제

다음은 다양한 상황에서 CREATE TABLE AS를 사용하는 방법입니다.

1. 전체 데이터 복사

CREATE TABLE employees_copy AS
SELECT * FROM employees;

위 명령은 employees 테이블의 모든 데이터를 employees_copy라는 새로운 테이블에 복사합니다.

2. 특정 열만 복사

CREATE TABLE employee_names AS
SELECT employee_id, employee_name FROM employees;

이 명령은 employee_idemployee_name 열만 복사하여 새로운 테이블을 생성합니다.

3. 조건부 데이터 복사

CREATE TABLE active_employees AS
SELECT * FROM employees
WHERE status = 'active';

이 명령은 status 값이 'active'인 직원 데이터만 복사합니다.

4. 구조만 복사

CREATE TABLE employees_structure AS
SELECT * FROM employees
WHERE 1 = 0;

WHERE 조건이 항상 거짓이므로 데이터는 복사되지 않고 테이블 구조만 복사됩니다.

CREATE TABLE AS의 활용 사례

  1. 백업 및 복원: 데이터를 백업하거나 임시 테이블을 사용해 실험적인 작업을 수행할 수 있습니다.
  2. 데이터 분석: 쿼리 결과를 임시 테이블로 저장하여 복잡한 분석 작업을 간소화합니다.
  3. 데이터 이행: 데이터 마이그레이션 또는 변환 시 특정 데이터를 새 테이블로 복사하여 관리할 수 있습니다.
반응형

CREATE TABLE AS 사용 시 주의사항

1. 인덱스 및 제약 조건 복사 불가: 기본적으로 인덱스, 기본 키, 외래 키와 같은 제약 조건은 복사되지 않습니다. 필요한 경우 수동으로 추가해야 합니다.

ALTER TABLE employees_copy ADD PRIMARY KEY (employee_id);

2. AUTO_INCREMENT 속성: AUTO_INCREMENT 속성은 복사되지 않습니다. 새로 설정해야 합니다.

ALTER TABLE employees_copy MODIFY employee_id INT AUTO_INCREMENT;

3. 퍼미션 문제: 새로운 테이블 생성 시 권한 문제가 발생할 수 있으므로, 데이터베이스 사용자 권한을 확인하세요.

반응형

추가 예제: 데이터 변환과 함께 사용하기

1. 계산된 열로 새로운 테이블 생성

CREATE TABLE employee_salaries AS
SELECT employee_id, employee_name, salary * 12 AS annual_salary
FROM employees;

이 명령은 월급 데이터를 연봉 데이터로 변환하여 새로운 테이블을 생성합니다.

2. 조인을 활용한 테이블 생성

CREATE TABLE department_employees AS
SELECT e.employee_id, e.employee_name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;

이 예제는 두 테이블을 조인하여 새로운 테이블을 생성합니다.

결론

CREATE TABLE AS는 MySQL에서 데이터 복사 및 구조 관리를 위한 강력한 도구입니다. 이를 통해 데이터베이스 관리와 분석 작업을 더욱 효율적으로 수행할 수 있습니다.

공식 가이드 문서: https://dev.mysql.com/doc/

 
 
반응형