0
 45   5   1
  View Articles

Name  
   손병목  (2002-05-07 14:21:31, Hit : 11371, Vote : 1625)
Homepage  
   http://www.itmembers.net
Subject  
   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 );


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

Prev
   트랜잭션(Transaction) Control Language - COMMIT, ROLLBACK, SAVEPOINT

손병목
Next
   DML(Data Manipulation Language) - INSERT

손병목


Copyright 1999-2021 Zeroboard / skin by Zetyx