강좌
클라우드/리눅스에 관한 강좌입니다.
데이터베이스 분류

MySQL강좌51편:특정테이블의 데이터 삭제하기 : delete문

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

MySQL강좌51:특정테이블의 데이터 삭제하기 : delete

 

인터넷홈페이지등에서 흔히 볼 수 있는 게시판등에서 자기가 작성한 글을 삭제하고자 할 때에 우리는 그 글을 선택하고 삭제또는 지우기등의 버튼을 클릭한다. 이때 삭제또는 지우기버튼을 클릭한 순간 시스템의 MYSQL에서는 delete문이 실행되어 지정한 글을 삭제한다. 따라서 이번 절에서는 select라는 SQL문에 대해서 알아보도록 하겠다.

 


즉 지금까지 살펴본 SQL문은 insert, select, update문이였다. 이번에는 특정데이터를 삭제하는 delete문에 대해서 알아보도록 하겠다. 이번에 설명하는 delete문에서도 주의사항이 있다. 즉 삭제될 데이터를 지정하기 위한 where조건문을 지정하지않으면 테이블의 모든 데이터가 삭제된다는 점이다. !!, (거듭강조) 주의해야 한다.

 

먼저 delete문의 사용형식은 다음과 같다.

DELETE FROM 테이블명 [WHERE 검색조건]

 

앞에서 설명한 insert, select, update문의 사용법보다 delete문은 굉장히 간단하다. 먼저 특정 레코드를 삭제하는 방법을 설명하기에 앞서 현재 어떤 데이터가 존재하는가를 select문으로 확인해본 것이다.

 

mysql> select * from testtable;

+-----+--------------+----------------------+------+

| uid | name         | email                | age  |

+-----+--------------+----------------------+------+

|   0 | ParkSungSoo  | sspark@linux.co.kr   |   21 |

|   1 | sontaesoo    | shutterbug@orgio.net |   31 |

|   2 | JungWooYoung | doly@linux.co.kr     |   31 |

+-----+--------------+----------------------+------+

3 rows in set (0.00 sec)

 

mysql>

 

위의 결과와 같이 현재 testtable테이블에는 모두 3개의 데이터가 존재함을 알 수 있다. 먼저 다음 예에서 uid2인 레코드를 삭제하였다. 그리고 select문으로 전체 데이터를 검색한 결과 uid 2인 데이터가 삭제되었음을 확인하였다.

 

mysql> delete from testtable where uid=2;

Query OK, 1 row affected (0.00 sec)

 

mysql>

mysql> select * from testtable;

+-----+-------------+----------------------+------+

| uid | name        | email                | age  |

+-----+-------------+----------------------+------+

|   0 | ParkSungSoo | sspark@linux.co.kr   |   21 |

|   1 | sontaesoo   | shutterbug@orgio.net |   31 |

+-----+-------------+----------------------+------+

2 rows in set (0.00 sec)

 

mysql>

 

그리고 앞에서 설명한 바와같이 delete문 사용시 주의해야 할 것은 where조건문의 유무이다. delete문에서 where문이 주어지지 않으면 지정한 테이블의 모든 데이터가 삭제된다는 점을 인지하기 바란다. 여러분들께 거듭 주의를 드리는 이유는 부주의한 실수로 인하여 봉변(?) 당하는 일이 없도록 하기 위함이다.

잠시 다음 예를 보기 바란다. 이번 예는 절대로 이런 실수를 하지 말라는 의미에서 설명하는 것이므로 따라하는 일이 있어서는 안될 것이다.

 

mysql> delete from testtable;

Query OK, 2 rows affected (0.00 sec)

 

mysql>

mysql> select * from testtable;

Empty set (0.00 sec)

 

mysql>

 

위의 예에서 보면 where조건문없이 테이블이름(testtable)만 주어졌다. 이 경우 지정한 테이블내의 모든 데이터(레코드)가 삭제되었다. 위의 select문으로 확인한 결과 모든 데이터들이 삭제되었음을 알 수 있다.  분명히 설명하였으므로 잠깐의 실수로 봉변당하는 일이 없기를 진심으로 바란다.

 

이제 MYSQL에 대한 설명을 마무리하였다.  필자는 이 작업을 마무리하면서 여러분들께서 어떻게 활용하고 실무에 적용할 수 있을까를 다시 생각해보았다.  서두에서도 말씀드린바와같이 서버관리와 MYSQL관리는 별도로 존재하는 것이 아니다. 서버관리자라면 MYSQL에 대한 관리까지도 모두 수행할 수 있어야한다.

 

능력있는 서버관리자가 될 수 있는 것은 필자의 의도만으로는 되지않는다.  여러분들이 실무에서 적용할 수 있는 경우의 수가 얼마나 많이 발생하는가? 그리고 여러분들의 피끓는 노력에 필자의 작은 정성이 보탬이 되었을 때 비로소 그 결실을 볼 수 있을 것이다.  이제 MYSQL에 대한 필자의 의무를 아쉽게 마무리하면서 실무활용분야라는 실전을 여러분들의 목전에 두고 간다.  승리하리라 믿는다. 그리고 알아주기 보다는 누구나 알게되도록 스스로를 만들어보자.

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,159 명
  • 현재 강좌수 :  36,520 개
  • 현재 접속자 :  250 명