[mySQL] 데이터베이스 테이블의 row 데이터 수정 및 삭제
수정한다, 갱신한다
UPDATE <테이블 이름> SET <컬럼 이름1> = <값1>, <컬럼 이름2> = <값2>, ...
WHERE <Primary Key OR 조건>
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
(예시 SQL문) users 테이블에서 아이디가 daniel12인 사용자의 이메일 주소를 변경하려면 다음과 같이 작성할 수 있다.
UPDATE users
SET email = 'john_new@example.com'
WHERE id = 'daniel12';
주의! 만약 WHERE을 쓰지 않으면 모든 row의 값이 해당 값으로 바뀐다.
DELETE FROM <테이블 이름> WHERE <Primary Key OR 조건>
DELETE FROM table_name
WHERE condition;
(예시 SQL문) users 테이블에서 아이디가 daniel12인 사용자를 삭제하려면 다음과 같이 작성한다.
DELETE FROM users
WHERE id = 'daniel12';
주의! 만양 WHERE을 쓰지 않으면 모든 row가 테이블에서 지워진다.
데이터 삭제의 두 가지 방법: 물리적 삭제와 논리적 삭제
물리적 삭제:
DELETE문을 사용하여 데이터를 완전히 삭제한다. 테이블에서 행을 완전히 제거하는 것이다.
삭제 이후 데이터 복구가 힘들거나 불가능 할 수 있다.
논리적 삭제:
데이터를 실제로 삭제하지 않고, 삭제된 것처럼 표시하는 방법이다.
일반적으로 'is_deleted'나 'status' 같은 컬럼을 추가하여 논리 삭제를 구현한다.
이 컬럼에 특정 값을 설정하여 삭제된 것처럼 처리할 수 있다.
데이터를 복구할 수 있으며, 데이터의 변경 히스토리(history)를 유지할 수 있다.
논리적 삭제는 다음과 같이 할 수 있다.
UPDATE users
SET is_deleted = 1
WHERE id = 1;
is_deleted 라는 컬럼에 1을 추가함으로써 삭제되었음을 명시할 수 있다.
더보기: 논리적 삭제를 하는 이유
논리적 삭제를 하는 이유는?
데이터 복구: 데이터를 실수로 삭제한 경우 되돌릴 수 있다. 만약 물리적으로 삭제하였을 경우 복구가 힘들다.
데이터 무결성 유지: 종종 다른 테이블과 관계를 맺고 있는 데이터를 삭제하려고 할 때 무결성 제약조건으로 인해 문제가 발생할 수 있다. 논리적 삭제를 사용하면 이런 문제를 피할 수 있다.
데이터 변경 히스토리: 데이터 변경을 추적해야 하는 경우, 누가 언제 어떤 데이터를 삭제했는지에 대한 정보를 유지하고, 필요한 경우 이를 검토할 수 있다.
법률 및 규정 준수: 특정 산업에서는 데이터를 특정 기간 동안 보관하도록 요구하는 법률이나 규정이 있다. 논리적 삭제를 사용하면 이런 법률 및 규정을 준수할 수 있다.
데이터 분석: 주문 취소에 따라 삭제된 데이터라도, 이 것은 사용자의 소중한 데이터이다. 고객 분석을 위해 남겨놓는 경우도 있다.
'DB > mySQL' 카테고리의 다른 글
[mySQL] 기본값(Default value) 설정하기 (0) | 2023.05.21 |
---|---|
[mySQL] 테이블의 컬럼 추가, 삭제와 컬럼의 이름 변경 (0) | 2023.05.21 |
[mySQL] 데이터베이스 테이블(Table)에 데이터 추가하기 (0) | 2023.05.20 |
[mySQL] 서브쿼리 중첩의 문제점과 뷰(view) 이해하기 (0) | 2023.05.20 |
[mySQL] 서브쿼리를 이용한 데이터 분석 (0) | 2023.05.19 |