데이터베이스 DDL DML DCL TCL 정리하기

 

데이터베이스 DDL DML DCL TCL에 대해 정리해봅니다.

학생때 데이터베이스 과목에서 다 배웠고, 실무에서도 사용중이지만 최근들어 스스로 정의하기 애매하여 다시한번 정리할 겸 공부해봅니다. DML / DDL / DCL 은 각각 무엇을 의미하며 우리가 실무에서 사용하고 있는것들이 어디에 속해있는지 아래의 SQL 관계도를 토대로 파악해 봅니다.

 

1. SQL이란?

DBMS(DataBaseManagementSystems) 데이터를 쉽게 관리하게 해주는 관리 시스템에서 데이터(자료)를 관리 및 처리하기 위해 사용할 수 있게 설계된 언어 Structured Query Language(구조적 질의 언어) 입니다. SQL문법에는 DDL문법, DML 문법, DCL 문법, TCL 문법 크게 4가지로 나뉘어 집니다.

 

2. DDL 문법

DDL (Data Definition Language,데이터 정의어)는 데이터베이스 구조 혹은 스키마를 정의할 때 사용합니다. 직접 데이터베이스의 테이블에 영향을 미치기 때문에 DDL 명령어를 입력하는 순간 해당하는 작업이 즉시 완료(AUTO COMMIT)된다는 특징을 가지고 있습니다. DDL명령어는 아래의 6개의 키워드를 포함하며 각각의 키워드를 사용하여 데이터베이스 구조 및 스키마를 정의하고 변경하며 삭제할 수 있습니다.

CREATE 데이터베이스의 스키마를 생성합니다.
ALTER 데이터베이스의 스키마 구조를 변경합니다.
DROP 데이터베이스의 스키마(테이블 및 모든 데이터)를 삭제합니다.
RENAME 데이터베이스의 스키마 이름을 변경할 수 있습니다.
COMMENT 데이터에 주석이나 코멘트 등을 추가할 수 있습니다.
TRUNCATE 테이블에 할당된 모든 레코드를 제거합니다.

 

 

3. DML 문법

DML (Data Manipulation Language,데이터 조작어)는 데이터베이스의 데이터를 조작하는데 사용합니다. DML명령에 의한 모든 작업은 데이터베이스에 영구적이지 않음으로 롤백할 수 있습니다. DML은 사용자 또는 응용 프로그램 소프트웨어가 컴퓨터 데이터베이스에 대하여 데이터를 검색,등록,삭제,수정을 위한 조작을 가능하게 해줍니다.

 

DML명령어는 조작하려는 테이블을 메모리 버퍼에 올려놓고 작업을 진행하기 때문에 실시간으로 테이블에 영향을 미치지 않습니다. 버퍼에서 처리한 DML 명령어가 실제 테이블에 반영되기 위해서는 COMMIT 명령어를 입력하여 TRANSACTION을 종료해야 합니다. 하지만 SQL Server의 경우 DML문법도 DDL문법처럼 자동완료(AUTO COMMIT)처리를 해주기 떄문에 실제 테이블에 반영하기위하여 COMMIT 명령어를 따로 입력할 필요는 없습니다.

SELECT 데이터베이스에서 데이터를 추출(검색)할 때 사용합니다.

[옵션]
ALL - 기본 옵션이므로 별도로 지정하지 않아도 되며, 중복 데이터는 모두 출력합니다.
DISINCT - 중복된 데이터가 있는경우 1건만 출력하는 옵션입니다.

[사용함수]
FROM - 테이블을 지정합니다.
WHERE - 어떤 레코드를 불러올 지 지정합니다.
GROUP BY - 특정 컬럼을 그룹화 합니다.
HAVING - 특정 컬럼을 그룹화한 결과(GROUP BY)에 조건을 걸 수 있습니다.
* WHERE는 그룹화 전, HAVING은 그룹화 후에 조건을 겁니다.
ORDER BY - 레코드의 정렬 순서를 지정합니다.
INSERT 테이블에 데이터를 삽입(추가)할 때 사용합니다. 컬럼의 순서와 값의 순서가 같아야 합니다.
또는 모든 컬럼의 값을 등록할때 컬럼명을 생략하여 사용합니다.
여러 행을 가지고 한번에 데이터를 등록해야 하는 경우 SELECT를 통하여 INSERT할 수 있습니다. 다만 등록하려는 테이블의 컬럼의 순서와 개수가 검색해오는 데이터와 같아야합니다.
UPDATE 테이블의 기존 데이터를 수정할 때 사용합니다. 모든 행을 변경해야 하는 경우 조건절을 사용하여 하위 집합을 선택할 수 있습니다. UPDATE가 성공적으로 이루어 지려면 업데이트된 값은 제약조건에 충돌하지 않아야 합니다.

[제약조건]
고유키 혹은 고유 인덱스 (PRIMARY KEY) - 테이블 내의 개별 데이터를 식별하기 위해 정의된 제약조건 입니다. 이 조건을 설정한 컬럼의 데이터는 컬럼 내에서 중복될 수 없으며 Null값을 허용하지 않는데 즉, PK는 Unique + Not Null의 제약조건을 갖습니다.
CHECK 제약조건 - 해당 컬럼에 허용할 수 있는 데이터 값의 범위를 제한합니다.
NOT NULL 제약조건 - 해당 컬럼의 데이터값에 NULL을 허용하지 않는 제약조건으로 즉, 필수입력을 의미합니다.
DELETE 테이블에서 기존 데이터를 삭제할 때 사용합니다. 하위 집합은 삭제에 대한 조건을 정의할 수 있으며 정의하지 않을 시 모든 행이 삭제됩니다. 테이블의 전체 데이터를 삭제하는 경우 시스템 활용 측면에서 삭제된 데이터를 로그로 저장하는 DELETE 명령어 보다 시스템 부하가 적은 TRUNCATE 문법을 추천합니다. 단 TRUNCATE (TCL문)은 데이터 로그기록을 하지 않아 ROLLBACK이 불가능함으로 주의하여아 합니다.

