1. 제9장 데이터 조작과 트랜잭션
(DATA MANIPULATION LANGUAGE AND TRANSACTION)
이 상덕
2. 1. 테이블 내용 추가 INSERT문
3. 테이블 내용 삭제 DELETE문
2. 테이블 내용 수정 UPDATE문
4. 트랜잭션 관리
CONTENTS
3. - 쿼리의 종류
유형 명령문 기능
질의어
DQL(Data Query Language)
SELECT 데이터 검색
데이터 조작어
DML(Data Manipulation Language)
INSERT
UPDATE
DELETE
데이터 입력
데이터 수정
데이터 삭제
데이터 정의어
DDL(Data Definition Language)
CREATE
ALTER
DROP
RENAME
TRUNCATE
DB 객체 생성
DB 객체 변경
DB 객체 삭제
DB 객체 이름 변경
데이터 및 저장 공간 삭제
트랜잭션 처리어
TCL(Transaction Control Language)
COMMIT
ROLLBACK
SAVEPOINT
트랜잭션의 정상적인 종료 처리
트랜잭션 취소
트랜잭션내에 임시 저장점 설정
데이터 제어어
DCL(Data Control Language)
GRANT
REVOKE
DB 객체 접근 권한 부여
DB 객체 접근 권한 취소
4. 1. 테이블 내용 추가(1) - 문법
-> 테이블의 칼럼에 데이터를 입력하기 위한 명령어
문법
INSERT INTO 테이블명
(COLUMN[1]….COLUMN[N])
VALUES
(VALUE[1]…. VALUE[N])
5. 1. 테이블 내용 추가(2) - NULL값 갖는 로우 삽입(1)
->칼럼 값을 모르거나 확정되지 않았을 때, 사용하는 방법.
암시적 방법: 칼럼명 리스트에 해당 칼럼을 생략.
명시적 방법: VALUES 절에 명시적으로 NULL을 입력.
11. 1. 테이블 내용 추가(8)
CONDITIONAL INSERT ALL 문법[스크립트 생성]
INSERT ALL
WHEN 조건1 THEN
INTO 테이블 이름1
WHEN 조건2 THEN
INTO 테이블 이름2
ELSE
INTO 테이블 이름3
SUB-QUERY;
12. 1. 테이블 내용 추가(9)
UNCONDITIONAL INSERT ALL 문법[스크립트 생성]
INSERT ALL
[INTO 테이블1 VALUES (칼럼1,칼럼2,...)]
[INTO 테이블2 VALUES (칼럼1,칼럼2,...)]
SELECT 칼럼1, 칼럼2, 칼럼3, 칼럼4, 칼럼5
FROM 테이블3
WHERE 조건;
13. 1. 테이블 내용 추가(10)
CONDITIONAL INSERT FIRST 문법[스크립트 생성]
INSERT FIRST
WHEN 조건절1 THEN
INTO [테이블명1] VALUES[(칼럼1, 칼럼2...)
WHEN 조건절2 THEN
INTO [테이블명2] VALUES[(칼럼1, 칼럼2...)
ELSE
INTO [테이블명3] VALUES[(칼럼1, 칼럼2...)
SUB-QUERY;
14. 1. 테이블 내용 추가(11) - MERGE INTO 문법[스크립트 생성]
MERGE INTO [테이블명/VIEW] 별칭
USING [대상 테이블/VIEW] 별칭
ON [조인조건]
WHEN MATCHED THEN
UPDATE STATEMENT
DELETE STATEMENT
WHEN NOT MATCHED THEN
INSERT STATEMENT
DELETE STATEMENT
[WHERE STATEMENT];
15. 2. 테이블 내용 수정 – 문법, 문제
문법
UPDATE 테이블명
SET
칼럼명[1]=변경할값[1],
〯
칼럼명[n]=변경할값[n]
[WHERE 칼럼명[n] = 조건]
문제
EMPLOYEES 테이블의 구조와 데이터를 복사
한 EMP테이블을 생성하여 ‘IT’사원들[JOB_ID
가 ‘IT’로 시작]의 부서코드를 200으로 수정하
여 출력하세요.
17. 4. 트랜잭션 관리 및 쿼리의 종류(1) – 설명
- 한 작업의 단위
- 트랜잭션을 기반으로 데이터의 일관성을 보장
[하나 이상의 명령어가 DML[INSERT, DELETE, UPDATE]문으로 구성]
[DML 문이 시작되면 트랜잭션 문도 시작되었다는 뜻]
- ALL OR NOTHING(COMMIT/ROLLBACK)
- 은행 입ㆍ출금 서비스
18. 4. 트랜잭션 관리 및 쿼리의 종류(2) - LOCK
- FOR UPDATE
- 부서코드가 50번인 사람들을 조회[FOR UPDATE]
하고,
다른 세션에선 부서코드가 50번인 사람들의 급여
를 일괄 변경해보기
19. 4. 트랜잭션 관리 및 쿼리의 종류(3) - 확인
1. (EMPLOYEES 테이블을 복사한 EMP 테이블에) 데이터
추가(INSERT INTO) 후[1줄 이상], ROLLBACK 해보기.
2. (테이블은 1번과 동일) 데이터 추가(INSERT INTO)후,
COMMIT해보기. 그 다음 ROLLBACK을 한다.
3. 테이블을 삭제하고(DROP: DDL문), ROLLBACK 해보기.