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의 주요 특징
- 데이터와 구조 복사: 원본 테이블의 데이터와 구조를 모두 복사할 수 있습니다.
- 구조만 복사: WHERE 절에서 조건을 사용해 데이터를 제외하면 테이블 구조만 복사 가능합니다.
- 임시 테이블 생성: 분석 또는 테스트를 위해 데이터를 임시 저장하는 데 유용합니다.
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_id와 employee_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의 활용 사례
- 백업 및 복원: 데이터를 백업하거나 임시 테이블을 사용해 실험적인 작업을 수행할 수 있습니다.
- 데이터 분석: 쿼리 결과를 임시 테이블로 저장하여 복잡한 분석 작업을 간소화합니다.
- 데이터 이행: 데이터 마이그레이션 또는 변환 시 특정 데이터를 새 테이블로 복사하여 관리할 수 있습니다.
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/
'DB' 카테고리의 다른 글
[MySQL] DROP ROLE 완벽 가이드 사용법(역할[Role] 삭제) (0) | 2025.01.18 |
---|---|
[MySQL] CREATE ROLE 완벽 가이드 사용법(역할[Role] 생성) (0) | 2025.01.15 |
[MySQL] RESET MASTER / SLAVE 완벽 가이드 사용법(서버 초기화) (0) | 2025.01.15 |
[MySQL] ALTER TABLE ... PARTITION 완벽 가이드 사용법(테이블 파티션 관리) (0) | 2025.01.15 |
[MySQL] CREATE SPATIAL INDEX 완벽 가이드 사용법(공간인덱스) (0) | 2025.01.15 |
[MySQL] SET CHARACTER SET 완벽 가이드 사용법(캐릭터셋 설정) (0) | 2025.01.15 |
[MySQL] DROP TRIGGER 완벽 가이드 사용법(트리거 삭제) (0) | 2025.01.15 |
[MySQL] CREATE TRIGGER 완벽 가이드 사용법(트리거 생성) (0) | 2025.01.14 |