SQL Server의 경우는 사용자가 임의적으로 트랜잭션을 시작한 후, TRUNCATE를 사용하여 데이터를 삭제한 이후 복구를 원할 경우에 ROLLBACK을 이용하여 테이블 데이터를 원 상태로 되돌릴 수 있도록 지원해줍니다.
MERGE 테이블에 데이터가 존재하지 않으면 INSERT, 존재하면 UPDATE를 작업해주는 UPSERT 작업을 지원합니다.
CALL 프로시저를 호출할 떄 사용합니다. SQL 함수 및 프로시저 또는 트리거에 있는 CALL의 구문은 다른 컨텍스트에서 CALL문으로 지원되는 것의 서브세트라고 생각할 수 있습니다.

이 명령문은 애플리케이션 프로그램에 삽입하거나 대화식으로 발행할 수 있으며 동적으로 준비될 수 있는 실행문입니다.
EXPLAIN PLAN 데이터 접근경로를 해석할 때 사용하며 SQL문이 어떻게 실행하고 작동하는지에 대한 점검 및 분석을 할 때 사용합니다.
LOCK TABLE 트랜잭션 처리의 순차성을 보장하기위한 방법입니다. Lock의 종류로는 공유 및 베타 lock이 있습니다. 공유락은 read lock, 베타락은 write lock이라고 불립니다.

 

 

4. DCL 문법

DCL (Data Control Language, 데이터 제어 언어)는 데이터베이스에 권한을 부여할 때 사용합니다. 직접 데이터베이스의 테이블에 영향을 미치기 때문에 DCL 명령어를 사용하는 순간 해당하는 작업이 즉시 완료(AUTO COMMIT)되는 특성을 가지고 있습니다.

GRANT 권한을 정의할 때 사용하는 명령어입니다. 데이터베이스에 대한 사용자 액세스 권한을 제공할 때 주로 사용합니다.
REVOKE 권한을 삭제할 때 사용하는 명령어입니다. GRANT 명령으로 주어진 권한을 삭제할 때 사용합니다.

 

 

5. TCL 문법

TCL (Transaction Control Language, 트랜젝션 제어 언어)는 데이터의 보안 / 무결성 / 회복성 / 병행제어 등을 정의할 때 사용합니다. DCL과 구분하여 트랜잭션을 제어할 때 사용합니다.

COMMIT 트랜잭션 처리가 정상적으로 종료되어 트랜잭션이 수행한 변경 내용을 데이터베이스에 반영할 때 사용합니다.
내용을 변경한 트랜잭션이 완료되면, 그 트랜잭션에 의해 데이터베이스는 새로운 일관된 상태로 변경됩니다.
ROLLBACK 하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스의 일관성이 침해되었을 경우 트랜잭션이 행하였던 모든 변경 작업을 취소하고 이전 상태로 되돌릴 때 사용합니다.
SAVEPOINT 저장점이라 불리며, 정의하면 롤백할 떄 트랜잭션에 포함된 전체 작업을 롤백하는 것이 아니라 현 시점에서 저장점까지 트랜잭션의 일부만 롤백할 수 있습니다. 따라서 복잡한 대규모 트랜잭션에서 에러가 발생했을 때 저장점까지의 트랜잭션만 롤백하고 실패한 부분에 대해서만 다시 실행할 수 있습니다.
SET TRANSATION 트랜잭션을 지정할 때 사용합니다.

 

 

관련글

 

 

(SQL) TCL(Transaction Control Language) 이란 무엇일까?

TCL(Transaction Control Language)이란?  ▷ DCL(Data Control Language)에서 트랜잭션을 제어하는 명령인  COMMIT과 ROLLBACK만을 따로 분리해서 TCL이라고 표현하고 있습니다. ◈COMMIT 연산 ▷ COMMIT 연산..

rh-cp.tistory.com

 

[데이터베이스] Lock에 대해서 알아보자 - 기본편

안녕하세요. 오늘은 DataBase의 Lock에 대해서 알아보고 정리해보는 시간을 가져보도록 하겠습니다. DataBase는 데이터를 영속적으로 저장하고 있는 시스템입니다. 이런 시스템은 같은 자원(데이터)

sabarada.tistory.com

 

SQL/DML - 인코덤, 생물정보 전문위키

# DML ([[데이터 조작 언어]] : [[Data Manipulation Language]])

www.incodom.kr

 

DBMS 데이터 언어 - DDL, DML, DCL, TCL 의 정의

DBMS 데이터 언어 - DDL, DML, DCL, TCL 의 정의 DML (Data Manipulation Language, 데이터 조작어) 데이터베이스의 데이터를 관리하는 데 사용됩니다. DML 명령은 자동으로 커밋되지 않습니다. 즉, DML..

iamfreeman.tistory.com

 

'DB' 카테고리의 다른 글

[MongoDB] MacOs에 MongoDB 설치하기  (0) 2022.06.20
데이터베이스 트랜잭션 알아보기.  (0) 2022.03.24
데이터베이스 정규화  (0) 2022.03.22