DDL & DML & DCL


DDL, Data Definition Language 데이터 정의어

종류역할
CREATE데이터베이스, 테이블 등을 생성
ALTER테이블을 수정
DROP데이터베이스, 테이블을 삭제
TRUNCATE테이블을 초기화
  • 데이터베이스를 정의하는 언어로 데이터를 생성, 수정, 삭제하는 등 데이터의 전체 골격을 결정
  • SCHEMA, DOMAIN, TABLE, VIEW, INDEX 를 정의하거나 변경 또는 삭제할 때 사용
  • 데이터베이스 관리자나 데이터베이스 설계자가 사용

DML, Data Manipulation Language 데이터 조작어

종류역할
SELECT데이터 조회
INSERT데이터 삽입
UPDATE데이터 수정
DELETE데이터 삭제
  • 정의된 데이터베이스에 입력된 레코드를 조회, 수정, 삭제
  • 데이터베이스 사용자가 응용 프로그램이나 질의어를 통해 저장된 데이터를 실질적으로 처리
  • 데이터베이스 사용자와 데이터베이스 관리 시스템 간의 인터페이스 제공

DCL, Data Control Language 데이터 제어어

종류역할
GRANT특정 DB 사용자에게 특정 작업에 대한 권한 부여
REVOKE특정 DB 사용자에게 특장 작업에 대한 권한 박탈
COMMIT트랜잭션의 작업을 영속화
ROLLBACK트랜잭션의 작업을 취소 및 복구
  • 데이터베이스에 접근하거나 객체에 권한을 주는 등 데이터를 제어
  • 데이터의 보안, 무결성, 회복, 병행 수행 제어 등을 정의

DELETE & TRUNCATE & DROP


DELETETRUNCATEDROP
명령어 종류DMLDDLDDL
처리 속도느림빠름빠름
COMMIT직접자동자동
ROLLBACK 여부가능불가불가
삭제 방식데이터만 삭제CREATE 상태테이블 완전히 제거

DELETE

DELETE FROM dbtable;
DELETE FROM dbtable WHERE {조건};
ROLLBACK;
COMMIT;
  • WHERE 문을 사용하여 테이블에 있는 데이터를 하나하나 선택하여 제거하는 방식
  • WHERE 문을 사용하지않고 테이블의 모든 데이터를 삭제하더라도, 내부적으로는 한줄 한줄 일일히 제거하는 과정을 거침
  • 처리속도가 늦고 퍼포먼스에 좋지않은 영향을 줄 수 있음
  • 원하는 데이터만 골라서 삭제할 때는 DELETE 사용
  • 전체 데이터 삭제할 때는 TRUNCATE 사용
  • 데이터를 삭제하더라도 데이터가 담겨있던 Storage 는 Release 되지 않는다
  • DELETE 된 데이터는 COMMIT 되기 전에 ROLLBACK 할 수 있음

TRUNCATE

TRUNCATE TABLE dbtable;
  • 전체 데이터를 한 번에 삭제하는 방식
  • 최초 생성되었을 당시의 Storage 만 남기고 데이터가 담겨있던 Storage 는 Release 됨
  • TRUNCATE TABLE == CREATE TABLE 한 직후의 상태
  • 자동 COMMIT 되는 명령어이기 때문에 지운 데이터를 되돌릴 수 없음

DROP

DROP TABLE dbtable;
  • 테이블 자체를 처음부터 없었던 테이블처럼 완전히 날려버리는 방식
  • 테이블 자체가 모두 삭제되며 해당 테이블에 생성되어 있던 모든 인덱스도 사라짐
  • 자동 COMMIT 되는 명령어이기 때문에 지운 데이터를 되돌릴 수 없음
  • 오라클10g 부터는 테이블이 삭제되는 것이 아니라 휴지통 개념처럼 잠시 삭제 → 테이블 이름이 BIN$… 으로 변경됨