본문 바로가기

카테고리 없음

SQL - DDL

반응형

 

 

DDL

  • CREATE
  • ALTER
  • DROP

 

 


CREATE 

 

  • 테이블을 만드는 명령어
  • 새로운 테이블을 지정해서 만드는 방법과 기존 테이블을 가지고 와서 생성하는 방법 있다.
  • 기존 테이블을 가지고 오는 경우, 데이터 타입과 데이터 내용이 똑같이 복사된다. 

 

CREATE TABLE emp01( 
empno NUMBER(4), 
ename VARCHAR2(20), 
sal NUMBER(7,2) );

컬럼명과 컬럼의 데이터 타입을 직접 설정해서 테이블을 만들 수 있다.

 


 


기존 테이블의 데이터와 구조를 전부 가지고 와서 테이블을 만들 수 있다. 

 



 

 CREATE TABLE emp03 
 AS SELECT ename, job FROM emp;

기존 테이블에 있는 컬럼을 지정해서 가지고 와 테이블을 만들 수 있다. 구조는 가지고 온 컬럼만 지정된다. 

 


 


 

 

 CREATE TABLE emp04 
 AS SELECT * FROM emp WHERE deptno=10;

WHERE 조건절에 지정된 값을 가진 행만 가지고 와서 테이블을 만들 수 있다. 

 


 


 

 

CREATE TABLE emp05
 AS SELECT * FROM emp WHERE deptno=10;

WHERE 절의 값을 거짓으로 만들어서 테이블의 구조만 복사할 수 있다.

 

 

 

ALTER 

  • 기존의 테이블을 변경하는 명령어
  • 기존 테이블에 컬럼을 더하거나, 컬럼을 수정하거나, 컬럼을 삭제할 수 있다.

 

  • ADD COLUMN 
  • MODIFIY COLUMN
  • DROP COLUMN

 

ADD COLUMN 

 

  • 테이블에 새로운 컬럼을 더하는 명령어
  • 순서는 지정할 수 없으며, 기존에 있던 컬럼의 가장 뒤에 더해진다.

 

emp 테이블에 컬럼을 더해 주었다. 컬럼을 더해 주게 되면 기존 컬럼의 가장 뒤에 더해진다. 순서 지정은 불가하다.

 

 

MODIFIY COLUMN

 

  • 테이블에 이미 존재하는 컬럼을 변경하는 명령어
  • 컬럼의 크기나 컬럼의 데이터 타입을 변경할 수 있지만, 해당 컬럼에 이미 데이터가 있는 경우에는 제약이 걸린다.

 

  • 컬럼의 데이터 타입 변경: 컬럼에 데이터가 없거나, CHAR ↔ VARCHAR만 가능
  • 컬럼의 데이터 크기 변경: 컬럼에 데이터가 없거나, 현재 값보다 더 큰 값으로만 변경 가능

 

 ALTER TABLE emp01 MODIFY(job VARCHAR2(30));

9였던 가변 문자 길이 값이 30으로 변경되었다. 

 

 

 

DROP COLUMN

 

  • 기존 칼럼을 삭제하는 것
  • 유의: 여러 사용자가 이용하는 DB의 경우, 일단 UNUSED 상태로 둔 다음 시일이 지나고 문제가 없다면 삭제한다.
    • 삭제할 때는 해당 테이블에 접근할 수 없기 때문에 사용 빈도가 가장 낮은 시간에 DROP 명령문을 실행하는 것이 좋다.  

 

ALTER TABLE emp01 DROP COLUMN job;

job 컬럼을 DROP 명령어를 통해 삭제하였다.

 


 

UNUSED - DROP 전에 거치기 권유되는 작업

 

ALTER TABLE emp02 SET UNUSED (job);

JOB 컬럼을 사용하지 않도록 설정하였다. 해당 컬럼 목록에 보여지지 않는다.

 

 

SELECT * FROM USER_UNUSED_COL_TABS;

ALTER TABLE emp02 DROP UNUSED COLUMNS;

UNUSED COLUMN을 조회하고, 해당 칼럼을 삭제하는 명령어

 

UNUSED COLUMN이 삭제되어 해당 테이블에는 값이 없는 것을 알 수 있다.

 

 

DROP TABLE

 

  • 테이블을 삭제하면서, 그 안에 있던 데이터도 함께 삭제하는 명령어
  • 제거한 데이터는 복구가 힘듦을 유의한다. 

 

 DROP TABLE emp01;

테이블 자체를 삭제하기 때문에 테이블 객체는 남아 있지 않다. 

 

 

 

TRUNCATE

 

  • 테이블의 구조는 남기고, 데이터는 제거하는 명령어
  • 최초 테이블이 만들어진 상태로 테이블을 되돌린다.

 

TRUNCATE TABLE emp02;

해당 컬럼의 데이터를 전부 삭제한다.

 

 

 

 

DELETE vs TRUNCATE vs DROP

 

출처: https://codedragon.tistory.com/4519

 

삭제 명령 도식도 - 출처 동일 

반응형