. ALTER : ALTER 문으로 테이블의 구조를 변경한다.
구조변경이란 컬럼을 추가(ADD), 삭제(DROP), 수정(MODIFY)한다는 뜻이다.
ALTER문으로 테이블의 구조를 변경할때에는
ALTER TABLE 테이블이름
추가 : ADD ((컬럼명 자료형), (컬럼명 자료형), (컬럼명 자료형) .....)
삭제 : DROP column((컬럼명 자료형), (컬럼명 자료형), (컬럼명 자료형).....)
수정 : MODIFY ((컬럼명 자료형), (컬럼명 자료형), (컬럼명 자료형) ......)
. ADD COLUMN 절을 사용하여 새로운 컬럼 추가
: 원하는 위치에 넣을 수 없고 새로운 컬럼은
테이블 맨 마지막에 추가된다.
이미 이전에 추가한 로우가 존재한다면
그 로우에도 컬럼이 추가되지만 컬럼값은 NULL값으로 입력된다.
alter table emp_06
ADD (sal number(5));
alter table emp_06
MODIFY (sal number(8,3));
alter table emp_06
DROP column sal;
. SET UNUSED
: SET UNUSED는 사용을 논리적으로 제한할 뿐 실제로 삭제는 하지않음
이후 DROP UNUSED COLUMNS 로 삭제함
컬럼을 삭제하지는 않지만, 컬럼의 사용을 논리적으로 제한할 수 있는 옵션이다.
하나의 데이터를 여러 사용자가 사용하기 때문에 무조건 삭제하는 것은 위험하다.
SET UNUSED옵션을 사용하는 경우 : 테이블에 저장된
내용이 많을 경우, 해당 테이블에서 컬럼을 삭제하려면
꽤 오랜시간이 소요된다. 그러므로 컬럼을 삭제하는 동안 다른 사용자가
해당 컬럼을 사용하려고 하면 테이블이 사용되고 있기 때문에 다른 사용자는
해당 테이블을 이용할 수 없다. 이럴 경우 작업이 원활하게 진행되지 않고
LOCK(락)이 발생한다.
SET UNUSED 옵션은 컬럼의 사용을 논리적으로 제한할 뿐
실제로 삭제하지 않기 때문에 작업 시간이 오래 걸리지 않아
LOCK(락)이 걸리지 않는다.
ALTER TABLE emp_03 SET UNUSED(ename);
ALTER TABLE emp_03 DROP UNUSED COLUMNS;
. CREATE, ALTER, DROP, RENAME, TRUNCATE 등 DDL을 사용하면
자동 COMMIT이 적용된다.
. DROP TABLE
. 테이블 삭제
: 기존 테이블의 존재를 제거한다.
한 번 제거한 데이터들은 다시 복구하기 힘들다.
. 테이블 삭제와 무결석 제약 조건
: 삭제하고자 하는 테이블의 기본 키나 고유 키를 다른 테이블에서 참조해서
사용하는 경우에는 해당 테이블을 제거할 수 없다.
이러한 경우에는 참조하는 테이블들을 먼저 제거한 후에 해당 테이블을 삭제해야 한다.
형식
DROP TABLE 테이블명
테이블을 지우게 되면 ~~bin~~(복구할 수 있는 테이블)이 생성된다.
drop table 테이블명 purge; 를 쓰면 복구용테이블 없이 삭제된다.
(완전히 사라졌기 때문에 복구 못함)
되돌리고 싶을 때
flashback table emp_01 to before drop;
복구용 테이블 지우고 싶을 때
PURGE RECYCLEBIN;
. 테이블의 모든 레코드를 삭제하는 TRUNCATE TABLE
TRUNCATE TABLE 테이블명
TRUNCATE TABLE emp_02;
컬럼명 변경
alter table emp_02 rename COLUMN ename TO korea;
show recyclebin;
= 휴지통 비운거 볼 수 있음 만들어진 시점과 테이블명을 보여준다.