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

다음과 같은 테이블이 있다고 가정해 봅시다.
그리고 노란색으로 표시된 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 );

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


- 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 );

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