본문 바로가기

03. DB/01. 공통 개념

[개념]DDL, DML, DCL, TCL

 데이터베이스 언어의 종류 마다 제어의 범위나 활용 목적이 나뉘어져 있다. DML, DDL 정도만 대략 어떤 것인지 종류만 알고 있었는데 이번 기회에 간단하게 개념에 대한 부분들도 같이 정리하였다.

 

DDL (Data Definition Language) - 데이터 정의 언어

 DDL 명령어는 데이터베이스의 구조를 정의하는데 사용된다.

테이블, 인덱스, 제약 조건 및 기타 구조를 포함한 데이터베이스의 스키마를 정의하고 관리.

 

ㆍ CREATE

ㆍ ALTER

ㆍ DROP

ㆍ RENAME

ㆍ TRUNCATE

 

 

● DML (Data Manipulation Language) - 데이터 조작 언어

 DML 명령어는 데이터베이스에 저장된 데이터를 조작하는데 사용된다.

데이터에 대한 선택, 삽입, 업데이트 및 삭제와 같은 작업을 수행.

 

ㆍ SELECT 

ㆍ INSERT 

ㆍ UPDATE 

ㆍ DELETE

 

 

  DCL (Data Control Language) - 데이터 제어 언어

 DCL 명령어는 데이터베이스에 대한 액세스를 제어하고 보안을 관리한다.

권한 부여 및 박탈을 통해 데이터베이스 객체에 대한 사용 권한을 관리.

 

ㆍ GRANT

ㆍ REVOKE

 

 

  TCL (Transaction Control Language) - 트랜잭션 제어 언어

 TCL 명령어는 트랜잭션을 제어하는데 사용된다.

트랜잭션의 시작, 종료 및 롤백과 같은 작업을 수행하여 데이터 일관성을 보장.

 

ㆍ COMMIT

ㆍ ROLLBACK

ㆍ SAVEPOINT

 

 

 

 DB 데이터 이관 작업할 때 공무원들에게 마이그레이션 하는 시스템을 몇주간 사용하게 하고 정식으로 오픈을 위해 클렌징 작업을 해야 하는 상황에서 CUBRID(10.2.11)의 truncate는 delete와 속도 차이가 없어서 그냥 drop하고 테이블을 다시 생성했던적이 있는데 무슨 차이가 있어서 속도면에서 훨씬 빠른지 delete와 truncate의 차이점을 정리하였다.

 

 

 

DELETE와 TRUNCATE 차이점

● DELETE

ㆍ 트랜잭션 로깅

 각 행을 개별적으로 삭제하며, 각 삭제 작업은 트랜잭션 로그에 기록.

이는 롤백이 가능하고, 데이터 변경 이력을 추적 가능.

 

ㆍ 로우 단위 잠금

 각 행을 개별적으로 처리하므로 해당 행에 잠금이 걸리게 된다. 

이는 다른 트랜잭션이 같은 행에 동시에 접근하는 것을 방지.

 

ㆍ 조건 지정가능

 WHERE 절을 통해 특정 조건을 만족하는 행만 삭제할 수 있다.

모든 행을 삭제하려면 WHERE 절을 생략하거나 특정 조건을 지정하지 않으면 된다.

 

TRUNCATE 

ㆍ 트랜잭션 로깅

 테이블 전체를 한 번에 삭제하며, 이 작업은 트랜잭션 로그에 기록되지 않는다.

따라서 롤백이 불가능하며, 로그가 발생하지 않아 성능상 이점이 있다.

 

ㆍ 로우 단위 잠금

 테이블 전체를 대상으로 하므로 테이블 전체에 대한 잠금을 설정하게 된다.

이로 인해 DELETE보다 빠른 속도를 보일 수 있다.

 

ㆍ 조건 지정가능

 특정 조건을 지정할 수 없다. 항상 테이블 전체를 삭제.

'03. DB > 01. 공통 개념' 카테고리의 다른 글

엑셀 활용하여 쿼리 작성 참고용(merge)  (0) 2023.11.25