Oracle - 테이블 복사 및 이름변경

본 포스트는 행복안테나님의  JavaRa 블로그 포스트를 참고 및 인용하여 작성했습니다.

오라클 데이터베이스를 연습해보면서 테이블을 생성할 일이 많은데, 이 때마다 데이터를 insert 하는게 여간 귀찮은일이 아니다. 그래서 알아보니 테이블을 복사하는 방법이 있었다.

먼저 데이터를 넣을 테이블부터 생성.

1
2
3
4
5
6
7
8
9
CREATE TABLE test01 (
id NUMBER,
name VARCHAR2(100)
);

INSERT INTO test01(id, name)
VALUES(1, 'DevAndy');
INSERT INTO test01(id, name)
VALUES(2, 'JavaProgrammer');

위에서 생성한 test01 테이블과 똑같은 test02 테이블을 생성하겠다.

1
2
3
4
5
CREATE TABLE test02
AS (
SELECT *
FROM test01
);

이렇게만 하면 test01스키마 구조1와 데이터를 test02 테이블이 모두 가져와서 생성된다.

이외에도 테이블을 복사하는 방법은 몇 가지 더 있다.


  1. 테이블의 스키마 구조만 복사하고 싶을 때.
1
2
3
4
5
6
CREATE TABLE test03
AS (
SELECT *
FROM test01
WHERE 1=0
);

WHERE 조건이 false가 되기때문에 데이터는 못가져오고 스키마 구조만 가져올 수 있다.


  1. 이미 만들어진 테이블에 다른 테이블에서 데이터만 가져오고 싶을 때.
1
2
INSERT INTO test03
SELECT * FROM test01;

  1. 테이블의 이름을 변경하고자 할 때
1
2
ALTER TABLE test03
RENAME TO test03_new;


1 스키마(Scheme) : 데이터베이스의 구조와 제약조건(Constraint)에 관한 전반적인 명세.