DML(data manipulation language) : 데이터 조작어
데이터를 조회(SELECT), 삭제(DELETE), 입력(INSERT), 변경(UPDATE)하여 데이터를 조작하는데 사용하는 SQL구문
1. INSERT
INSERT INTO 테이블이름(컬럼명1, 컬럼명2../모든 컬럼에 입력시 생략) VALUES(값1, 값2...)
2. UPDATE
-- 형식:
UPDATE 테이블이름 SET 컬럼명 = 변경할 값 WHERE 조건;
-- 예시
UPDATE emp_table SET ename = 'John' WHRE ename = 'Joohn';
3. DELETE : 테이블의 행을 삭제
DELETE 테이블이름 WHERE 조건;
4. MARGE
: 조건에 따라 삽입, 갱신, 삭제 후 갱신 작업을 한번에 할 수 있는 구문
해당 행이 존재한다면 UPDATE, 없는 행이라면 INSERT를 수행, 삽입/갱신에 대한 선택의 조건은 ON
TRANSACTION
1. Transaction이란?
- 데이터 처리의 논리적인 단위
- 오라클에서 발생하는 여러 SQL문을 하나의 논리적 단위로 처리
- 여러개의 작업을 하나의 논리적 단위로 묶어 반영과 원상복귀를 할 수 있도록 하게 사용.
ex: A가 B에게 500만원을 송금하는 것을 하나의 단위로 묶음 (A계좌로부터 출금 -> B계좌로 입금)
- SQL 명령문의 일련의 과정 중 문제가 발생한다면 과정 전체를 취소하고 다시 처음부터 실행
2. 명령어
- SAVEPOINT: 현재의 트랜잭션을 작게 분할하여 표시한 곳 까지 ROLLBACK한다.
- ROLLBACK: 비정상적으로 처리했을 경우 되돌리기(COMMIT 지점까지만 복구)
- COMMIT: 정상적으로 진행되었다면 데이터에 최종적으로 저장(하나의 트랜잭션 과정 종료)
→ 트렌젝션을 사용하면 데이터의 부정합을 방지할 수 있다.
- COMMIT과 ROLLBACK 장점
: 데이터 무결성 보장, 영구적인 변경 전 데이터 변경사항 확인, 논리적으로 연관된 작업 그룹화
* AUTO COMMIT / AUTO ROLLBACK
: 사용자가 COMMIT과 ROLLBACK을 수행하지 않더라도 자동직으로 실행하는 경우
- 프로그램이 비정상적으로 종료되면 AUTO ROLLBACK
- DDL, DCL명령문 수행
- 정전발생 혹은 컴퓨터 다운 시 AUTO ROLLBACK
-- 예제
-- (tip)테스트용 테이블 만들기: 기존 테이블을 그대로 복사(제약조건은 가져오지 않음)
-- CREATE TABLE 새로운테이블명 AS SELECT 컬럼명 or * FROM 기존테이블명;
--테스트용 테이블
CREATE TABLE test_table AS SELECT * FROM dept_table;
SAVEPOINT c1;
DELETE FROM test_table WHERE deptno = 10;
COMMIT;
SAVEPOINT c2;
DELETE FROM test_table WHERE deptno = 30;
SAVEPOINT c3;
DELETE FROM test_table WHERE deptno = 20;
SAVEPOINT c4;
DELETE FROM test_table WHERE deptno = 10;
ROLLBACK TO SAVEPOINT c4; --→ 10번부서 테이블 DELETE 취소
ROLLBACK TO SAVEPOINT c3; --→ 20번부서 테이블 DELETE 취소
ROLLBACK TO SAVEPOINT c2; --→ 30번부서 테이블 DELETE 취소
-- 혹은
ROLLBACK; --→ 10, 20, 30 테이블 DELETE 취소
--그러나
ROLLBACK TO SAVEPOINT c1; --→ 불가능, COMMIT 이전으로는 돌아갈 수 없다.
'Database' 카테고리의 다른 글
8. 서브쿼리 (0) | 2023.05.04 |
---|---|
7. JOIN (0) | 2023.05.04 |
5. 단일함수/그룹함수/CASE문 (0) | 2023.05.04 |
4. SQL언어의 종류 / SELECT / WHERE / 연산자 (0) | 2023.05.04 |
3. 인덱스 (0) | 2023.05.04 |