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

MySQL 테이블에서 여러 조건(AND)을 만족하는 행을 DELETE로 삭제하는 방법

MySQL에서 데이터를 삭제할 때 하나의 조건만이 아니라 두 개 이상의 조건을 동시에 만족하는 행을 삭제해야 하는 경우가 자주 있습니다. 이때 DELETE 문과 함께 WHERE 절 + AND 연산자를 사용하면 됩니다.

예를 들어 "열1이 값1과 같고, 동시에 열2가 값2와 같은" 행만 정확히 삭제할 수 있습니다. 아래에서 실제 예제를 통해 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable722 (
   StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   StudentName varchar(100),
   StudentAge int
);
Query OK, 0 rows affected (1.84 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용하여 테이블에 학생 정보를 몇 개 삽입합니다.

mysql> insert into DemoTable722(StudentName,StudentAge) values('Chris Brown',23);
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable722(StudentName,StudentAge) values('John Smith',21);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable722(StudentName,StudentAge) values('David Miller',22);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable722(StudentName,StudentAge) values('Adam Smith',20);
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable722(StudentName,StudentAge) values('Carol Taylor',24);
Query OK, 1 row affected (0.39 sec)

3. 전체 레코드 확인하기

SELECT 문으로 현재 저장된 모든 레코드를 조회합니다.

mysql> select *from DemoTable722;

실행 결과는 다음과 같습니다.

+-----------+--------------+------------+
| StudentId | StudentName  | StudentAge |
+-----------+--------------+------------+
| 1        | Chris Brown  | 23        |
| 2        | John Smith   | 21        |
| 3        | David Miller | 22        |
| 4        | Adam Smith   | 20        |
| 5        | Carol Taylor | 24        |
+-----------+--------------+------------+
5 rows in set (0.00 sec)

4. AND 조건으로 행 삭제하기

이제 핵심인 삭제 쿼리입니다. WHERE 절에서 StudentId=3이고 동시에 StudentName='David Miller'인 행을 삭제합니다. 두 조건이 모두 참일 때만 해당 행이 제거됩니다.

mysql> delete from DemoTable722 where StudentId=3 and StudentName='David Miller';
Query OK, 1 row affected (0.21 sec)

5. 삭제 결과 검증하기

테이블을 다시 조회하여 해당 행이 실제로 삭제되었는지 확인합니다.

mysql> select *from DemoTable722;

실행 결과는 다음과 같습니다.

+-----------+--------------+------------+
| StudentId | StudentName  | StudentAge |
+-----------+--------------+------------+
| 1        | Chris Brown  | 23        |
| 2        | John Smith   | 21        |
| 4        | Adam Smith   | 20        |
| 5        | Carol Taylor | 24        |
+-----------+--------------+------------+
4 rows in set (0.00 sec)

위 출력에서 볼 수 있듯이 StudentId가 3이고 이름이 'David Miller'인 행만 정확하게 삭제되었으며, 나머지 4개 행은 그대로 유지되었습니다.

정리 및 주의 사항

  • DELETE ... WHERE 열1=값1 AND 열2=값2 형태로 여러 조건을 결합하여 원하는 행만 안전하게 삭제할 수 있습니다.
  • WHERE 절을 생략하면 테이블의 모든 행이 삭제되므로 반드시 주의해야 합니다.
  • 실무에서는 삭제 전 SELECT 문으로 먼저 대상 행을 확인한 후 DELETE를 실행하는 것이 안전합니다.