SQL 첫걸음 16-19강

Andrew·2022년 1월 3일
0

SQL 첫걸음

목록 보기
4/9

본 글은 아사이 아츠시 저 "하루 30분 36강으로 배우는 완전 초보의 SQL 따라잡기 SQL 첫걸음"을 기반으로 작성되었습니다.

16강. 행 추가하기

INSERT

insert into sample41 values(val1, val2, ...)
insert into sample41(col1, col2, ...) values(val1, val2, ...)

테이블의 각 열에 값을 대입하여 하나의 행을 추가하는 명령어이다.
칼럼명을 지정해서 대입한다면 칼럼 인자의 개수와 값 인자의 개수가 같아야 한다.

칼럼에 NOT NULL 제약이 걸려있지 않다면, 생략된 칼럼명에는 NULL이 대입된다.
NOT NULL 제약이 걸려있는 칼럼이 칼럼명 인자에서 생략된다면 에러가 발생한다.

DEFAULT

insert into sample41(col1, col2) values(val1, default)
insert into sample41(col1) values(val1)

첫 번째 줄은 col2에 지정되어 있는 디폴트 값을 명시적으로 저장한다.
두 번째 줄은 col2에 지정되어 있는 디폴트 값을 암묵적으로 저장한다.

17. 삭제하기

DELETE

delete from sample41 where {condition}

where 구에서 조건을 따로 설정하지 않으면 모든 행이 삭제되는 점에 주의한다.
select 구와 달리 특정 열만 삭제할 수 없다. 한 번에 하나의 행에 있는 모든 열 데이터를 삭제한다.

18. 데이터 갱신하기

UPDATE

update sample41 set col1 = val1, col2 = val2, ... where {condition}

MySQL에서는 한 번에 여러 열을 수정할 때 set 구에서 대입문의 순서가 영향을 준다는 점을 주의한다(cf. Oracle에서는 대입문의 순서가 영향을 주지 않는다!).

19. 물리삭제와 논리삭제

간단한 내용이다. 삭제에는 물리삭제와 논리삭제 두 가지 방법이 존재한다.

물리삭제

실제로 DELETE 문을 사용하여 물리적으로 데이터 베이스에서 삭제하는 방법이다.
데이터 베이스의 용량을 신경써야 하는 경우나 탈퇴한 회원의 개인정보 유출 방지를 신경써야 하는 경우에는 물리삭제가 좋은 선택이다.

논리삭제

삭제플래그 열을 만들고 1과 0으로 구분짓는 방법이다. 실제로는 데이터가 데이터 베이스에서 삭제되지 않는다.
고객이 상품을 주문 후 취소하는 경우 발주는 된 상태이기 때문에 발주 내역 자체를 삭제하기 보다는 주문 취소 플래그의 값을 변경해주는 논리삭제가 좋은 선택이다.

둘 중 어떤 방법이 더 좋다고 하기 보다는, 상황에 맞게 더 알맞은 삭제 방법을 선택해야 하는 문제이다.

profile
조금씩 나아지는 중입니다!

0개의 댓글