[PHP] mysql 테이블 데이터 삭제
https://server-talk.tistory.com/282
MySQL - 테이블 데이터 삭제 - DELETE, TRUNCATE
MySQL - 테이블 데이터 삭제 알아보기 - DELETE, TRUNCATE 이번 포스팅에서는 테이블 데이터 삭제에 대해서 알아보도록 하겠습니다 이전 글 : DataBases(데이터베이스) 의 등장배경과 사용하는 이유 - https:
server-talk.tistory.com
이 포스트를 참조했습니다.
한빛 아카데미의 php 프로그래밍 입문 책에서 낙서장 - 댓글 추가 및 삭제 단락을 공부중이다.
cmd에서 mysql 테이블의 특정 데이터를 삭제하려면 delete from 테이블이름 where num = 값 또는 delete from 테이블이름 where id = 'id' 같은걸로 지운다.
그런데 delete를 하고 insert를 하다보니 num값이 중간중간 비거나 연속적이지 않는걸 발견했다.
num은 보통 key값으로 하지만 해당하는 데이터가 사라졌는데.... 해서 구글링을 하니 해당 포스트를 발견했다.
일단 cmd mysql로 작성한 테이블을 보자.
덧글 테이블에 데이터가 4개가 있다.
낙서장 페이지에서도 해당 테이블 데이터를 볼 수 있다.
덧글의 삭제 버튼은
echo "<a href='delete_ripple.php?num=$ripple_num'>삭제</a>";
해당 구문으로 하이퍼 링크를 달았고 덧글 번호는 스크립트 내부에서 ripple_num 으로 관리되고 있다.
삭제 버튼을 누르면 delete_ripple.php 스크립트가 실행되며
스크립트에는
<?
include "../lib/dbconn.php";
$sql = "delete from memo_ripple where num = $num";
mysqli_query($connect, $sql);
mysqli_close($connect);
echo("
<script>
location.href='memo.php';
</script>
");
?>
해당 구문이 작성되어 있다.
include 구문으로 db에 접속하고 db에서 어떤 테이블의 번호에 접근할지 $sql에 작성한다.
$sql = "delete from memo_ripple where num = $num";
여기서 num 변수는 삭제버튼을 클릭했을 때 넘어가는 $ripple_num이다.
echo("
<script>
location.href='memo.php';
</script>
");
그리고 echo 문으로 삭제작업을 수행하고 다시 원래 페이지로 돌아가도록 한다.
인터넷 페이지에서 삭제 버튼으로 삭제하면
사진과 같이 삭제되며
mysql db에서는
다음과 같이 보인다.
여기서 새로운 글을 작성해도 num은 5부터 시작되어서 delete후 insert를 해도 기존의 num값에 추가되는것이 아니였다.
참조한 페이지의 따르면 delete는
1) 데이터만 삭제 되고 용량이 줄어들지 않는다 (즉 인덱스는 남는다는 것인가!)
2) 삭제한 내용을 되돌릴 수 있다
라고 한다.
혹시나 복구할 가능성이 있어 mysql에서는 삭제 표시한 num값의 내용은 보이지 않게 자동으로 처리하나보다.
테이블 내의 모든 값을 (복구 절대 안되도록)전체 삭제는 TRUNCATE 이며
해당 명령어로 테이블을 삭제하면 내부 데이터가 아예 삭제되어 복구할 수 없다고 한다.