데이터베이스에서는 모든 작업을 SQL문을 이용해서 작업한다
SQL문은 다루는 객체나 용도에 따라 그룹핑하여 DDL, DML, DCL로 나눌 수 있다
DDL (Data Definition Language) - 데이터 정의어
데이터베이스를 정의하는 언어
데이터를 생성하거나 수정, 삭제 등의 데이터의 전체 골격을 결정하는 역할의 언어를 말한다
단, DDL은 명령어를 입력하는 순간 작업이 즉시 완료(AUTO COMMENT)되기 때문에 주의해야 한다!
또한 DDL은 ROLLBACK이 불가능하다
- CREATE : 데이터베이스, 테이블 등을 생성하는 역
- ALTER : 테이블을 수정하는 역할
- DROP : 데이터베이스, 테이블을 삭제하는 역할
- TRUNCATE : 테이블을 초기화시키는 역할
- RENAME : 대상 객체 이름을 변경하는 역할
- COMMENT : 데이터에 주석 등을 추가하는 역할
SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용한다
데이터베이스 관리자나 데이터베이스 설계자가 주로 사용한다
DML (Data Manipulation Language) - 데이터 조작어
정의된 데이터베이스에 입력된 레코드를 조회하거나 수정하거나 삭제하는 등의 역할을 하는 언어를 말한다
즉, 테이블에 있는 행과 열(내부 데이터)을 조작하는 언어이다
데이터베이스 사용자가 질의어를 통해 저장된 데이터를 실질적으로 처리하는데 사용하는 언어이다
DML은 DDL과 달리 AUTO COMMIT 되지 않는다
따라서 DML에 의한 데이터 변동은 영구적인 변경이 아니므로, ROLLBACK 처리가 가능하다
또한 DML은 TARGET 테이블을 메모리 버퍼 위에 올려두고 변경을 수행하기 때문에 실시간성으로 테이블에 반영되지 않는다
COMMIT 명령어를 통해 TRANSACTION을 종료해야 해당 변경 사항이 테이블에 반영된다
- SELECT : 데이터를 조회하는 역할
- INSERT : 데이터를 삽입하는 역할
- UPDATE : 데이터를 수정하는 역할
- DELETE : 데이터를 삭제하는 역할
🚨 TRUNCATE VS DELETE
테이블 내부 데이터 전체를 삭제하는 경우, DELETE TABLE보다 TRUNCATE TABLE이 더 추천된다
DELETE TABLE은 삭제된 데이터를 로그로 저장하기 때문에 TRUNCATE TABLE에 비해 시스템 부하가 발생하기 때문이다
데이터베이스 사용자가 응용 프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 처리하는데 사용하는 언어
데이터베이스 사용자와 데이터베이스 관리 시스템 간의 인터페이스를 제공한다
DCL (Data Control Language) - 데이터 제의어
데이터베이스에 접근하거나 객체에 권한을 주는 등의 역할을 하는 언어를 말한다
데이터를 제어하는 언어이다
데이터의 보안, 무결성, 회복 등을 정의하는데 사용한다
직접 데이터베이스의 테이블에 영향을 미치기 때문에 DCL 명령어를 입력하는 순간 작업이 즉시 AUTO COMMIT 되므로 주의해야 한다
- GRANT : 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한 부여를 한다
- REVOKE : 특정 데이터베이스 사용자에게 특정 작업에 대한 권한을 박탈, 회수한다
- COMMIT : 트랜잭션의 작업이 정상적으로 완료되었음을 관리자에게 알려준다
- ROLLBACK : 트랜잭션의 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구한다
ROLL 객체
- CONNECT : DB 접속 권한
- RESOURCE : 테이블이나 인덱스 등을 생성할 수 있는 권한
- CREATE VIEW : 뷰 생성 권한
- DBA : 모든 권한(관리자)
TCL (Transactional Control Language) - 트랜잭션 제의어
일부에서는 DCL에서 트랜잭션을 제어하는 명령어인 COMMIT, ROLLBACK 만을 따로 분리해서 TCL이라고 표현하기도 한다
데이터의 보안, 무결성, 회복, 병행 수행제어 등을 정의하는데 사용된다
- COMMIT : 트랜잭션의 작업 결과를 저장 반영 (트랜잭션 완료)
- ROLLBACK : 데이터베이스를 마지막 COMMIT 된 시점의 상태로 복원한다. 데이터에 대한 변경 내용은 논리적인 트랜잭션으로 그룹화될 수 있다
- SAVEPOINT : COMMIT 전에 특정 시점까지만 반영하거나 ROLLBACK하겠다는 명령어
- SET TRANSACTION
💡 정리
DDL : 데이터베이스와 테이블을 생성 및 변경, 제거한다
DML : 생성된 테이블 내에 있는 데이터들(행과 열)을 입력, 변경, 수정, 검색 등을 한다
DCL : 사용자의 데이터베이스 접속 권한 등을 수정할 수 있다
참고)
https://cbw1030.tistory.com/71
https://velog.io/@ksk5401/DDL-DML-DCL-%EC%9D%B4%EB%9E%80
https://velog.io/@alicesykim95/DB-DDL-DML-DCL-TCL%EC%9D%B4%EB%9E%80
'야미스터디 > Database' 카테고리의 다른 글
[DB] DB View 📌 (0) | 2022.09.07 |
---|---|
[DB] SQL Injection 📌 (0) | 2022.08.31 |
[DB] RDB vs NoSQL 📌 (0) | 2022.08.04 |
[DB] DB Index 📌 (0) | 2022.07.17 |
[MySQL] 더미데이터 생성하기 (0) | 2022.06.10 |
댓글