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

MySQL 명령줄에서 DELETE 문으로 영향을 받은 행 수 확인하는 방법

MySQL DELETE 후 영향을 받은 행 수 확인하기

MySQL 명령줄 도구에서 DELETE 문을 실행한 후 실제로 몇 개의 행이 삭제되었는지 확인하고 싶다면 ROW_COUNT() 함수를 사용하면 됩니다. 이 함수는 가장 최근에 실행된 문장의 결과를 기준으로 영향을 받은 행의 수를 반환합니다.

이번 글에서는 ROW_COUNT() 함수를 활용해 DELETE 문의 영향을 받은 행 수를 확인하는 방법을 단계별로 살펴보겠습니다.

1단계: 테이블 생성하기

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

mysql> create table rowAffectedByDeleteDemo
    -> (
    -> CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> CustomerName varchar(20)
    -> );
Query OK, 0 rows affected (0.86 sec)

2단계: 데이터 삽입하기

INSERT 문을 사용해 테이블에 여러 개의 레코드를 추가합니다.

mysql> insert into rowAffectedByDeleteDemo(CustomerName) values('John');
Query OK, 1 row affected (0.14 sec)
mysql> insert into rowAffectedByDeleteDemo(CustomerName) values('Carol');
Query OK, 1 row affected (0.10 sec)
mysql> insert into rowAffectedByDeleteDemo(CustomerName) values('Bob');
Query OK, 1 row affected (0.09 sec)
mysql> insert into rowAffectedByDeleteDemo(CustomerName) values('Sam');
Query OK, 1 row affected (0.09 sec)
mysql> insert into rowAffectedByDeleteDemo(CustomerName) values('David');
Query OK, 1 row affected (0.08 sec)
mysql> insert into rowAffectedByDeleteDemo(CustomerName) values('Maxwell');
Query OK, 1 row affected (0.09 sec)
mysql> insert into rowAffectedByDeleteDemo(CustomerName) values('Ramit');
Query OK, 1 row affected (0.08 sec)
mysql> insert into rowAffectedByDeleteDemo(CustomerName) values('James');
Query OK, 1 row affected (0.10 sec)

3단계: 전체 레코드 조회하기

SELECT 문으로 테이블에 저장된 모든 레코드를 확인합니다.

mysql> select *from rowAffectedByDeleteDemo;

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

+------------+--------------+
| CustomerId | CustomerName |
+------------+--------------+
| 1          | John         |
| 2          | Carol        |
| 3          | Bob          |
| 4          | Sam          |
| 5          | David        |
| 6          | Maxwell      |
| 7          | Ramit        |
| 8          | James        |
+------------+--------------+
8 rows in set (0.00 sec)

4단계: 삭제 전 ROW_COUNT() 값 확인하기

행을 삭제하기 전에 ROW_COUNT() 함수의 값을 먼저 확인해 보겠습니다.

mysql> select row_count();

출력 결과:

+-------------+
| row_count() |
+-------------+
| -1          |
+-------------+
1 row in set (0.00 sec)

여기서 값이 -1로 표시되는 이유는, 직전에 실행된 SELECT 문처럼 행에 영향을 주지 않는 문장이 실행되었기 때문입니다. 즉, -1은 해당 세션에서 아직 어떤 행도 변경하지 않았음을 의미합니다.

5단계: DELETE 문 실행하기

이제 조건에 맞는 행들을 삭제하는 쿼리를 실행합니다.

mysql> delete from rowAffectedByDeleteDemo where CustomerId =3 || CustomerId =4 || CustomerId =5 || CustomerId =6;
Query OK, 4 rows affected (0.13 sec)

결과 메시지에서도 알 수 있듯이 총 4개의 행이 삭제되었습니다.

6단계: 삭제 후 ROW_COUNT() 값 확인하기

DELETE 문 실행 후 ROW_COUNT() 함수를 다시 호출하면 영향을 받은 행 수를 정확히 확인할 수 있습니다.

mysql> select row_count();

출력 결과:

+-------------+
| row_count() |
+-------------+
| 4           |
+-------------+
1 row in set (0.00 sec)

정리

MySQL에서 DELETE 문으로 삭제된 행의 수를 확인하려면 ROW_COUNT() 함수를 사용하면 됩니다. 참고할 만한 핵심 포인트는 다음과 같습니다.

  • ROW_COUNT()는 가장 최근에 실행된 DML 문(INSERT, UPDATE, DELETE 등)의 영향을 받은 행 수를 반환합니다.
  • SELECT 문처럼 행을 변경하지 않는 문장이 실행된 경우에는 -1을 반환합니다.
  • DELETE 문 실행 직후에 호출해야 정확한 값을 얻을 수 있으며, 다른 문장을 실행하면 값이 초기화됩니다.

또한 DELETE 문 자체의 실행 결과 메시지(Query OK, N rows affected)에서도 영향을 받은 행 수를 바로 확인할 수 있으므로, 상황에 맞게 두 가지 방법을 활용하시기 바랍니다.