[SQL 첫걸음] 4장. 데이터 추가, 삭제, 갱신

@장태근· June 13, 2024 · 5 min read

이번장에서는 DML에 해당되는 INSERT, DELETE, UPDATE를 배우고 논리삭제와 물리삭제의 차이를 다룬다.

추가하기 - INSERT

INSERT INTO 테이블명
VALUES (1,2, ...)

INSERT는 데이터를 추가할 때 사용한다. 예를 들어 회원가입, 상품추가등에 사용된다.

  • 이전에 배운 SELECT는 서버에서 데이터를 조회하고 결과를 반환했다. (서버 -> 클라이언트)
  • INSERT는 클라이언트에서 서버로 전송되므로 결과를 반환받지 않는다.

데이터를 추가할 때 전체 열에 값을 추가할수도 있지만 열을 지정할 수도 있다.

INSERT INTO 테이블명 (1,2, ...)
VALUES (1,2, ...)

데이터를 추가할 때 몇 가지 주의점이 있다.

  1. 해당 열의 데이터 형식에 맞는 값을 지정한다.
  2. 제약조건(DEFAULT, NOT NULL 등)

앞서 여러 번 다뤘지만 NULL을 다룰 땐 특별히 주의가 필요하다.

삭제하기 - DELETE

DELETE
FROM 테이블명
WHERE 조건식

DELETE는 데이터를 삭제한다. 조건식은 생략이 가능한데 생략 시 모든 행을 대상으로 동작한다. 만약 운영 중인 서비스에서 고객의 데이터 전체를 삭제하면 어떨까? 상상만 해도 등골이 오싹해진다. 따라서 의도한 데이터만 삭제할 수 있도록 조건식 지정을 습관화하자.

갱신하기 - UPDATE

UPDATE 테이블명
SET1 =1,2 =2, ...WHERE 조건식

UPDATE는 데이터를 갱신할 때 사용한다. 앞서 다룬 DELETE처럼 조건식 생략이 가능하다. 하지만 모든 행이 갱신된다.

DELETE, UPDATE와 같은 데이터 수정 작업은 더욱 주의가 필요하다. 의도에 맞게 동작할 수 있도록 명령을 작성하자.

물리삭제와 논리삭제

물리삭제와 논리삭제는 데이터를 삭제하는 2가지 방법을 의미한다. 정답이 없고 비즈니스 요구사항에 맞춰 상황에 따라 선택해야 한다.

물리삭제(Hard delete)

  • DELETE 명령을 사용해 데이터를 완전히 삭제한다.

논리삭제(Soft delete)

  • 데이터가 삭제된 것처럼 표시하는 삭제 방법
  • 실제 데이터를 삭제하지 않고 삭제 플래그를 추가하여 상태를 변경한다.
  • 휴지통을 예시로 생각하면 편하다. 삭제한 파일이 휴지통으로 가고 완전히 삭제하면 복구할 수 없다.

마치며

논리삭제와, 물리삭제의 개념을 정리할 때 어려웠다. 책에서 설명하는 개념 외에 어떤 표현을 사용해야 이후에 자료를 접해도 기억할 수 있을까라는 관점에서 의문이 들었다. 그런데 파일 삭제를 예시로 떠올리니 쉽게 이해할 수 있었다.

  • 논리삭제: 삭제한 파일은 휴지통으로 간다. (플래그를 수정한다)
  • 물리삭제: 휴지통에 보관된 파일을 삭제하여 완전히 삭제한다.

물론 물리삭제와, 논리삭제가 데이터베이스에서 학습한 개념이기에 적절한 예제가 아닐 수 있다. 파일의 상태가 클라이언트에게 보여도 괜찮은가라는 의문이 있었는데 논리삭제의 개념과 빗대어 생각해 봤을 때 별다른 문제가 없었다. 이렇게 이해가 잘 되지 않을 땐 일상의 개념과 접목해서 연상하는 것도 괜찮은 방법이라고 느껴 재밌었다.

@장태근
개발자. 명료한 생각이 명료한 글이 된다.