달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

'create as select'에 해당되는 글 1

  1. 2013.04.30 테이블 데이터 복사
2013. 4. 30. 14:46

테이블 데이터 복사 그거/DB2013. 4. 30. 14:46

A 테이블

ID        VARCHAR2 (63) NOT NULL,

CONTENT   VARCHAR2 (1000) NOT NULL,

CRE_DATE      DATE NOT NULL,

UPD_DATE      DATE NOT NULL,

TYPE      VARCHAR2 (5) NOT NULL,

USER_ID       VARCHAR2 (63),

GUBUN     CHAR (1),

ETC           VARCHAR2 (10),

DOMAIN_ID     VARCHAR2 (63) DEFAULT 'DEFAULT' NOT NULL


A 테이블의 데이터

ID 

CONTENT 

CRE_DATE 

UPD_DATE 

TYPE 

USER_ID 

GUBUN 

ETC 

DOMAIN_ID 

 EX00001

내용 

2013/04/30 

 2013/04/30

 ERROR

LUCKY 

DOMAIN1 

 EX00002

내용 

2013/04/30 

 2013/04/30 

 ERROR

 LUCKY 

U

N

DOMAIN2 

... 

... 

... 

... 

... 

 ...

 ...

 ...

.. 

 EX00100

 내용 

 2013/04/30 

 2013/04/30 

 ERROR

 LUCKY 

U

N

DOMAIN1 



위와 같은 상황에서


A 테이블의 데이터 중에 DOMAIN_ID 가 'DOMAIN1' 인 데이터를 B 테이블을 새로 만들어서 복사하고자 할 경우


create table B 

as

select 

ID, CONTENT, CRE_DATE, UPD_DATE, TYPE, USER_ID, GUBUN, ETC, DOMAIN_ID

from A where domain_id = 'DOMAIN1'


구문을 사용하면 된다.



이걸 이용해서, A 테이블에서 DOMAIN_ID 가 'DOMAIN1' 인 데이터에 대해서 

DOMAIN_ID 를 'DOMAIN2' 로 A 테이블에 복사하고자 할 경우에는


1. DOMAIN1 데이터를 B 테이블에 임시 복사

2. B 테이블의 데이터를 A 테이블에 DOMAIN2 로 변경해서 복사


를 하면 된다.



QUERY 는 아래처럼~


create table B as select * from a where domain_id = 'DOMAIN1';

insert into A values(id, content, cre_date, upd_date, type, user_id, gubun, etc, domain_id)

   select id, content, sysdate, sysdate, type, user_id, gubun, etc, 'DOMAIN2' from B;


==> 더 간단하게는... 아래와 같이~



insert into A values(id, content, cre_date, upd_date, type, user_id, gubun, etc, domain_id)

   select id, content, sysdate, sysdate, type, user_id, gubun, etc, 'DOMAIN2' from A where domain_id = 'DOMAIN1';



:
Posted by 뽀기