본문 바로가기
개인공부/SQL 첫걸음

4장 - 데이터의 추가, 삭제, 갱신

by 하고싶은건많은놈 2023. 3. 29.

16. 행 추가하기 - INSERT

데이터를 추가하기 위해 클라이언트에서 서버로 데이터를 전송하는 형식

INSERT로 행 추가하기

INSERT : 테이블의 행 단위로 데이터를 추가
INSERT INTO 테이블명 VALUES(...) 의 형식으로 행을 추가할 테이블을 지정, VALUES 구를 사용해 추가할 데이터를 지정

  • 이 때 추가할 데이터는 해당 열의 데이터 형식에 맞도록 지정해야함
  • INSERT 명령은 데이터가 클라이언트에서 서버로 전송되는 것이기 때문에 결과를 출력하지는 않음

값을 저장할 열 지정하기

INSERT INTO 테이블명(열1, 열2, ...) VALUES(값1, 값2, ...)의 형식으로 값을 추가할 열을 지정할 수 있음

  • 이 때 VAULES 구에는 지정한 열과 동일한 개수의 값을 사용해야함
  • 지정하지 않은 열에는 기본값인 NULL이 저장됨

NOT NULL 제약

VALUES 구로 추가할 값을 NULL로 지정할 경우 에러가 발생할 수 있음
이는 NOT NULL제약이 걸려있을 수 있기 때문임
제약은 테이블에 저장하는 데이터를 설정을 통해 제한하는 것을 뜻하며, NOT NULL 이외에도 다양한 제약들이 존재함

DEFAULT

Default : 명시적으로 값을 지정하지 않았을 경우 사용하는 초깃값

  • 테이블을 정의할 때 지정할 수 있음
  • 열을 지정해 행을 추가할시, 추가할 데이터를 명시하지 않은 열은 Default 값을 사용하여 저장됨
  • VALUES 구에 넣을 값을 DEFAULT로 명시적으로 지정할 수도 있음

17. 삭제하기 - DELETE

하드디스크와 같은 저장장치에 데이터를 저장해 관리하는 데이터베이스의 특성상 데이터를 무제한으로 저장할 수 없음
따라서 저장공간 문제로 인해 데이터를 삭제해야하는 경우가 자주 발생함

DELETE로 행 삭제하기

DELETE : 행 단위로 데이터 삭제
DELETE FROM 테이블명 WHERE 조건식의 형식으로 사용

  • 데이터 삭제 전 SELECT 명령으로 어떤 데이터가 저장되어있는지 확인
  • WHERE구를 생략하면 모든 행을 대상으로 동작하여 테이블의 모든 데이터가 삭제됨
  • 열을 지정할 수는 없음

DELETE 명령 구

WHERE 구에 조건을 지정하여 삭제할 행을 선택할 수 있음
단, 어떤 행부터 삭제할지는 의미가 없기 때문에 ORDER BY구는 사용할 수 없음


18. 데이터 갱신하기 - UPDATE

UPDATE로 데이터 갱신하기

UPDATE : 테이블의 셀 값을 갱신
UPDATE 테이블명 SET 열명 = 값 WHERE 조건식의 형식으로 사용

  • DELETE와 달리 셀 단위로 데이터 갱신 가능
  • WHERE 구를 생략할 경우 테이블의 모든 행이 갱신
  • SET 구를 사용하여 갱신할 열과 값을 지정
    • SET 열명 = 값에서 =은 대입 연산자
    • 테이블에 존재하지 않는 열 지정시 에러가 발생
    • 자료형에 맞는 값을 지정해야 함

UPDATE로 갱신할 경우 주의사항

UPDATE 명령은 이미 존재하는 행에 대해 값을 갱신하므로 이전의 값과 이후의 값이라는 두가지 상태가 존재함
UPDATE 테이블 SET no=no+1; 의 경우 갱신 후의 값은 본래값(갱신 전의 값)에서 1을 더한 결과가 됨

복수열 갱신

SET 구에서는 필요에 따라 콤마로 갱신할 열을 복수 지정할 수 있음
이 때 데이터베이스 별로 갱신 처리를 하는 순서가 달라짐

  • Oracle의 경우 기술한 식의 순서가 처리에 영향을 주지 않음
  • MySQL의 경우 SET구에 기술된 순서로 갱신 처리가 일어남

NULL로 갱신하기

갱신할 값으로 NULL을 지정하는 경우 NULL 초기화라고 부르기도 함
단, NOT NULL제약이 있는 경우에는 허용되지 않음


19. 물리삭제와 논리삭제

데이터베이스에서 데이터를 삭제하는 방법에는 물리삭제와 논리삭제가 있음
단, 전용 SQL명령이 존재하지는 않음

두 종류의 삭제방법

물리삭제 : SQL의 DELETE 명령을 사용해 직접 데이터를 삭제하는 방식
논리삭제 : 테이블에 '삭제플래그'와 같은 열을 두어 해당 열의 데이터를 갱신해둠
즉, 실제 데이터는 테이블 안에 남아있으나 데이터베이스를 참조할 때는 삭제플래그가 설정된 행을 제외하여 삭제된 것처럼 보이게 만듬

  • 실제로 데이터를 삭제하는 것이 아니므로 간단하게 백업이 가능함
  • 삭제시에도 데이터베이스의 저장공간이 줄어들지 않으며 검색속도가 떨어질 수 있음

삭제방법 선택하기

시스템의 특성 / 테이블에 저장된 데이터의 특성에 따라 달라지므로 상황에 맞게 선택해야함

  • 개인정보를 다룰 시 물리삭제가 안전
  • 주문 취소시에는 논리삭제하여 통계 등에 활용

댓글