데이터베이스/Oracle SQL

오라클 SQL과 PL/SQL ( ALTER / TRUNCATE / DROP )

동띠기 2021. 8. 25. 22:52
728x90

ALTER 명렁

ALTER 명령어는 만들어져 있는 오브젝트를 변경하는 명령어 입니다.
즉 , 테이블 같은 경우에는 컬럼을 추가,삭제, 이름을 바꾸는 작업을 할 수 있는데 이 명령어는 부하가 많이 걸리는 명령어이므로 사용량 많은 시간에 수행하는 것은 위험합니다.

CREATE TABLE DEPT6 
AS
	SELECT DCODE, DNAME
	FROM DEPT2 
	WHERE DCODE IN(1000, 1001, 1002);

SELECT * FROM dept6;

ALTER TABLE DEPT6 ADD(LOC VARCHAR(10));

SELECT * FROM DEPT6

이제부터 장소명을 가지는 LOC 컬럼을 추가하겠습니다. 
LOC컬럼을 확인해 보니 모두 기본값으로 NULL값이 입력되어 있습니다.
새로추가 되는 컬럼에 기본값입력을 하고 싶으면 DEFAULT 값을 지정하면 됩니다.

ALTER TABLE DEPT6 ADD(LOC VARCHAR(10) DEFAULT 'SEOUL');

 

테이블의 컬럼 이름 변경하기

DEPT6 테이블의 LOCATION 컬럼을 LOCA로 이름을 변경하겠습니다.

ALTER TABLE DEPT6 RENAME COLUMN LOCATION TO LOCA;
RENAME DEPT6 TO DEPT7;

SELECT * FROM DEPT7

 

컬럼의 데이터 크기 변경하기

ALTER TABLE DEPT7 MODIFY(LOCA VARCHAR2(20));

컬럼 삭제하기

ALTER TABLE DEPT7 DROP COLUMN LOCA;

위 명령으로 삭제하면 됩니다. 만약 참조키로 설정되어 있는 부모 테이블의 컬럼을 삭제하려 할 경우 에러가 발생하는데 아래와 같은 방법으로 지우면 됩니다.

ALTER TABLE DEPT7 DROP COLUMN LOCA CASCADE CONSTRAINTS;

 

TRUNCATE 명령

TRUNCATE 명령은 테이블의 데이터를 전부 삭제하고 사용하고 있던 공간을 반납하는 명령어입니다. 이 명령어를 수행하면 해당 테이블의 데이터가 모두 삭제되지만 테이블 자체가 지워지는 것은 아닙니다.
또한 해당 테이블에 생성되어 있던 인덱스의 내용도 함께 TRUNCATE 됩니다.

TRUNCATE TABLE DEPT7;

 

DROP 명령

이 명령은 테이블 자체를 삭제하는 명령어 입니다. 이 명령어는 수행하면 테이블자체가 모두 지워지며 해당 테이블에 생성되어 있던 인덱스 또한 함께 삭제됩니다.

DROP TABLE DEPT7;



오라클 10g부터는 drop 명령어로 삭제할 경우 삭제되는 것이 아니라 휴지통으로 가는거 처럼 휴지통으로 보내지게 됩니다. 그리고 삭제된 테이블의 이름은 BIN$...로 변경됩니다.
이 기능은 10g에서 아주 막강하게 성능을 발휘하는 FLASHBACK TABLE이라는 기능을 구현하기 위함 입니다.

728x90