본문 바로가기
DB & SQL

[SQL] DDL, DML, DCL,TCL

by 무사뎀벨레 2024. 4. 23.

 

 

 

 

 

출처 : https://medium.com/@melste1/sqls-components-ddl-dml-dcl-and-tcl-61ac86cd7b13

 

 

 

 

 

 

DDL (Data Definition Language, 데이터 정의어) - Auto Commit


- 데이터베이스 구조 또는 스키마(schema)를 정의하는 데 사용

- 직접 데이터베이스의 테이블에 영향을 미치기 때문에, DDL 명령어를 입력하는 순간 명령어에 해당하는 작업이 즉시(AUTO COMMIT) 완료된다는 것을 주의해야 함

DDL 설명
CREATE 데이터베이스의 객체를 생성
ALTER 데이터베이스의 구조를 변경
DROP 데이터베이스의 객체를 삭제 (테이블의 모든 데이터와 구조를 삭제)
TRUNCATE 테이블에 할당된 모든 공간을 포함하여 모든 레코드를 제거 (테이블 객체의 저장공간 재사용 가능)

- 테이블의 전체 데이터를 삭제하는 경우, 시스템 활용 측면에서는 삭제된 데이터를 로그로 저장하는 DELETE TABLE 보다는 시스템 부하가 적은 TRUNCATE TABLE을 권고
- 단, TRUNCATE TABLE의 경우 삭제된 데이터의 로그가 없어서 ROLLBACK이 불가능하므로 주의 필요
- 그러나 SQL Server의 경우 사용자가 임의적으로 트랜잭션을 시작한 후 TRUNCATE TABLE을 이용하여 데이터를 삭제한 이후 오류가 발견되어, 다시 복구를 원할 경우 ROLLBACK 문을 이용하여 테이블 데이터를 원 상태로 되돌릴 수 있음
RENAME 데이터베이스의 객체 이름을 변경
COMMENT 데이터에 주석등을 추가

 

 

 

 

 

 

DML (Data Manipulation Language, 데이터 조작어)


- 데이터베이스의 데이터를 관리하는 데 사용

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

 

DML 설명
SELECT 데이터를 검색

[옵션]
 - ALL 기본 옵션이므로 별도로 지정하지 않아도 되며중복되는 데이터가 있더라도 모두 출력
 - DISTINCT 중복된 데이터가 있는 경우 1건만 출력
INSERT 테이블에 데이터를 삽입
UPDATE 테이블 내의 기존 데이터를 수정
DELETE 테이블에서 데이터를 삭제
MERGE UPSERT 작업 (INSERT 또는 UPDATE)
데이터가 테이블에 존재하지 않으면 INSERT, 존재하면 UPDATE를 수행
CALL PL/SQL 또는 Java 서브 프로그램 호출
EXPLAIN PLAN 데이터 접근 경로를 해석(SQL문이 어떻게 실행/작동하는지에 대한 점검/분석을 할 수 있도록 도와줌)
LOCK TABLE 동시성 제어

 

 

 

 

 

 

 

 

DCL (Data Control Language, 데이터 제어 언어) - Auto Commit


- 데이터베이스에 권한 부여

- 직접 데이터베이스의 테이블에 영향을 미치기 때문에 DCL 명령어를 입력하는 순간 명령어에 해당하는 작업이 즉시(AUTO COMMIT) 완료된다는 것을 주의해야 함

 

DCL 설명
GRANT 데이터베이스에 대한 사용자의 액세스 권한을 제공
(특정 사용자만 특정 작업을 할 수 있도록 지정 가능)
REVOKE GRANT 명령으로 주어진 액세스 권한을 해제

 

 

 

 

 

 

 

 

TCL (Transaction Control Language, Transaction 제어 언어)


- 데이터의 보안, 무결성, 회복, 병행 수행제어 등을 정의하는 데 사용

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

 

 

반응형

댓글