[DB] 데이터 조작어 (DML) 이란?
서론
이전 글에서는 데이터 구축을 위한 용도로 사용하는 데이터 정의어(DDL)에 대해서 살펴보았다.
이번 포스팅에서는 데이터베이스의 데이터 삽입, 삭제, 갱신 역할을 수행하는 데이터 조작어(DML)에 대한 개념과 유형을 알아보고자 한다.
데이터 정의어에 대한 개념 이해가 필요한 분들은 아래 글을 참고하면 좋을 것 같다.
DML(Data Manipulation Language, 데이터 조작어)
데이터 조작어는 데이터베이스 사용자가 응용 프로그램이나 질의어를 통해서 저장된 데이터를 실질적으로 처리하는 데 사용되는 언어이다.
데이터 조작어에 속한 유형은 다음과 같다.
명령문 | 기능 |
SELECT | 테이블에서 튜플을 검색한다. |
INSERT | 테이블에 새로운 튜플을 삽입한다. |
DELETE | 테이블에서 튜플을 삭제한다. |
UPDATE | 테이블에서 튜플의 내용을 갱신한다. |
1. 삽입문 (INSERT INTO ~)
삽입문은 기본 테이블에 새로운 튜플을 삽입할 때 사용하는 명렁문이다.
INSERT INTO 테이블명([속성명1, 속성명2, ...])
VALUES(데이터1, 데이터2, ...);
삽입문이 가지고 있는 특징은 다음과 같다.
- 대응하는 속성과 데이터는 개수와 데이터 유형이 일치해야 한다.
- 기본 테이블의 모든 속성을 사용할 때는 속성명을 생략할 수 있다.
- SELECT문을 사용하여 다른 테이블의 검색 결과를 삽입할 수 있다.
먼저 첫번째 특징의 예시를 살펴보자.
- 예시 : <사원> 테이블에 (이름 - 홍길동, 부서 - IT) 데이터를 삽입하시오.
INSERT INTO 사원(이름, 부서) VALUES ('홍길동', 'IT');
<사원> 이라는 테이블에 이름, 부서를 제외한 다른 속성이 추가적으로 있을 때, 위와 같이 2개의 속성만 정의하는 경우라면 테이블명 뒤에 속성명을 정의해야 한다. 그리고 이름, 부서의 타입은 문자열 이므로 대응하는 데이터의 유형도 문자열 타입이 들어간 것을 확인할 수 있다.
다음은 두번째 특징의 예시이다.
- 예시 : <사원> 테이블에 (홍길동, IT, 서교동, 300) 데이터를 삽입하시오.
INSERT INTO 사원 VALUES ('홍길동', 'IT', '서교동', 300);
예를 들어 이름, 부서, 주소, 기본급 이라는 4개의 속성으로 구성된 <사원> 테이블에 4개의 속성을 모두 정의하는 경우는 위와 같이 테이블명 옆에 속성명을 생략할 수 있다.
그러나 정의할 4개의 데이터는 테이블 각각의 속성값과 데이터 유형이 일치해야 데이터 삽입이 정상적으로 이루어진다.
마지막으로 세번째 특징의 예시를 살펴보자.
- 예시 : <사원> 테이블에 있는 IT 부서의 모든 튜플을 편집부원(이름, 주소, 기본급) 테이블에 삽입하시오.
INSERT INTO 편집부원(이름, 주소, 기본급)
SELECT 이름, 주소, 기본급
FROM 사원
WHERE 부서 = 'IT';
2. 삭제문 (DELETE FROM ~)
삭제문은 기본 테이블에 있는 튜플 중에서 특정 튜플(행)을 삭제하는 명령문이다.
삭제문을 사용하기 위한 일반 형식은 다음과 같다.
DELETE
FROM 테이블명
[WHERE 조건];
- 모든 레코드를 삭제할 때에는 WHERE 절을 생략한다.
- 모든 레코드를 삭제하더라도 테이블 구조는 남아 있다. 즉, 테이블을 완전히 제거하는 DROP과 다르다는 것을 유의해야 한다.
예를 들어, <사원> 테이블에서 부서가 IT인 튜플을 모두 삭제하려면 다음과 같이 명령문을 작성할 수 있다.
DELETE FROM 사원 WHERE 부서 = 'IT';
3. 갱신문 (UPDATE ~ SET ~)
갱신문은 기본 테이블에 있는 튜플 중에서 특정 튜플의 내용을 변경할 때 사용하는 명령문이다.
갱신을 사용하기 위한 일반 형식은 다음과 같다.
UPDATE 테이블명
SET 속성명 = 데이터[, 속성명 = 데이터, ...]
[WHERE 조건];
예시를 통해 갱신문을 이해해보자.
- 예시 : <사원> 테이블에서 이름이 '홍길동'의 주소를 '합정동' 으로 수정하시오.
UPDATE 사원 SET 주소 = '합정동' WHERE 이름 = '홍길동';
- 예시 : <사원> 테이블에서 이름이 '홍길동'의 부서를 '기획부'로 변경하고 기본급을 10만원 인상시켜라.
UPDATE 사원 SET 부서 = '기획부', 기본급 = 기본급 + 5 WHERE 이름 = '홍길동';
다음 포스팅에서는 데이터 조작어(DCL)의 개념과 유형을 살펴볼 예정이다.