본문 바로가기
SQL

[Oracle] 테이블에 데이터를 잘못 삭제 또는 잘못 입력했을 때!

by 권미정 2022. 4. 14.

22/04/07 강의 실습 내용

 

#1. 데이터를 실수로 삭제한 경우


우리는 SQL에서 테이블 전체를 삭제하고 싶다면 drop table문을, 테이블은 살리고 데이터만 삭제하고 싶다면 delete from문을 사용한다. 그런데, 실수로 잘못 삭제했을 경우에는 어떻게 해야 할까? (열심히 한 걸 이대로 날릴 순 없어 ㅠㅠ)

 


잘못 삭제했더라도 아직 프로그램을 종료하지 않았다면 안심해도 된다! 방전으로 꺼진 경우가 아니라면, 오라클 프로그램을 로그아웃할 때 자동으로 커밋이 되는 건 알고 있을 것이다. 아직 끄지 않은 상태에서는 commit;을 을 실행하지 않았다면 괜찮다. commit;을 실행하면 디스크에 영구적으로 반영되어 새로운 트랜지션이 시작되므로 그땐 되돌릴 수 없다.

아직 잘못 삭제한 뒤 커밋하지 않았다는 가정 하에, rollback;을 실행해 보자!

rollback;

다행히 롤백 완료되었다! select문을 실행해 정말 돌아왔는지 확인해보면 안심~

 

 

#2. 데이터를 잘못 입력해서 원하는 행만 삭제/수정하고 싶은 경우


이번에는 원하는 행만 삭제 또는 수정하려고 한다.

 

* 원하는 행만 삭제

delete from 테이블명
where 콜롬명=데이터;

위 코드를 이용하여 학번이 20101인 행만 삭제해보겠다.

delete from student
where studno=20101;

studno이 20101인 행만 삭제된 것을 확인할 수 있다.

 

* 원하는 데이터만 수정

update 테이블명
set 콜롬명=데이터(,콤마 찍고 여러 개 가능);

위 코드는 테이블의 원하는 콜롬의 데이터를 모두 바꾸는 것이다. set 뒤에 수정 내용은 여러 개를 해도 가능하다.
하지만 나는 학번이 10101인 행만 수정할 것이기 때문에, 아래에 where도 사용하여 실행해보겠다.

update student
set userid='jun1234', grade=3, height=180
where studno=10101;

데이터가 제대로 수정된 것을 확인할 수 있다.

 


오늘은 실수를 롤백할 수 있는 방법과 원하는 행만 삭제하고 수정하는 방법을 알아보았다. 잘못 삭제하면 바로 영영 사라져서 다시 데이터를 입력해야 하는 줄 알았는데, rollback이 있어서 다행인 것 같다!

댓글