1. 데이터 정의어 DDL (Data Definition Language)
- 데이터의 구조를 정의하기 위한 테이블 생성, 삭제 같은 명령어
- Create : 테이블 생성
- Drop : 테이블 삭제
- Alter : 테이블 수정
- Truncate : 테이블에 있는 모든 데이터 삭제
2. 데이터 조작어 DML (Data Manipulation Language)
- 데이터 조회 및 변형을 위한 명령어
- Select, Update, Insert, Delete
- insert into 테이블명 values(값1, 값2, ..)
insert into 테이블명(컬럼1, 컬럼2, ..)
values(값1, 값2,..)
- update 테이블명 set 컬럼1 = 값1, 컬럼2 = 값2,...
Where 조건
- delete (from) 테이블명 where(필수) 조건;
// 몇몇 데이터만 넣거나 삭제할 거라는 것을 명시해야 한다.
2-1. Drop vs Truncate vs Delete
- Drop : 테이블 존재 자체가 삭제
- Truncate : 데이터만 통 삭제
-> 테이블이 삭제되는 명령어는 아니고 테이블 안에 들어있던 모든 레코드들을 제거하는 명령어이다
-> 테이블을 drop 했다가 create 한다.
-> 모든 행을 삭제하는 가장 빠르고 효율적인 방법- Delete : 데이터 골라서 삭제 // delete와 truncate의 차이는 속도. 일반적으로 truncate가 더 빨리 삭제된다.
-> delete truncate처럼 테이블 구조는 남기고 안의 데이터만 삭제한다.
-> delete는 부분삭제 가능
-> 내부 방식이 다르다. 한줄 한줄 삭제를 한다.
Drop Truncate delete
DDL DDL DML
Rollback 불가 Rollback 불가 commit 이전에 Rollback 가능
Auto Commit Auto Commit Auto Commit
테이블 자체를 테이블 최초 데이터만 삭제
완전히 삭제 생성된 초기 상태 로그 남음
로그 안남음 로그 안남음
3. 데이터 제어어 DCL (Data Control Language)
- 사용자에게 권한 생성 혹은 권한 삭제 같은 명령어
- Grant : 권한 생성
- Revoke : 권한 삭제
- *Commit, Rollback : 아래 설명 참조
4. Commit, Rollback
4-1. Commit
- 모든 작업을 정상적으로 처리하겠다고 확정하는 명령어이다.
- 트랜젝션의 처리 과정을 데이터베이스에 반영하기 위해서, 변경된 모든 내용을 모두 영구 저장한다.
- Commit 수행하면, 하나의 트랜젝션 과정을 종료하게 된다.
- Transaction(Insert, Update, ..) 작업 내용을 실제 DB에 저장한다.
- 이전 데이터가 완전히 적용된다.
- 모든 사용자가 변경한 데이터의 결과를 볼 수 있다.
4-2. Rollback
- 작업 중 문제가 발생했을 때 , 트랜젝션의 처리 과정에서 발생한 변경 사항을 취소하고, 트랜잭션 과정을 종료시킨다.
- 트랜잭션으로 인한 하나의 묶음 처리가 시작되기 이전의 상태로 되돌린다.
- Transaction (Insert, Update, Delete) 작업 내용을 취소한다.
- 이전 commit한 곳까지만 복구한다.
- 트랜잭션 작업 중 하나라도 문제가 발생하면 모든 작업을 취소해야 하기 때문에 하나의 논리적인 작업 단위를 구성해 놓아야 한다.
- 문제가 발생하면, 논리적인 작업 단위를 모두 취소해버리면 되기 때문이다.
4-3. Commit, Rollback 명령어의 장점
- 데이터 무결성이 보장된다
// 무결성 : 데이터가 손상되지 않는 것- 논리적으로 연관된 작업을 그룹화할 수 있다.
4-4. 자동 Rollback 되는 경우
- 비정상적인 종료
4-5. 자동 Commit 되는 경우
- create, alter, drop, truncate -> DCL문
- grant, revoke 권한 -> DCL문
- insert, update, delete 작업 후, commit하지 않고, 오라클을 정상 종료시에 commit 명령어를 입력하지 않아도 정상 commit 후 오라클 종료