MySQL에서는 조건으로 자를 수 있는 방법이 없습니다. where 절과 함께 truncate 문을 사용할 수 없습니다.
조건을 원하면 삭제 명령을 사용하십시오 -
DELETE FROM yourTableName WHERE youCondition;
위의 구문은 괜찮지만 더 빠른 솔루션을 원한다면 DELETE가 Truncate에 비해 좋지 않습니다. truncate의 장점은 로그에 쓰지 않는다는 것입니다.
테이블을 만들어 봅시다. 테이블을 생성하는 쿼리는 다음과 같습니다 -
mysql> create table DeleteDemo -> ( -> Id int, -> Name varchar(100) -> ); Query OK, 0 rows affected (1.22 sec)
삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다 -
mysql> insert into DeleteDemo values(101,'Carol'); Query OK, 1 row affected (0.15 sec) mysql> insert into DeleteDemo values(102,'Sam'); Query OK, 1 row affected (0.15 sec) mysql> insert into DeleteDemo values(103,'Bob'); Query OK, 1 row affected (0.16 sec) mysql> insert into DeleteDemo values(104,'Mike'); Query OK, 1 row affected (0.17 sec) mysql> insert into DeleteDemo values(105,'John'); Query OK, 1 row affected (0.09 sec) mysql> insert into DeleteDemo values(106,'Maria'); Query OK, 1 row affected (0.20 sec) mysql> insert into DeleteDemo values(107,'Johnson'); Query OK, 1 row affected (0.17 sec)
이제 select 명령을 사용하여 테이블의 모든 레코드를 표시해 보겠습니다. 쿼리는 다음과 같습니다 -
mysql> select *from DeleteDemo;
출력
+------+---------+ | Id | Name | +------+---------+ | 101 | Carol | | 102 | Sam | | 103 | Bob | | 104 | Mike | | 105 | John | | 106 | Maria | | 107 | Johnson | +------+---------+ 7 rows in set (0.00 sec)
이제 delete 명령을 사용할 수 있지만 where 절에서는 잘리지 않습니다. where 절을 사용하여 테이블에서 레코드를 삭제하는 쿼리는 다음과 같습니다. -
mysql> delete from DeleteDemo where Id>104; Query OK, 3 rows affected (0.13 sec)
select 명령어를 이용하여 테이블 데이터를 다시 한 번 확인해보자. 쿼리는 다음과 같습니다 -
mysql> select *from DeleteDemo;
출력
+------+-------+ | Id | Name | +------+-------+ | 101 | Carol | | 102 | Sam | | 103 | Bob | | 104 | Mike | +------+-------+ 4 rows in set (0.00 sec)
위의 샘플 출력을 보면 104보다 큰 모든 레코드가 테이블에서 삭제됩니다.