Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 특정 값보다 큰 값을 가진 레코드를 삭제하는 방법

개요

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 문으로 먼저 대상 레코드를 확인한 후 실행하는 것이 안전합니다.