DELETE

Hyun-jin Won·2021년 10월 12일
0

MySQL로 SQL 시작하기

목록 보기
15/24

당신이 백업 없이 중요 데이터를 삭제하게 되는 경우

데이터의 삭제

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias]
    [PARTITION (partition_name [, partition_name] ...)]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

데이터를 삽입하는 경우가 있듯이 데이터의 삭제 또한 필요하게 된다.
이 때에는 DELETE 명령어를 사용하여 데이터를 삭제한다.

이전의 INSERT에 비해 무조건적으로 입력해야 할 데이터가 상당히 적다. 어디의 table의, 어떤 조건의 데이터를 삭제할 건지만 입력하면 된다.
WHERE 조건을 생략할 수도 있으나, 조건을 생략하면 해당 table의 데이터 전체를 삭제하기 때문에 웬만하면 사용하지 말자.

데이터 삭제 중 에러발생

데이터를 삭제할 때에도 특정 문제로 인해서 에러가 발생할 수도 있다.
오타를 제외한다면 이것 또한 table의 제약조건에 의해 발생하는 것이다. 차후에 제약조건을 학습하기 때문에 간단하게 예를 들자면, table간의 데이터의 연관성이 존재하는 경우에 이러한 문제점이 주로 발생하게 된다.

데이터의 복구?

DELETE는 상당히 위험한 작업이다. 왜냐하면 데이터를 영구적으로 삭제하며, 특정 명령어로 복구할 수 없기 때문이다.

만약 트렌잭션이 있다면 롤백을 통해서, 백업이 있다면 복원 기능으로 이전으로 복구할 수 있으나, 이마저도 없다면 기존의 데이터는 복구가 불가능하다. 이렇기 때문에 차후 데이터를 삭제할 때에는 물리적, 논리적 삭제 방식을 사용하여 적절하게 컨트롤하며, 백업 기능을 통해 항상 DB의 이전상태을 일정기간 간격으로 기록해둔다.

참조

13.2.2 Delete Statement - MySQL8.0 Document

profile
삽질을 주체하지 못하는 잉간

0개의 댓글