DB

[Database] DML, DCL, DDL, TCL

dev_rosieposie 2023. 8. 16. 19:21

Goal 

  1. SQL의 종류에 대해 알아본다
  2. DML, DCL, DDL, TCL의 정의와 그 차이에 대해서 알아본다

SQL의 종류 

  • DDL (Data Definition Language) : 데이터 정의 언어
  • DML (Data Manipulation Language) : 데이터 조작 언어
  • DCL (Date Control Language) : 데이터 제어 언어
  • TCL (Transaction Control Language) : 트랜잭션 제어 언어

DDL (Data Definition Language)이란 ?

데이터베이스를 정의하는 언어. 데이터를 생성, 수정, 삭제하는 등의 데이터의 전체의 골격을 결정하는 역할을 하는 언어 입니다. 데이터베이스, 테이블등을 생성하는 역할을 한다.

DDL 특징

명령어를 입력하는 순간 작업이 즉시 반영(Auto Commit) 되기 때문에 주의해야 한다. 

DDL 종류

  • CREATE - 테이블 생성
  • ALTER - 테이블 구조 수정
    • ADD COLUMN - 컬럼 추가 ex. alter table board add column content varchar(100) 
    • DROP COLUMN - 컬럼 삭제
    • MODIFY COLUMN - 컬럼 수정
    • RENAME COLUMN - 컬럼 이름 변경
    • DROP CONSTRAN - 컬럼 제약조건 기반하여 삭제
  • DROP - 테이블 삭제
    • 테이블 전체를 삭제, 공간, 객체를 삭제. 롤백 불가
  • RENAME - 테이블 이름을 변경
  • TRUNCATE - 테이블 초기화
    • 삭제 후 용량이 줄어들고 인덱스도 모두 삭제 됨. 데이터만 선택해서 삭제 불가. 롤백 불가

DML (Data Manipulation Language)이란 ?

정의된 데이터베이스에 입력된 레코드를 조회하거나 추가, 수정하거나 삭제하는 등의 역할을 한다.

DML 특징

DDL과 달리 DML은 적는 즉시 반영(Auto Commit)이 되기 않는다. 즉, DML에 의한 데이터 변동은 영구적인 변경이 아니기 때문에 ROLLBACK으로 다시 되돌릴 수 있다.

또한, DML은 Target 테이블을 메모리 버퍼 위에 올려두고 변경을 수행하기 때문에, 실시간으로 테이블에 반영되지 않는다. Commit 명령어를 통해 Transaction을 종료해야 해당 변경 사항이 테이블에 반영된다.

DML 종류

  • SELECT - 데이터 조회
  • INSERT - 데이터 추가
  • UPDATE - 데이터 수정
  • DELETE - 데이터 삭제

DCL (Data Control Language)이란 ?

데이터를 관리 목적으로 보안, 무결성, 회복, 병행 제어 등을 정의하는데 사용한다. 데이터베이스에 접근하여 읽거나 쓰는 것을 제한할 수 있는 권한을 부여하거나 박탈할 수 있고 트랜잭션을 명시하거나 조작할 수 있다.

DCL 종류

  • GRANT - 특정 데이터베이스 사용자에게 특정 작업에 대한 수행권한 부여
  • REVOKE - 특정 데이터베이스 사용자에게 특정 작업에 대한 수행권한 박탈, 회수

TCL (Transaction Control Language)이란 ?

DCL과 비슷한 맥락이지만 데이터를 제어하는 언어가 아닌 트랜잭션을 제어할때 사용한다. 논리적인 작업 단위를 묶어 DML에 의해 조작된 결과를 트랜잭션 별로 제어한다.

 

트랜잭션이란 ?

데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위를 말한다. 보통 DBMS 선능을 초당 트랜잭션이 몇개가 실행되었는지로 측정한다. MySQL의 입력하는 모든 명령어들은 각각 하나의 트랜잭션이라고 할 수 있다.

 

TCL 종류

  • COMMIT - 트랜잭션의 작업을 정상적으로 처리
  • ROLLBACK - 트랜잭션의 작업을 취소 및 원래대로 복구
  • SAVEPOINT - COMMIT 전 특정 시점까지만 반영하거나 ROLLBACK

 

참고

https://velog.io/@alicesykim95/DB-DDL-DML-DCL-TCL%EC%9D%B4%EB%9E%80#-dcl-%ED%8A%B9%EC%A7%95

https://velog.io/@cha-suyeon/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A43-SQL-DDL-DML-DCL

https://zzdd1558.tistory.com/88