[DB] 데이터의 추가, 삭제, 갱신
16. 행 추가하지 - INSERT
- DB의 테이블에 행을 추가하기 위해
INSERT
명령을 사용함
INSERT INTO 테이블명 VALUE(값1, 값2, ...)
SELECT
명령은 데이터 검색을 위한 것- 질의를 하면 데이베이스 서버가 클라로 결과를 반환하는 형식으로 처리됨
- 데이터를 추가할 경우 반대로 클라에서 서버로 데이터를 전송하는 형식을 취하고 서버 측은 전송받은 데이터를 DB에 저장함
- ex) 웹 페이지에서 신규 등록이나 추가와 같은 버튼을 클릭했을 때 처리되는 데이터 추가 기능
INSERT로 행 추가
- RDBMS에서는 INSERT 명령을 사용해 테이블의 행 단위로 데이터를 추가함
- DB를 생성하면 테이블에는 아무런 데이터도 저장되어 있지 않은 상태가 됨
- 이후
INSERT
명령으로 데이터를 추가해 DB를 구축함
INSERT INTO 행을 추가할 테이블 VALUES(값1, 값2, ...)
VALUES
구를 사용해 행의 데이터를 지정함
값을 저장할 열 지정
INSERT
명령으로 행을 추가할 경우 값을 저장할 열을 지정할 수 있음- 열을 지정할 경우에는 테이블명 뒤에 괄호로 묶어 열명을 나열하고
VALUES
구로 값을 지정함 VALUES
구에 값을 지정할 경우에는 지정한 열과 동일한 개수로 값을 지정해야 함
INSERT INTO 테이블명(열1, 열2, ...) VALUES(값1, 값2, ...)
NOT NULL 제약
- 행을 추가할 때 유효한 값이 없는 상태(NULL)로 두고 싶을 경우에는
VALUES
구에서 NULL로 값을 지정할 수 있음 -
NOT NULL 제약이 걸려있는 열은 NULL 값을 허용하지 않음
- NULL의 조건을 비교할 때는 IS NULL을 이용해야 하며 NULL을 포함한 연산 결과는 모두 NULL이 되어버림
- NULL을 허용하고 싶지 않다면 NOT NULL 제약을 걸어두는 편이 좋음
DEFAULT
DESC
명령으로 열 구성을 살펴보면 Default라는 항목을 찾을 수 있음- Default : 명시적으로 값을 지정하지 않았을 경우 사용하는 초깃값
- Default 값은 테이블을 정의할 때 지정할 수 있음
- 열을 지정해 행을 추가할 때 지정하지 않은 열은 Default 값을 사용하여 저장됨
암묵적으로 디폴트 저장
- 열을 지정하지 않으면 디폴트값으로 행이 추가됨
17. 삭제하기 - DELETE
- DB의 테이블에서 행을 삭제하기 위해서
DELETE
명령을 사용함
DELETE FROM 테이블명 WHERE 조건식
- DB는 하드디스크와 같은 저장장치에 데이터를 저장해 관리함
- 저장장치에는 저장용량이 정해져 있는 만큼 데이터를 무제한으로 저장할 수 없음
- 저장공간이 모자라 데이터를 삭제해야 하는 경우도 자주 발생함
- ex) 시스템에서 삭제나 취소 버튼을 이용해 데이터를 삭제하는 경우
DELETE로 행 삭제
- RDBMS에서 데이터를 삭제할 경우에는 행 단위로
DELETE
명령을 수행함
DELETE FROM 테이블명 WHERE 조건식
DELETE
명령에는WHERE
구를 지정할 수 있으나SELECT
명령처럼WHERE
구를 생략할 경우에는 모든 행을 대상으로 동작함DELETE
명령어는 행을 지정할 수 있지만SELECT
처럼 열을 지정할 수 없음
DELETE 명령 구
WHERE
구에서 대상이 되는 행을 검색하는 것은SELECT
명령에서도DELETE
명령에서도 똑같음SELECT
명령에서는 조건에 맞는 행의 결괏값이 클라이언트로 반환됨DELETE
명령에서는 조건에 맞는 행이 삭제됨
18. 데이터 갱신하기 - UPDATE
- 테이블의 셀에 저장되어 있는 값을 갱신하려면
UPDATE
명령을 사용함
UPDATE 테이블명 SET 열1 = 값1, 열2 = 값2, ... WHERE 조건식
UPDATE로 데이터 갱신
- RDBMS에서는
UPDATE
명령으로 데이터를 갱신할 수 있음 UPDATE
명령은 테이블의 셀 값을 갱신하는 명령
UPDATE 테이블명 SET 열명 = 값 WHERE 조건식
DELETE
와 달리UPDATE
는 셀 단위로 데이터를 갱신할 수 있음WHERE
구에 조건을 지정하면 그에 일치하는 행을 갱신할 수 있음-
WHERE
구를 생략한 경우에는DELETE
의 경우와 마찬가지로 테이블의 모든 행이 갱신됨 - 값은 상수로 표기함
INSERT
명령과 마찬가지로 자료형에 맞는 값을 지정해야 함- 수치형 열에는 수치형 리터럴
- 문자열형 열에는 문자열형 리터럴
- 갱신해야 할 열과 값이 복수인 경우에는
열 = 값
을 콤마(,)로 구분해여 리스트 형식으로 지정할 수 있음 SET
구에 지정한 갱신 내용은 처리 대상이 되는 모든 행에 적용됨
UPDATE로 갱신할 경우 주의사항
복수열 갱신
UPDATE
명령의SET
구에서는 필요에 따라 콤마(,)로 구분하여 갱신할 열을 여러 개 지정할 수 있음
UPDATE 테이블명 SET 열명1 = 값1, 열명2 = 값2, ... WHERE 조건식
UPDATE
명령을 하나로 묶어서 실행하는게 효율적임
UPDATE 테이블명 SET 열명1 = 값1 WHERE 조건식1;
UPDATE 테이블명 SET 열명2 = 값2 WHERE 조건식2;
UPDATE 테이블명 SET 열명1 = 값1, 열명2 = 값2 WHERE 조건식;
SET 구의 실행 순서
- DB의 제품에 따라 처리 방식이 다름
- 즉, DB 제품에 따라 결과가 달라짐
- ex) MySQL에서는 서로 다른 결괏값이 나오지만 Oracle에서는 어느 명령을 실행해도 결과는 같음
NULL로 갱신
UPDATE
명령으로 셀 값을 NULL로 갱신할 수 있음- 갱신할 값을 NULL로 지정하면 됨
- NULL 초기화라고 부름
19. 물리삭제와 논리삭제
- DB에 데이터를 삭제하는 방법은 용도에 따라 크게 물리삭제와 논리삭제의 두 가지로 나뉨
- 시스템 설계 분야에서 시스템 구축할 때 자주 사용하는 용어
두 종류의 삭제방법
- 데이터를 삭제할 때는 두 가지 사고 방식이 있음
물리삭제
- SQL의
DELETE
명령을 사용해 직접 데이터를 삭제하자는 사고 방식
논리삭제
삭제방법 선택
- 어떤 방법으로 삭제할 것인지는 시스템의 특성이나 테이블에 저장되어 있는 데이터의 특성에 따라 다름
- 상황에 맞게 선택해야 함
- SNS 서비스처럼 사용자의 개인정보를 다루는 시스템에서는 사용자가 탈퇴한 경우 데이터를 삭제함
- 이 경우 개인정보를 취급하는 마스터 테이블에서 삭제할 경우에는 물리삭제를 하는 편이 안전함
- 개인정보의 유출을 미연에 방지하는 측면에서 좋은 선택임
- 이 경우 개인정보를 취급하는 마스터 테이블에서 삭제할 경우에는 물리삭제를 하는 편이 안전함
- 쇼핑 사이트의 경우는 사용자가 주문을 취소할 경우에도 데이터를 삭제함
- 이 경우 논리삭제 방법을 많이 사용함
- 주문이 취소 되도 발주는 된 것으로, 해당 정보가 완전히 불필요한 것은 아니기 때문에