[mySQL] 데이터베이스 테이블의 row 데이터 수정 및 삭제

DB/mySQL 2023. 5. 21.

수정한다, 갱신한다 

 

 

 

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을 추가함으로써 삭제되었음을 명시할 수 있다.

 

 

더보기: 논리적 삭제를 하는 이유

더보기

논리적 삭제를 하는 이유는?

 

 

데이터 복구: 데이터를 실수로 삭제한 경우 되돌릴 수 있다. 만약 물리적으로 삭제하였을 경우 복구가 힘들다.

 

데이터 무결성 유지: 종종 다른 테이블과 관계를 맺고 있는 데이터를 삭제하려고 할 때 무결성 제약조건으로 인해 문제가 발생할 수 있다. 논리적 삭제를 사용하면 이런 문제를 피할 수 있다.

 

데이터 변경 히스토리: 데이터 변경을 추적해야 하는 경우, 누가 언제 어떤 데이터를 삭제했는지에 대한 정보를 유지하고, 필요한 경우 이를 검토할 수 있다.

 

법률 및 규정 준수: 특정 산업에서는 데이터를 특정 기간 동안 보관하도록 요구하는 법률이나 규정이 있다. 논리적 삭제를 사용하면 이런 법률 및 규정을 준수할 수 있다. 

 

데이터 분석: 주문 취소에 따라 삭제된 데이터라도, 이 것은 사용자의 소중한 데이터이다. 고객 분석을 위해 남겨놓는 경우도 있다.