Skip to content

Procedural/Nonprocedural DML

DML은 사용자가 DB에서 원하는 데이터를 처리할 수 있도록 명세하기 위한 도구이다. 간단하게 말하면 테이블의 데이터를 입력/수정/삭제/조회하는 데 쓰이는 쿼리 명령어라고 할 수 있다.

DML은 데이터 처리를 명세하는 방법에 따라 두가지 유형으로 나눌 수 있다.

절차적 데이터 조작어(Procedural DML)

절차적 데이터 조작어는 사용자가 무슨 데이터(What)를 원하며, 그것을 어떻게(How) 접근하여 처리할지 명세해야하는 초급 데이터 언어이다.

이런 데이터 조작어는 데이터 베이스로부터 한 번에 하나의 레코드(One-record-at-a-time)를 검색해서 호스트 언어(해당 응용 프로그램을 작성하는데 사용된 범용 프로그래밍 언어)와 함께 처리하는 특성을 가지고 있다.

비절차적 데이터 조작어(Nonprocedural DML)

비정차적 데이터 조작어는 사용자가 무슨(What) 데이터를 원하는지만 명세하고, 그것을 어떻게(How) 접근하여 처리할 것인가에 대해서는 명세할 칠요 없이 DBMS에 위임하는 고급 데이터 언어이다.

어떤 데이터를 DBMS에게 요청하면 (ex.이름이 홍길동인 사람) 해당 데이터를 어떤 방식으로 찾을지 사용자가 지정하지 않아도 알아서 탐색하여 쿼리에 맞는 작업을 자동으로 수행한다.

사용자가 원하는 데이터만 선언하는 것이기 때문에 선언적 언어(declarative language)라고도 한다.

Oracle이나 MySQL등 현대의 DBMS는 비절차적 데이터 조작어를 사용한다.