본문 바로가기

IT/SQL

SQL 테이블 삭제하기, 데이터만 삭제하기 drop, delete, truncate

SQL 테이블 삭제

DROP TABLE [테이블 이름];

DROP TABLE이라고 말하고 그 뒤에 삭제할 테이블 이름을 넣으면 된다.

예시로 Shippers라는 이름을 가진 테이블을 삭제해보도록 하자.

> DROP TABLE Shippers;
Query OK, 0 rows affected (0.347 sec)

성공적으로 테이블이 삭제되었다는 Query OK 메시지를 볼 수 있다.

** 테이블을 삭제하기 전에는 항상 조심하자! 테이블 삭제는 그 안에 있는 모든 데이터까지 함께 삭제된다.

 

 


 

SQL 테이블은 그대로 두고 데이터만 삭제

위의 DROP TABLE은 데이터는 물론 테이블까지 삭제하는 방법이었다면, 이번에는 테이블은 그대로 두고 데이터만 전부 삭제하는 방법을 알아보자. 두 가지 방법이 있는데 둘에는 차이가 있다.

 

먼저 사용식을 보자.

DELETE FROM [테이블 이름] WHERE [조건...];

TRUNCATE TABLE [테이블 이름];

 

DELTE  vs. TRUNCATE 

DELETE TABLE은 뒤에 조건을 붙여서 데이터의 일부만 삭제할 수도 있다.

TRUNCATE TABLE은 테이블 안의 전체 데이터를 삭제하는데만 쓰인다.

 

DELETE TABLE은 데이터는 삭제되지만, 테이터가 차지하고 있던 공간, 인덱스는 남아있다.

TRUNCATE TABLE은 데이터를 삭제하면서, 데이터가 차지하던 공간, 인덱스 등도 전부 제거한다.

 

DELTE TABLE은 복구의 가능성이 남아있지만,

TRUNCATE TABLE은 삭제 후 복구가 불가능하다.

 

예문을 보자

> SELECT * FROM members;
+-------------+--------------+--------------+--------------+
| memberID    | name         | address      | phone        | 
+-------------+--------------+--------------+------------ -+
|          1  | 김민수       | 서울 도봉구  |   0101112343 |
|          2  | 최지연       | 경남 창원    |   0102223333 |
+-------------+--------------+--------------+--------------+
2 rows in set (0.210 sec)
>
> DELETE FROM members WHERE memberID=1;
Query OK

> SELECT * FROM members;
+-------------+--------------+--------------+--------------+
| memberID    | name         | address      | phone        | 
+-------------+--------------+--------------+------------ -+
|          2  | 최지연       | 경남 창원    |   0102223333 |
+-------------+--------------+--------------+--------------+
1 rows in set (0.120 sec)
>
> TRUNCATE TABLE members;
Query OK, 0 rows affected (0.143 sec)

> SELECT * FROM members;
Empty set (0.001 sec)