본문 바로가기
Development/Database

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

by 버들도령 2020. 4. 3.
728x90

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

SQL (Structured Query Language)

DML (Data Manipulation Language, 데이터 조작어)
데이터베이스의 데이터를 관리하는 데 사용됩니다. DML 명령은 자동으로 커밋되지 않습니다. 즉, DML 명령에 의한 변경은 데이터베이스에 영구적이지 않으므로 롤백할 수 있습니다.
DML(INSERT, UPDATE, DELETE, SELECT) 명령어의 경우, 조작하려는 테이블을 메모리 버퍼에 올려놓고 작업을 하기 때문에 실시간으로 테이블에 영향을 미치는 것은 아니다. 따라서 버퍼에서 처리한 DML 명령어가 실제 테이블에 반영되기 위해서는 COMMIT 명령어를 입력하여 TRANSACTION을 종료해야 한다. 그러나 SQL Server의 경우는 DML의 경우도 AUTO COMMIT으로 처리되기 때문에 실제 테이블에 반영하기 위해 COMMIT 명령어를 입력할 필요가 없다.
SELECT 데이터베이스에서 데이터를 검색. (RETRIEVE라고도 함)

옵션
 - ALL : 기본 옵션이므로 별도로 지정하지 않아도 되며, 중복되는 데이터가 있더라도 모두 출력
 - DISTINCT : 중복된 데이터가 있는 경우 1건만 출력
INSERT 테이블에 데이터를 삽입 (추가)
UPDATE 테이블 내의 기존 데이터를 수정
DELETE 테이블에서 데이터를 삭제

테이블의 전체 데이터를 삭제하는 경우, 시스템 활용 측면에서는 삭제된 데이터를 로그로 저장하는 DELETE TABLE 보다는 시스템 부하가 적은 TRUNCATE TABLE을 권고한다. 단, TRUNCATE TABLE의 경우 삭제된 데이터의 로그가 없어서 ROLLBACK이 불가능하므로 주의해야 한다.

그러나 SQL Server의 경우 사용자가 임의적으로 트랜잭션을 시작한 후 TRUNCATE TABLE을 이용하여 데이터를 삭제한 이후 오류가 발견되어, 다시 복구를 원할 경우 ROLLBACK 문을 이용하여 테이블 데이터를 원 상태로 되돌릴 수 있다.
MERGE UPSERT 작업 (INSERT 또는 UPDATE)
데이터가 테이블에 존재하지 않으면 INSERT, 존재하면 UPDATE를 수행한다.
CALL PL/SQL 또는 Java 서브 프로그램 호출
EXPLAIN PLAN 데이터 접근 경로를 해석 (SQL문이 어떻게 실행/작동하는지에 대한 점검/분석을 할 수 있도록 도와준다)
LOCK TABLE 동시성 제어

 

DDL (Data Definition Language, 데이터 정의어) - Auto Commit
데이터베이스 구조 또는 스키마(schema)를 정의하는데 사용.
주의 : 직접 데이터베이스의 테이블에 영향을 미치기 때문에 DDL 명령어를 입력하는 순간. 명령어에 해당하는 작업이 즉시(AUTO COMMIT) 완료된다는 것을 기억하기 바란다.
CREATE 데이터베이스의 객체를 생성
ALTER 데이터베이스의 구조를 변경
DROP 데이터베이스의 객체를 삭제 (테이블의 모든 데이터와 구조를 삭제)
RENAME 데이터베이스의 객체 이름을 변경
COMMENT 데이터에 주석등을 추가
TRUNCATE 테이블에 할당된 모든 공간을 포함하여 모든 레코드를 제거. (테이블 객체의 저장공간 재사용 가능)

 

DCL (Data Control Language, 데이터 제어 언어) - Auto Commit
데이터베이스에 권한 부여
주의 : 직접 데이터베이스의 테이블에 영향을 미치기 때문에 DCL 명령어를 입력하는 순간. 명령어에 해당하는 작업이 즉시(AUTO COMMIT) 완료된다는 것을 기억하기 바란다.
GRANT 데이터베이스에 대한 사용자의 액세스 권한을 제공. (특정 사용자만 특정 작업을 할 수 있도록 지정 가능)
REVOKE GRANT 명령으로 주어진 액세스 권한을 철회.

 

TCL (Transaction Control Language, Transaction 제어 언어)
데이터의 보안, 무결성, 회복, 병행 수행제어 등을 정의하는데 사용
COMMIT 트랜잭션의 작업 결과를 저장 반영 (트랜젝션 완료)
ROLLBACK 데이터베이스를 마지막 COMMIT 된 시점의 상태로 복원
데이터에 대한 변경 내용은 논리적인 트랜잭션으로 그룹화 될 수 있다.
SAVEPOINT 저장점(SAVEPOINT)을 정의하면 롤백(ROLLBACK)할 때 트랜잭션에 포함된 전체 작업을 롤백하는 것이 아니라 현 시점에서 SAVEPOINT까지 트랜잭션의 일부만 롤백할 수 있다. 따라서 복잡한 대규모 트랜잭션에서 에러가 발생했을 때 SAVEPOINT까지의 트랜잭션만 롤백하고 실패한 부분에 대해서만 다시 실행할 수 있다. (일부 툴에서는 지원이 안 될 수 있음) 복수의 저장점을 정의할 수 있으며, 동일이름으로 저장점을 정의했을 때는 나중에 정의한 저장점이 유효하다.
SET TRANSACTION Transaction 지정

 

728x90

댓글