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

MySQL 테이블의 전체 행 개수를 정확히 세는 방법 – COUNT(*) 활용 가이드

MySQL에서 전체 행 수를 정확하게 세는 방법

MySQL 테이블에 저장된 모든 행(row)의 개수를 정확하게 확인하려면 집계 함수인 COUNT(*)를 사용해야 합니다. COUNT(*)는 NULL 값을 포함한 테이블의 모든 행을 빠짐없이 계산해 주기 때문에, 전체 레코드 수를 구할 때 가장 확실한 방법입니다.

기본 문법은 다음과 같습니다.

select count(*) as anyAliasName from yourTableName;

여기서 anyAliasName은 결과 컬럼에 붙일 별칭(alias)으로, 원하는 이름을 자유롭게 지정할 수 있습니다.

1단계: 예제 테이블 생성

문법을 실제로 이해하기 위해 예제 테이블을 먼저 만들어 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> create table CountAllRowsDemo
-> (
-> Id int,
-> Name varchar(10),
-> Age int
-> );
Query OK, 0 rows affected (1.49 sec)

2단계: 샘플 데이터 삽입

이제 insert 명령을 사용해 테이블에 여러 개의 레코드를 삽입합니다. 일부러 중복 데이터와 NULL 값도 함께 넣어보겠습니다.

mysql> insert into CountAllRowsDemo values(1,'John',23);
Query OK, 1 row affected (0.15 sec)
mysql> insert into CountAllRowsDemo values(101,'Carol',21);
Query OK, 1 row affected (0.17 sec)
mysql> insert into CountAllRowsDemo values(201,'Sam',24);
Query OK, 1 row affected (0.13 sec)
mysql> insert into CountAllRowsDemo values(106,'Mike',26);
Query OK, 1 row affected (0.22 sec)
mysql> insert into CountAllRowsDemo values(290,'Bob',25);
Query OK, 1 row affected (0.16 sec)
mysql> insert into CountAllRowsDemo values(500,'David',27);
Query OK, 1 row affected (0.16 sec)
mysql> insert into CountAllRowsDemo values(500,'David',27);
Query OK, 1 row affected (0.19 sec)
mysql> insert into CountAllRowsDemo values(NULL,NULL,NULL);
Query OK, 1 row affected (0.23 sec)
mysql> insert into CountAllRowsDemo values(NULL,NULL,NULL);
Query OK, 1 row affected (0.13 sec)

3단계: 저장된 전체 데이터 확인

select 문을 사용해 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from CountAllRowsDemo;

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

+------+-------+------+
| Id | Name | Age |
+------+-------+------+
| 1 | John | 23 |
| 101 | Carol | 21 |
| 201 | Sam | 24 |
| 106 | Mike | 26 |
| 290 | Bob | 25 |
| 500 | David | 27 |
| 500 | David | 27 |
| NULL | NULL | NULL |
| NULL | NULL | NULL |
+------+-------+------+
9 rows in set (0.00 sec)

출력 결과를 보면 총 9개의 행이 존재하며, 그중 2개는 모든 값이 NULL인 행입니다.

4단계: COUNT(*)로 정확한 행 개수 구하기

이제 집계 함수 count(*)를 사용해 테이블의 정확한 행 개수를 세어 보겠습니다. 쿼리는 다음과 같습니다.

mysql> select count(*) as TotalNumberOfRows from CountAllRowsDemo;

실행 결과는 다음과 같이 행 개수와 함께 출력됩니다.

+-------------------+
| TotalNumberOfRows |
+-------------------+
| 9 |
+-------------------+
1 row in set (0.00 sec)

정리 및 참고 사항

위 예제에서 볼 수 있듯이, COUNT(*)는 NULL이 포함된 행까지 포함해 총 9개의 행을 정확히 반환했습니다. 반면 count(컬럼명)처럼 특정 컬럼을 지정하면 해당 컬럼 값이 NULL인 행은 제외되고 계산되므로 주의가 필요합니다. 따라서 테이블의 전체 행 개수를 구하려면 항상 count(*)를 사용하는 것이 안전합니다. 또한 InnoDB 엔진에서 대용량 테이블의 count(*)는 내부적으로 인덱스를 스캔하므로, 매우 큰 테이블에서는 실행 시간이 다소 걸릴 수 있다는 점도 함께 기억해 두면 좋습니다.