무거운 궁댕이 2024. 5. 24. 19:57

 DB에서는 사용자를 대신해 DB를 구축하고 활용 및 관리하는 DB 관리 시스템에 부탁할 때 사용하는 언어가 있다. 이것이 바로 데이터 언어(data language)다.

 

 데이터 언어에는 상황에 따른 용법이 있다. 데이터 언어는 DB 관리 시스템의 정의, 조작, 제어 기능을 이용하기 위한 수단이기 때문에 사용 목적에 따라 데이터 정의어, 데이터 조작어, 데이터 제어어로 나눈다. 이는 하나의 데이터 언어를 기능에 따라 내부적으로 구분 짓는 것일 뿐 독립적으로 존재하는 언어들은 아니다.

 

데이터 정의어

 데이터 정의어(DDL : Data Definition Language)는 새로운 DB를 구축하기 위해 스키마를 정의하거나 기존 스키마의 정의를 삭제 또는 수정하기 위해 사용하는 데이터 언어다. 즉, 새로 만들려는 DB의 스키마를 설명하거나 이미 정의된 스키마의 구조나 제약조건 등을 변경 또는 삭제하고 싶어 이를 DB 관리 시스템에 알릴 때 사용한다. 데이터 정의어로 정의된 스키마는 데이터 사전에 저장되고, 삭제나 수정이 발생하면 이 내용도 데이터 사전에 반영된다. 데이터 사전에 저장된 스키마 정보는 사용자나 DB 관리 시스템이 필요할 때 참조할 수 있다.

 

데이터 조작어

 데이터 조작어(DML : Data Mainpulation Language)는 사용자가 데이터의 삽입, 삭제, 수정, 검색 등의 처리를 DB 관리 시스템에 요구하기 위해 사용하는 데이터 언어다. 데이터 정의어를 이용해 스키마를 정의하면 스키마에 따라 조직에 필요한 실제 데이터 값(인스턴스)이 저장되는데, 사용자가 실제 데이터 값을 활용하기 위해 사용하는 것이 데이터 조작어다. 데이터 조작어는 설명 방식에 따라 절차적 데이터 조작어와 비절차적 데이터 조작어로 나눈다.

 

절차적 데이터 조작어

 절차적 데이터 조작어(procedural DML)는 사용자가 어떤 데이터를 원하고 해당 데이터를 얻으려면 어떻게 처리해야 하는지를 설명한다.

 

비절차적 데이터 조작어

 비절차적 데이터 조작어(nonprocedural DML)는 사용자가 어떤 데이터를 원하는지만 설명한다. 즉, 해당 데이터를 얻으려면 어떻게 처리해야 하는지는 DB 관리 시스템에 맡긴다. 비절차적 데이터 조작어는 사용자가 어떤 데이터를 원하는지만 DB 관리 시스템에 선언하는 방식이기 때문에 선언적 언어(declarative language)라고도 한다.

 

데이터 제어어

 데이터 제어어(DCL : Data Control Language)는 DB에 저장된 데이터를 여러 사용자가 무결성과 일관성을 유지하며 문제없이 공유할 수 있도록, 내부적으로 필요한 규칙이나 기법을 정의하는 데 사용하는 데이터 언어다.

 

 데이터 제어어를 이용해 규칙이나 기법을 정의하는 이유는 다음과 같은 특성을 보장하기 위해서다.

 

1. DB에 정확하고 유효한 데이터만 유지하는 "무결성"

 

2. 허가받지 않는 사용자가 데이터에 접근하는 것을 차단하거나, 허가된 사용자가 접근 권한이 있는 데이터에만 접근할 수 있게 하는 "보안"

 

3. 장애가 발생해도 데이터의 일관성을 유지하는 "회복"

 

4. 여러 사용자가 같은 데이터에 동시에 접근하여 처리할 수 있게 하는 "동시성"