MySQL에서 특정 행(row)을 삭제하려면 DELETE 문을 사용합니다. 이 글에서는 실제 예제를 통해 테이블 생성부터 데이터 삽입, 그리고 조건에 맞는 행 삭제까지 전체 과정을 단계별로 살펴보겠습니다.
1. 예제 테이블 생성하기
먼저 고객 정보를 저장할 테이블을 생성합니다. CustomerId는 자동 증가(AUTO_INCREMENT)되는 기본 키로 설정합니다.
mysql> create table DemoTable
-> (
-> CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> CustomerName varchar(100),
-> CustomerAge int
-> );
Query OK, 0 rows affected (1.30 sec)
2. 데이터 삽입하기
INSERT 명령을 사용해 테이블에 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable(CustomerName,CustomerAge) values('John',33);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(CustomerName,CustomerAge) values('Bob',25);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(CustomerName,CustomerAge) values('David',28);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(CustomerName,CustomerAge) values('Carol',29);
Query OK, 1 row affected (0.18 sec)3. 현재 데이터 확인하기
SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
출력 결과
+------------+--------------+-------------+
| CustomerId | CustomerName | CustomerAge |
+------------+--------------+-------------+
| 1 | John | 33 |
| 2 | Bob | 25 |
| 3 | David | 28 |
| 4 | Carol | 29 |
+------------+--------------+-------------+
4 rows in set (0.00 sec)
현재 4개의 레코드가 저장되어 있는 것을 확인할 수 있습니다.
4. DELETE 문으로 행 삭제하기
이제 WHERE 절과 함께 DELETE 문을 사용하여 특정 조건에 맞는 행을 삭제합니다. 여기서는 이름이 'David'이고 나이가 28세인 고객 레코드를 삭제해 보겠습니다.
mysql> delete from DemoTable where CustomerName='David' and CustomerAge=28;
Query OK, 1 row affected (0.23 sec)
참고: WHERE 절을 생략하고 DELETE 문을 실행하면 테이블의 모든 행이 삭제됩니다. 따라서 항상 정확한 조건을 지정하는 것이 매우 중요합니다. 또한 이름과 나이처럼 두 개 이상의 조건을 AND로 결합하면 의도하지 않은 레코드까지 삭제되는 실수를 방지할 수 있습니다.
5. 삭제 후 결과 확인하기
삭제가 정상적으로 처리되었는지 다시 한번 테이블을 조회해 확인합니다.
mysql> select *from DemoTable;
출력 결과
+------------+--------------+-------------+
| CustomerId | CustomerName | CustomerAge |
+------------+--------------+-------------+
| 1 | John | 33 |
| 2 | Bob | 25 |
| 4 | Carol | 29 |
+------------+--------------+-------------+
3 rows in set (0.00 sec)
'David'의 레코드가 성공적으로 삭제되어 3개의 행만 남은 것을 확인할 수 있습니다. 참고로 CustomerId는 AUTO_INCREMENT 값이므로 행이 삭제되어도 나머지 ID 값은 변경되지 않습니다.
정리
- MySQL에서 행을 삭제할 때는
DELETE FROM 테이블명 WHERE 조건;구문을 사용합니다. - WHERE 절에 조건을 명확히 지정해야 원하는 행만 안전하게 삭제할 수 있습니다.
- WHERE 절 없이 실행하면 테이블의 전체 데이터가 삭제되므로 각별히 주의해야 합니다.