Without haste, but without rest
3.5 테이블의 관리 본문
오라클클럽: http://www.oracleclub.com/lecture/1014
테이블 컬럼의 관리
-ADD, MODIFY, DROP연산자를 통해 관리
ADD연산자
-테이블에 새로운 컬럼 추가
ALTER TABLE emp ADD(addr VARCHAR2(50));
MODIFY연산자
-테이블 컬럼 수정, 제약조건 변경, 컬럼 데이터형이 지정 되어있을 경우 변경 불가
ALTER TABLE emp MODIFY(ename VARCHAR2(50);
ALTER TABLE emp MODIFY(ename VARCHAR2(50) NOT NULL);
DROP연산자
-테이블 컬럼 삭제 또는 제약 조건 삭제
--컬럼 삭제
ALTER TABLE table_name DROP COLUMN column_name;
--제약 조건 삭제
ALTER TABLE emp DROP PRIMARY KEY;
--CASCADE 연산자와 함께 사용하면 외래키에 의해 참조되는 기본키도 삭제
ALTER TABLE emp DROP CONSTRAINT emp_pk_empno CASCADE;
기존 테이블의 복사
-서브쿼리를 가진 CREATE TABLE명령어를 사용해서 쉽게 복사
-제약 조건, 트리거, 테이블 권하는 새로운 테이블에 복사되지 않음
-제약조건은 NOT NULL 제약 조건만 복사
CREATE TABALE emp2
AS SELECT * FROM emp;
컬럼명 변경
ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name;
테이블의 테이블스페이스 변경
-Oracle8i 부터는 ALTER TABLE~MOVE TABLESPACE명령어로 쉽게 테이블 스페이스 변경
ALTER TABLE table_name MOVE TABLESPACE tablespace_name;
ALTER TABLE emp
MOVE TABLESPACE test;
테이블의 TRUNCATE
-테이블의 모든 행 삭제, 사용공간 해제
-DDL명령이므로 롤백 데이터가 생성되지 않음
-롤백불가
-행당 인덱스도 잘려 나감
-외래키가 참조중인 테이블은 TRUNCATE할 수 없음
-TRUNCATE명령을 사용하면 삭제 트리거가 실행되지 않음
TRUNCATE TABLE [schema.]table_name;
테이블 삭제(DROP TABLE)
DROP TABLE table_name [CASCADE CONSTRAINTS];
DROP TABLE emp;
--기본키를 참조하던 외래 키 조건도 같이 삭제
DROP TABLE emp CASCADE CONSTRAINT;