DROP TABLE - 기존 테이블과 데이터 모두제거





삭제 불가능한 경우

- 삭제할 테이블의 기본 키나 고유 키를 다른 테이블에서 참조하고 있는 경우 

(참조하는 테이블(자식 테이블)을 먼저 제거후 제거해야한다.)



형식



DROP TABLE 테이블명;




1
drop table b1;
cs


DROP TABLE을 한 이후에는 테이블이 제거되었기 때문에 구조를 확인할 수 없다.







RENAME - 테이블을 포함한 객체의 이름을 변경하는 DDL명령문이다.





형식



RENAME 기존테이블명 TO 새테이블명




1
rename a1 to b1;
cs



테이블명이  변경되었기 때문에 이전 테이블명으로는 테이블 구조를 확인할 수 없고,

새로운 테이블명으로 확인 가능하다.




ALTER TABLE - 기존 테이블의 구조 변경을 하는 DDL명령어 입니다.




테이블을 생성하면서 컬럼의 추가, 수정, 삭제를 할 때 사용합니다.



컬럼추가



ALTER TABLE 테이블명

ADD(컬럼명 DataType);




컬럼을 추가하는 형식입니다.

-추가된 컬럼의 마지막 부분에 생성이 됩니다.

-수정할 테이블에 기존의 추가한 데이터가 존재하면 컬럼 값은 NULL로 입력됩니다.


1
alter table a1 add(age number);
cs


보이는 것과 같이 AGE 컬럼이 추가되었고, 데이터 값은 NULL로 입력됩니다.







컬럼변경

ALTER TABLE MODIFY 명령문을 이용하여 테이블에서의 컬럼의 타입, 크키, 기본 값 변경을 할 수 있다.




ALTER TABLE 테이블명

MODIFY(컬럼명 DataType);





기존 컬럼에 데이터가 없는 경우


-컬럼의 데이터 타입 변경이 자유롭다.


-컬럼의 크기 변경이 자유롭다.


 기존 컬럼에 데이터가 존재하는 경우


-데이터 타입 변경은 CHAR과 VERCHAR2만 가능하다.


-변경할 컬럼의 크기가 저장된 데이터의 크기보다 같거나 클 경우에만 가능하다.



1
2
alter table a1 modify(name varchar2(5));
alter table a1 modify(name varchar2(30));
cs



처음 name의 크기변경을 할 때 5보다 큰 데이터 값이 있기 때문에 변경 불가

기존 데이터 타입보다 큰 30으로 변경 가능 

name 의 데이터값이 변경된것을 확인할 수 있습니다.






컬럼제거


- 2개 이상의 컬럼을 가진 기존테이블의 특정 컬럼과 컬럼의 데이터 삭제 가능

- 한번의 하나의 컬럼만 삭제가 가능

- 삭제된 컬럼은 복구 불가능




ALTER TABLE 테이블명 DROP COLUMN 컬럼명;




1
alter table a1 drop column age;
cs



삭제된 것을 볼 수 있습니다.






SET UNUSED


시스템의 요구가 적을 때 컬럼을 제거할 수 있도록 하나 이상의 칼럼을 UNUSED로 표시한다.

실제로 테이블에서 제거되지 않는다. 


사용이유

테이블에 저장된 내용이 많을 경우 컬럼 삭제시 많은 시간이 소요된다. 그 시간중에 다른 사용자가 컬럼에 접근하면 , 테이블이 사용되고 있기에 다른 사용자는 해당 테이블을 이용할 수 없다. 이럴경우 rock이 발생하게된다. 

SET UNUSED옵션은 DROP명령 실행시 걸리는 시간보다 응답시간이 빠르고, UNUSED로 표시된 컬럼은 데이터가 존재해도 삭제된 것으로 처리되기 때문에 사용한다.


테이블에서 id제거하기


1
alter table a2 set unused(id);
cs



실제로 컬럼명이 나타나지 않는 것을 볼 수 있다. 

하지만 실제로 제거된 것이 아니다. 




테이블에서 현재 UNUSED로 표시된 모든 컬럼 제거하기


1
alter table a2 drop unused columns;
cs


+ Recent posts