개요
MySQL에서는 DELETE 문과 WHERE 절에 비교 연산자를 함께 사용하면, 특정 값보다 큰 값을 가진 레코드(행)를 손쉽게 삭제할 수 있습니다. 이 글에서는 예제 테이블을 만들고, 점수가 900보다 큰 플레이어 데이터를 삭제하는 과정을 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제로 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
PlayerName varchar(100),
PlayerScore int
);
Query OK, 0 rows affected (0.97 sec)2. 데이터 삽입하기
INSERT 명령을 사용해 테이블에 여러 개의 레코드를 추가합니다.
mysql> insert into DemoTable(PlayerName,PlayerScore) values('Chris',780);
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable(PlayerName,PlayerScore) values('Sam',1100);
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable(PlayerName,PlayerScore) values('Mike',900);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(PlayerName,PlayerScore) values('Bob',890);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(PlayerName,PlayerScore) values('Carol',1000);
Query OK, 1 row affected (0.20 sec)3. 전체 데이터 확인하기
SELECT 문으로 테이블에 저장된 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----+------------+-------------+ | Id | PlayerName | PlayerScore | +----+------------+-------------+ | 1 | Chris | 780 | | 2 | Sam | 1100 | | 3 | Mike | 900 | | 4 | Bob | 890 | | 5 | Carol | 1000 | +----+------------+-------------+ 5 rows in set (0.00 sec)
4. 특정 값보다 큰 레코드 삭제하기
다음은 PlayerScore 컬럼의 값이 900보다 큰 레코드를 삭제하는 쿼리입니다.
mysql> delete from DemoTable where PlayerScore > 900; Query OK, 2 rows affected (0.18 sec)
위 쿼리를 실행하면 점수가 900보다 큰 Sam(1100점)과 Carol(1000점)의 레코드 두 개가 삭제됩니다. 참고로 '>'(초과) 대신 '>='(이상)를 사용하면 900 이상인 값까지 함께 삭제할 수 있으니 조건을 상황에 맞게 선택하세요.
5. 삭제 후 결과 확인
삭제가 정상적으로 처리되었는지 다시 한번 테이블을 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----+------------+-------------+ | Id | PlayerName | PlayerScore | +----+------------+-------------+ | 1 | Chris | 780 | | 3 | Mike | 900 | | 4 | Bob | 890 | +----+------------+-------------+ 3 rows in set (0.00 sec)
마무리
이처럼 DELETE 문에 WHERE 절과 비교 연산자(>, >= 등)를 조합하면 원하는 조건에 맞는 레코드만 정확하게 삭제할 수 있습니다. 실무에서는 삭제 전 SELECT 문으로 먼저 대상 레코드를 확인한 후 실행하는 것이 안전합니다.