데이터베이스

SQL의 분류 (DML, DDL, DCL)

별보는 개발자 2022. 7. 11. 05:00

1. DML(Data Manipulation Language)

DML은 데이터를 조작(선택, 삽입, 수정, 삭제) 하는데 사용하는 언어이다.

DML 이 사용되는 대상은 테이블의 행이다. 

그렇기 때문에 DML을 사용하기 위해서는 테이블이 정의되어 있어야 한다.

 

SQL 문법중에 SELECT, INSERT, UPDATE, DELETE가 이 문법에 해당된다.

또 DML은 트랜잭션을 발생시키키도 한다.

트랜잭션이란? 테이블의 데이터를 변경할 때 실제 테이블에 완전히 적용하지 않고 임시로 적용시키는 것을 말한다. 그래서 만약에 실수가 있었을 경우에 임시로 적용시킨 것을 취소시킬 수 있게 해준다.

 

2. DDL(Data Definition Language)

DDL은 데이터베이스, 테이블, 인덱스, 뷰 등의 데이터베이스 객체를 생성/삭제/변경하는 역할을 한다.

대표적으로 CREATE, DROP, ALTER 등이다.

DDL은 트랙잭션을 발생시키지 않고 실행 즉시 MySQL에 적용을 한다.

그래서 ROLLBACK이나 COMMIT을 시킬 수가 없다

 

3. DCL(Data Control Language)

DCL은 사용자에게 어떤 권한을 부여하거나 빼앗을 때 주로 사용하는 문법이다.

대표적으로 GRANT, REVOKE, DENY가 해당이 된다.

GRANT : 권한부여

REVOKE : 부여된 권한을 취소함

DENY : 부여된 권한을 취소함

 

4. REVOKE와 DENY의 차이점

예를 들어 데이터베이스A에 select 권한이 부여되었다고 해보자

이 데이터베이스A에 대해 select권한을 취소하고 싶을 때는 REVOKE 와 DENY는 같은 의미를 지닌다.

 

하지만 데이터베이스A에 속해 있는 테이블B에 대해서만 select 작업을 막을 경우,

이 때는 DENY를 이용해서 해당 테이블의 접근 권한만 막을 수가 있다

REVOKE를 사용할 경우 데이터베이스A 의 모든 테이블에 대해 select 작업을 막아버리게 된다.