이전 단계에서 테이블에 데이터를 기록하는 ( 레코드를 삽입하는 ) 구문을 배웠습니다. 그러면 테이블에서 데이터를 지우는 ( 레코드를 지우는 ) 구문을 실습해 보겠습니다.

1. delete from 구문

 그러면 예제로 다음과 같은 테이블과 레코드들이 있다고 가정하겠습니다.


 예제를 위해서 여러 레코드들을 삽입했습니다. ( 여러분들도 예제를 위해서 insert into 구문을 이용해서 예제 레코드들을 삽입해 보세요. ) 기본적으로 레코드를 삭제하는 delete from 구문은 다음과 같은 구조를 갖고 있습니다.



 "테이블_이름"부분에 삭제하고 싶은 레코드가 있는 테이블의 이름을 넣어 줍니다. 예를 들면, customer 테이블에 어떤 레코드를 삭제하고 싶을 경우 delete from customer ... 이런 식이 되겠죠. where 뒤의 조건에는 삭제하고 싶은 테이블의 조건을 명시합니다. 즉, customer_num의 값이 2인 레코드를 삭제하고 싶다면, delete from customer where customer_num=2가 되겠죠. 이 때, where 절에 의해서 선택되는 레코드는 유일하지 않습니다. 즉, where 뒤에 customer_name='ais' 라고 하면 customer_name의 값이 'ais'인 모든 레코드가 삭제 됩니다.


그럼 예제를 통해서 알아보도록 하겠습니다. 먼저 다음의 SQL문을 실행해보겠습니다.

delete from customer where customer_name=4;

 의미상으로는 customer_name의 값이 4인 customer_name이 abc인 레코드가 삭제가 될 것입니다. 실행해 보도록 하겠습니다.


 예상대로 customer_num이 4인 레코드가 삭제 되었습니다.

 그럼 다음으로 customer_addr의 값이 seoul인 레코드를 지워보도록 하겠습니다. 다음의 sql 문을 실행하도록 하겠습니다.

delete from customer where customer_addr='seoul';


Mysql의 경우 위 sql문을 실행 시켰을 경우 "2 rows affected" 라는 메시지가 뜹니다. 즉, 2개의 레코드가 영향을 받아서 제거 되었다라는 뜻입니다. 실제로 테이블에서 customer_addr의 값이 'seoul'인 모든 레코드가 제거 되었습니다.

 마지막으로 테이블에 있는 모든 레코드를 지우는 방법입니다. 하나하나 지우다 보면 시간낭비이고 자원낭비가 되는데, sql에서는 테이블의 모든 레코드를 지우는 방법도 제공합니다.


  눈치가 빠르신 분은 아시겠지만 위에서 언급했던 delete from 구문에서 where 절만 뺀 형태입니다. 특별히 '어떤 레코드를 지워라'라고 명시를 하지 않으면 테이블에 있는 모든 레코드를 삭제하게 됩니다. 굉장히 편리하죠.

 그럼 실제로 customer 테이블에 있는 모든 레코드를 지워보도록 하겠습니다. 다음의 sql 문을 실행하도록 하겠습니다.

delete from custmer;


 위와 같이 테이블의 모든 레코드들이 삭제 된 것이 보이며 mysql DBMS로 부터 2 rows affected 라는 메시지가 도착한 것을 볼 수 있습니다.


이제 테이블의 스키마를 설계해서 테이블을 생성하고 테이터( 레코드 )를 삽입, 삭제 하고, 테이블을 삭제 할 수가 있습니다. 이제 우리는 DB로 많은 것들을 할 수 있게 되었습니다.




 
.



+ Recent posts