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를 실행하는 것이 안전합니다.