📚 Study/Oracle

Oracle :: COMMIT, ROLLBACK, UPDATE, DELETE

bono-hye 2023. 10. 22. 16:37

■ COMMIT & ROLLBACK

- 실제 하드디스크상에 물리적으로 저장된 상황을 확정하기 위해서는 COMMIT을 수행해야 함

- COMMIT 하면 ROLLBACK 적용 안됨. 

- COMMIT 실행 이후 DML(INSERT, UPDATE, DELETE) 구문을 통해 변경된 데이터를 취소할 수 있으며

   DML 명령 사용 후 COMMIT을 수행하고 나서 ROLLBACK을 실행해봐야 아무 소용 없음

--■■■ COMMIT / ROLLBACK ■■■--

SELECT *
FROM TBL_DEPT;
--==>>
/*
10	ACCOUNTING	NEW YORK
20	RESEARCH	DALLAS
30	SALES	    CHICAGO
40	OPERATIONS	BOSTON
*/

--○ 데이터 입력
INSERT INTO TBL_DEPT VALUES(50, '개발부', '서울');
--==>> 1 행 이(가) 삽입되었습니다.

SELECT *
FROM TBL_DEPT;
--==>>
/*
10	ACCOUNTING	NEW YORK
20	RESEARCH	DALLAS
30	SALES	    CHICAGO
40	OPERATIONS	BOSTON
50	개발부	    서울
*/

-- 50번 개발부 서울...
-- 이 데이터는 TBL_DEPT 테이블이 저장되어 있는
-- 하드디스크상에 물리적으로 적용되어 저장된 것이 아니다.
-- 메모리(RAM) 상에 입력된 것이다.


--○ 롤백
ROLLBACK;
--==>> 롤백 완료.

--○ 다시 확인
SELECT *
FROM TBL_DEPT;
--==>>
/*
10	ACCOUNTING	NEW YORK
20	RESEARCH	DALLAS
30	SALES	    CHICAGO
40	OPERATIONS	BOSTON
*/
--> 50번 개발부 서울... 에 대한 데이터가 소실되었음을 확인(존재하지 않음)


--○ 다시 데이터 입력
INSERT INTO TBL_DEPT VALUES(50, '개발부', '서울');
--==>>1 행 이(가) 삽입되었습니다.

--○ 확인
SELECT *
FROM TBL_DEPT;
--==>>
/*
10	ACCOUNTING	NEW YORK
20	RESEARCH	DALLAS
30	SALES	    CHICAGO
40	OPERATIONS	BOSTON
50	개발부	    서울
*/

-- 50번 개발부 서울...
-- 이 데이터는 TBL_DEPT 테이블이 저장되어 있는 하드디스크상에 저장된 것이 아니라
-- 메모리(RAM) 상에 입력된 것이다.
-- 이를... 실제 하드디스크상에 물리적으로 저장된 상황을 확정하기 위해서는
-- COMMIT 을 수행해야 한다.


--○ 커밋
COMMIT;
--==>> 커밋 완료.

--○ 커밋 이후 다시 확인
SELECT *
FROM TBL_DEPT;
--==>>
/*
10	ACCOUNTING	NEW YORK
20	RESEARCH	DALLAS
30	SALES	    CHICAGO
40	OPERATIONS	BOSTON
50	개발부	    서울
*/

--○ 롤백
ROLLBACK;
--==>> 롤백 완료.

--○ 롤백 이후 다시 확인
SELECT *
FROM TBL_DEPT;
--==>>
/*
10	ACCOUNTING	NEW YORK
20	RESEARCH	DALLAS
30	SALES	    CHICAGO
40	OPERATIONS	BOSTON
50	개발부	    서울
*/
--> 롤백(ROLLBACK)을 수행했음에도 불구하고
--  50번 개발부 서울... 의 행 데이터는 소실되지 않았음을 확인


--※ COMMIT 을 실행한 이후로 DML(INSERT, UPDATE, DELETE) 구문을 통해
--   변경된 데이터를 취소할 수 있는 것일 뿐...
--   DML 명령을 사용한 후 COMMIT 을 수행하고나서 ROLLBACK을 실행해봐야
--   아무 소용이 없다.

 

(파일명 : 20231020_01_scott)

■ UPDATE

- 데이터 수정

UPDATE 테이블명

SET 수정 내용

WHERE 수정하려는 조건

--○ 데이터 수정(UPDATE → TBL_DEPT)
UPDATE TBL_DEPT
SET DNAME = '연구부', LOC = '경기'           -- UPDATE → WHERE → SET 순서로 작성하기!!
WHERE DEPTNO = 50;

 

■ DELETE

- 데이터 삭제

--○ 데이터 삭제 (DELETE → TBL_DEPT)
DELETE TBL_DEPT              -- DELETE 이렇게 작성하지 말고
WHERE DEPTNO = 50;  

SELECT *                    -- 삭제할 데이터가 맞는지 확인한 후
FROM TBL_DEPT
WHERE DEPTNO = 50;

DELETE                      -- SELECT *만 DELETE로 바꿔서 실행하기
FROM TBL_DEPT
WHERE DEPTNO = 50;
--==>> 1 행 이(가) 삭제되었습니다.

--○ 확인
SELECT *
FROM TBL_DEPT;
--==>>
/*
10	ACCOUNTING	NEW YORK
20	RESEARCH	DALLAS
30	SALES	    CHICAGO
40	OPERATIONS	BOSTON
*/

--○ 커밋
COMMIT;
--==>> 커밋 완료.