본문 바로가기
2.2 DB/ORACLE

[ORACLE] 테이블 복제

by Dohi._. 2024. 9. 23.
728x90

실무에서 테이블에 열을 추가하고 삭제할 요구사항이 생겨서

기존의 테이블의 구조와 데이터를 임시테이블에 옮겨서 데이터를 저장하고 작업을 하기로 했습니다.

이때 사용하는 테이블을 복제, 데이터 복사를 포스팅 하면 좋겠다!

생각이 들어 포스팅을 합니다:)

우선 예전에 테이블을 old_table로 가정하겠습니다.

그럼 새로운 테이블은 당연하게도 new_table입니다.

테이블(구조, 데이터) 복제 (제약조건은 복제X)

CREATE TABLE new_table  AS SELECT * FROM old_table  ;

테이블 복제는 제약조건은 복제되지 않습니다.

따라서 제약조건은 따로 지정해야 합니다.

테이블만 복제(구조)

CREATE TABLE new_table  AS SELECT * FROM old_table  WHERE 1=0; 

WHERE 1=0;은 다 거짓이기 때문에 데이터는 복제가 되지 않습니다.

데이터 복제

INSERT INTO new_table  SELECT * FROM old_table  ;

사실상 데이터 복제는 그냥 데이터를 INSERT하는 건데요

테이블 복제 == 테이블만(구조) 복제 + 데이터 복제는 결과로는 같습니다

CREATE TABLE new_table  AS SELECT * FROM old_table  ;
CREATE TABLE new_table  AS SELECT * FROM old_table  WHERE 1=0; 
INSERT INTO new_table  SELECT * FROM old_table  ;

그럼에도 굳이 나눠져 알아야 하는 이유는

원하는 데이터만 넣어야 할때도 있기 때문입니다.

구조가 같으므로 조건을 제공하여 데이터를 주입할 수 있다.

INSERT INTO new_table  
    SELECT * 
      FROM old_table 
     WHERE 조건 ;
728x90

'2.2 DB > ORACLE' 카테고리의 다른 글

[oracle] Union / Union ALL  (0) 2024.09.30
[Oracle] null 처리 함수 (NVL, NVL2)  (0) 2024.09.26
[Oracle/SQL] 날짜 마지막 시간 적용에 0.99999 쓰는 이유  (3) 2024.09.25
[Oracle/SQL] With 절  (0) 2024.07.30
[Oracle/SQL] MERGE INTO  (0) 2024.07.30

댓글