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

| DELETE | TRUNCATE | DROP |
|---|
| 명령어 종류 | DML | DDL | DDL |
| 처리 속도 | 느림 | 빠름 | 빠름 |
| 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$… 으로 변경됨