SQL 데이터 조작문 - 데이터 삭제
카테고리 없음 2014. 9. 8. 15:38 |데이터의 삭제
기존 테이블의 행을 삭제할 때는 다음 형식의 delete 문을 사용한다.
delete
from 테이블
[where 조건];
# 이 delete 문은 where 절의 조건을 만족하는 레코드를 모두 삭제한다.
만일 where절이 없으면 이 테이블은 튜플이 없는 빈 테이블로 된다.
하나의 레코드 삭제
query: 학번 100인 학생을 삭제하라.
delete
from student
where sno = 100;
# 이 경우 만일 학번을 외래키(foreign key) 로 가지고 있는 테이블이 있다면 그 테이블에서도 같은 삭제 연산이 수행되어야 한다. 왜냐하면 참조 무결성을 유지해야 되기 때문이다. 이 예에서는 등록(enrol) 테이블에서 학번(열값)이 100인 열을 전부 삭제시켜야 된다.
복수의 레코드 삭제
query: 등록(enrol) 테이블의 모든 행을 삭제하라.
delete
from enrol;
# 이 삭제문의 실행 결과로서 등록 테이블은 빈 테이블로 된다. 그러나 계속 데이터 베이스에 남아 있는 것이지 테이블 자체가 없어지는 것은 아니다.
즉, 테이블의 제거 (drop) 와는 다르다.
부속 질의문을 사용한 삭제
query: 과목 'C413'의 기말 성적이 60점 미만인 컴퓨터과 학생을 등록 테이블에서 삭제하라.
delete
from enrol
where cno = 'C413' and final < 60
and enrol.sno in (select sno
from student
where dept = '컴퓨터');