INSERT, DELETE, UPDATE, 논리삭제와 물리삭제
INSERT
: DB테이블에 행을 추가할 때 사용
: INSERT INTO 테이블명 VALUES (값1, 값2, ...)
: INSERT INTO 테이블명 (열1, 열2, ...), VALUES (값1, 값2, ...)
NOT NULL 제약이 있는 경우 INSERT 명령시 NULL 사용 불가능
Default 설정을 이용하면 INSERT 명령시 값(또는 열)을 명시하지 않아도 행을 추가할 수 있다.
UPDATE
: DB테이블에 저장된 데이터(행) 값을 수정한다
: UPDATE 테이블 SET 열명 = 값, ... WHERE 조건식
: SET구를 이용해 갱신할 열과 값을 지정하며, 값은 열 자료형에 맞는 상수로 표기한다.
: 리스트 형식을 이용, 복수의 열과 값을 동시에 갱신할 수 있다.
복수 열 갱신
: Oracle의 경우, SET구에 기술된 식의 순서가 처리에 영향을 주지 않는다.
: MySQL의 경우, SET구에 기술된 순서로 갱신이 처리된다. 처리 순서의 고려 필요!
주의사항
: SET구에 사용되는 =가 대입 연산자이므로, 갱신 전과 갱신 후 값에 주의해야한다.
: EX) 갱신 대상이 되는 열을 포함한 갱신 값 사용. SET no = no+1 등
시스템 구축에 사용되는 개념. 시스템 설계 분야 관점
물리삭제
: SQL의 DELETE를 사용, 직접 데이터를 삭제한다
논리삭제
: '삭제 플래그' 열을 이용, 테이블에서 실제로 행을 삭제하는 것이 아닌, UPDATE를 이용해 '삭제 플래그' 의 값을 유효하게 갱신해둔다.
: 실제 데이터는 테이블 안에 남아있지만 '삭제 플래그' 열을 참조하여 SELECT하므로 삭제된 것처럼 보인다.
: 장점 - 이슈 발생 시 데이터가 삭제되기 전의 상태로 돌릴 수 있다.
: 단점 - 삭제해도 DB 저장공간이 늘어나지 않으며, DB크기 증가함에 따라 검색 속도가 떨어진다. 어플리케이션 관점에서 혼란이 야기될 수 있다.
선택 방안
: 용도에 맞게 삭제 방법은 선택해야한다.
: 논리삭제 유용 - 삭제할 정보가 완전히 불필요한 것이라고 확신할 수 없는 경우
: 물리삭제 유용 - 개인정보 등 필수적으로 삭제해야할 정보, 하드웨어 제한