ITmembers.net 아카이브 · 2001–2009

재미로 배우는 오라클 & SQL 강좌

DML(Data Manipulation Language) - DELETE

UPDATE, INSERT에 이어 이번 시간에는 행(레코드)을 삭제하는 명령인 DELETE 명령에 대해 알아보겠습니다.


  • DELETE는 특정 행(레코드)를 삭제할 때 사용하며, DELETE 문의 형식은 다음과 같습니다.

    DELETE FROM table_name
    WHERE search condition(s);

  • 위의 문장을 보면 아시겠지만 DELETE 문에는 특정 컬럼 이름은 기술하지는 않습니다. 즉 행 전체가 아닌 하나의 행(레코드) 중에서 일부 컬럼만 삭제할 수는 없습니다.
  • 위에서 WHERE 절을 생략하면 어떻게 될까요?
    테이블의 모든 행이 삭제됩니다.
  • 그러나 DELETE 명령으로 데이터(행)만 삭제할 수 있지, 테이블 구조는 삭제할 수 없습니다. 테이블 자체를 삭제하려면 DELETE가 아닌 DROP 명령을 사용합니다.


다음과 같은 테이블이 있다고 가정해 봅시다.
그리고 노란색으로 표시된 10003, 10006, 10007번 레코드, 즉 JOB_CODE가 'SS'인 레코드를 삭제해 볼까요.


DELETE
FROM EMP
WHERE JOB_CODE = 'SS';

쉽죠?

그럼, 이번에는 조금 고차원(?)적인 문제 하나.
다음과 같은 EMP 테이블에서, EMP_SKILL 테이블의 EMP_NUM을 가지고 있지 않은 테이블을 모두 삭제하려면 어떻게 해야할까요?



이럴 땐, SUBSELECT 문을 써야겠죠.
직접 한번 생각해 보신 다음, 정답을 보시려면 아래 빈 칸을 마우스로 드래그해 보세요.

DELETE
FROM EMP
WHERE EMP_NUM NOT IN
    (SELECT EMP_NUM
     FROM EMP_SKILL );


이상 동주 아빠 손병목이었습니다.