[SQL] ALTER, SET UNUSED, DROP TABLE

정은아·2022년 9월 13일
0

. 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;
  = 휴지통 비운거 볼 수 있음 만들어진 시점과 테이블명을 보여준다.
profile
꾸준함의 가치를 믿는 개발자

0개의 댓글