SQL(DDL,DML,DCL,TCL)과 HWM
by hiSonSQL은 Structured Query Language로 구조화된 질의 언어이다.
SQL 문법의 종류
1. 데이터 정의 언어(DDL : Data Definition Language)
테이블과 컬럼을 정의하는 명령어이다. auto commit 된다.
DDL의 종류로는 CREATE, ALTER, DROP, RENAME, TRUNCATE 가 있다.
CREATE : 테이블 생성
ALTER : 테이블의 구조 수정
DROP : 테이블 삭제
RENAME : 테이블 이름 변경
TRUNCATE : 테이블 초기화
2. 데이터 조작 언어(DML : Data Manipulation Language)
데이터베이스의 내부 데이터를 관리하기 위한 언어이다. auto commit되지 않기 때문에 rollback이 가능하다.
DML의 종류로는 SELECT, INSERT, UPDATE, DELETE가 있다.
SELECT : 데이터베이스에서 데이터를 검색
INSERT : 테이블에 데이터를 추가
UPDATE : 테이블 내에 존재하는 데이터를 찾아서 수정
DELETE : 테이블 내에 존재하는 데이터를 찾아서 삭제
=> UPDATE와 DELETE는 path의 개념이다.
3. 데이터 제어 언어(DCL : Data Control Language)
데이터를 관리하는 것을 목적으로 보안, 무결성, 회복, 병행 제어 등을 정의하는데 사용한다.
DCL의 종류로는 GRANT, REVOKE가 있다.
GRANT : 권한을 정의할 때 사용
REVOKE : 권한을 삭제할 때 사용
4. 트랜젝션 제어 언어(TCL : Transaction Control Language)
트랜잭션을 제어할 때 사용한다.
트랜잭션이란 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위이다.
TCL의 종류로는 COMMIT, ROLLBACK, SAVEPOINT 가 있다.
COMMIT : 모든 작업을 정상적으로 처리하겠다는 명령어
ROLLBACK : 모든 작업을 다시 돌려 놓겠다는 명령어
SAVEPOINT : Commit 전에 특정 시점까지만 반영하거나 Rollback 하겠다는 명령어
HWM이란?
High Water Mark 로 테이블의 데이터가 어디까지 들어있다는 것을 가리키는 일종의 포인터이다.
일반적으로 테이블을 읽는다는 것은 해당 테이블의 처음부터 HWM이 가리키는 곳까지 읽는 것을 말한다.
HWM의 특성
1. 데이터파일은 HWM을 가지지 않으며, Segment만이 HWM을 가진다.
2. HWM은 증가하기만 한다. (감소시키려면 truncate나 analyze를 해줘야한다)
3. Truncate 명령을 사용하면 HWM은 초기화가 된다.
4. Delete 명령은 HWM에 영향을 주지 않는다.
Delete와 Truncate 차이점
1. Delete
-데이터만 삭제 될 뿐 테이블 용량은 줄어들지 않는다.
-auto commit 되지 않기 때문에 rollback이 가능하다.(DML특징)
-데이터를 삭제해도 HWM이 감소하지 않는다.(Oracle)
-where절을 사용하여 일부만 삭제할 수 있다.
2. Truncate
-테이블을 최초 생성된 초기 상태로 만든다.
-용량이 줄어들고 모든 데이터가 삭제된다.
-auto commit 되기 때문에 rollback이 불가능하다.(DDL특징)
-Truncate를 하면 HWM이 초기화된다.
-일부만 삭제하는 것은 불가능하다.
'📑DB > Oracle' 카테고리의 다른 글
이너조인(inner join)과 아우터조인(outer join) (0) | 2023.05.01 |
---|---|
오라클의 물리적, 논리적 구조 (0) | 2023.04.26 |
블로그의 정보
개발 보석함
hiSon