TIL #20 DDL, DCL, DML

HYEON JIN CHOI·2024년 5월 20일

데이터베이스를 다룰 때 우리는 다양한 작업을 수행하게 된다. 데이터베이스 작업은 크게 데이터 정의, 데이터 제어, 데이터 조작으로 나눌 수 있다. 이를 각각 DDL(Data Definition Language), DCL(Data Control Language), DML(Data Manipulation Language) 라고 부른다. 이번 글에서는 이 세 가지 데이터베이스 언어에 대해 다루려고 한다.

1. DDL (Data Definition Language)

DDL 은 데이터베이스 구조를 정의하거나 수정하는 데 사용되는 언어이다. 테이블, 인덱스, 뷰 등의 데이터베이스 객체를 생성, 수정, 삭제하는 명령어들이 포함된다. 주요 명령어는 다음과 같다.

  • CREATE : 데이터베이스 객체를 생성한다.
  • ALTER : 기존 데이터베이스 객체를 수정한다.
  • DROP : 데이터베이스 객체를 삭제한다.
  • TRUNCATE : 테이블의 모든 데이터를 삭제하고 구조만 남긴다.

예를 들어, 새로운 테이블을 생성할 때는 다음과 같은 SQL 문을 사용한다.

CREATE TABLE Students (
    StudentID INT PRIMARY KEY,
    Name VARCHAR(100),
    Age INT,
    Major VARCHAR(100)
);

이처럼 DDL 을 통해 데이터베이스의 구조를 정의하고 관리할 수 있다.

2. DCL (Data Control Language)

DCL 은 데이터베이스에 대한 접근을 제어하는 데 사용되는 언어이다. 사용자의 권한을 설정하거나 해제하는 명령어들이 포함된다. 주요 명령어는 다음과 같다.

  • GRANT : 사용자가 데이터베이스 객체에 접근할 수 있는 권한을 부여한다.
  • REVOKE : 사용자의 접근 권한을 회수한다.

예를 들어, 특정 사용자에게 테이블에 대한 읽기 권한을 부여할 때는 다음과 같은 SQL 문을 사용한다.

GRANT SELECT ON Students TO User1;

반대로, 권한을 회수할 때는 다음과 같은 SQL 문을 사용한다.

REVOKE SELECT ON Students FROM User1;

이처럼 DCL을 통해 데이터베이스의 보안을 강화하고 사용자 접근을 관리할 수 있다.

3. DML (Data Manipulation Language)

DML 은 데이터베이스 내의 데이터를 조작하는 데 사용되는 언어이다. 데이터를 삽입, 수정, 삭제, 조회하는 명령어들이 포함된다. 주요 명령어는 다음과 같다.

  • INSERT : 새로운 데이터를 삽입한다.
  • UPDATE : 기존 데이터를 수정한다.
  • DELETE : 데이터를 삭제한다.
  • SELECT : 데이터를 조회한다.

예를 들어, 새로운 학생 정보를 삽입할 때는 다음과 같은 SQL 문을 사용한다.

INSERT INTO Students (StudentID, Name, Age, Major) VALUES (1, 'John Doe', 20, 'Computer Science');

기존 학생 정보를 수정할 때는 다음과 같은 SQL 문을 사용한다.

UPDATE Students SET Age = 21 WHERE StudentID = 1;

학생 정보를 삭제할 때는 다음과 같은 SQL 문을 사용한다.

DELETE FROM Students WHERE StudentID = 1;

학생 정보를 조회할 때는 다음과 같은 SQL 문을 사용한다.

SELECT * FROM Students WHERE Major = 'Computer Science';

이처럼 DML 을 통해 데이터베이스 내의 데이터를 효율적으로 관리할 수 있다.

4. 회고

DDL, DCL, DML 각각의 언어는 데이터베이스를 효율적으로 관리하고 운영하는 데 필수적이다. 데이터베이스 작업을 수행할 때 이 세 가지 언어의 차이점과 용도를 명확히 이해하고 사용하는 것이 중요하다. 이를 통해 데이터베이스를 더욱 효과적으로 관리하고, 안정적이고 신뢰성 있는 시스템을 구축할 수 있을 것이라 생각한다.

0개의 댓글