MySQL 데이터베이스 테이블에 저장된 행(row)의 개수를 확인하려면 집계 함수인 COUNT(*)를 사용해야 합니다. COUNT(*)는 테이블 내 전체 행의 수를 반환하며, 특정 열의 값이 NULL이더라도 해당 행을 포함하여 계산합니다.
COUNT(*) 기본 문법
테이블의 전체 행 개수를 조회하는 기본 문법은 다음과 같습니다.
SELECT COUNT(*) FROM yourTableName;
예제 테이블 생성하기
문법을 실제로 이해하기 위해 예제 테이블을 먼저 만들어 보겠습니다. 아래 쿼리로 CountRowsDemo라는 이름의 테이블을 생성합니다.
mysql> create table CountRowsDemo
- > (
- > Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
- > Name varchar(20)
- > );
Query OK, 0 rows affected (0.78 sec)테이블이 정상적으로 생성되었습니다. 이 테이블은 자동 증가하는 Id 컬럼과 Name 컬럼으로 구성되어 있습니다.
샘플 데이터 삽입하기
다음으로 INSERT 명령어를 사용해 몇 개의 레코드를 삽입합니다. 의도적으로 NULL 값도 함께 넣어보겠습니다.
mysql> insert into CountRowsDemo(Name) values(NULL);
Query OK, 1 row affected (0.15 sec)
mysql> insert into CountRowsDemo(Name) values('Sam');
Query OK, 1 row affected (0.25 sec)
mysql> insert into CountRowsDemo(Name) values(NULL);
Query OK, 1 row affected (0.11 sec)
mysql> insert into CountRowsDemo(Name) values('Mike');
Query OK, 1 row affected (0.21 sec)
mysql> insert into CountRowsDemo(Name) values('David');
Query OK, 1 row affected (0.11 sec)
mysql> insert into CountRowsDemo(Name) values(NULL);
Query OK, 1 row affected (0.11 sec)
mysql> insert into CountRowsDemo(Name) values(NULL);
Query OK, 1 row affected (0.09 sec)
mysql> insert into CountRowsDemo(Name) values('Carol');
Query OK, 1 row affected (0.17 sec)총 8개의 레코드가 삽입되었으며, 그 중 4개는 Name 값이 NULL입니다.
저장된 전체 레코드 확인하기
SELECT 문을 사용해 테이블에 저장된 모든 레코드를 조회합니다.
mysql> select *from CountRowsDemo;
실행 결과는 다음과 같습니다.
+----+-------+ | Id | Name | +----+-------+ | 1 | NULL | | 2 | Sam | | 3 | NULL | | 4 | Mike | | 5 | David | | 6 | NULL | | 7 | NULL | | 8 | Carol | +----+-------+ 8 rows in set (0.00 sec)
COUNT(*)로 행 개수 세기
이제 COUNT(*) 함수를 사용해 테이블의 행 개수를 계산해 보겠습니다. AS 절을 활용하면 결과 컬럼에 별칭을 지정할 수 있어 가독성이 좋아집니다.
mysql> select count(*) AS TotalRows from CountRowsDemo;
실행 결과는 다음과 같습니다.
+-----------+ | TotalRows | +-----------+ | 8 | +-----------+ 1 row in set (0.00 sec)
참고: COUNT(*)와 COUNT(컬럼명)의 차이
COUNT(*)는 NULL 값을 포함한 전체 행의 개수를 반환하지만, COUNT(컬럼명)은 해당 컬럼의 값이 NULL이 아닌 행만 계산합니다. 위 예제에서 SELECT COUNT(Name) FROM CountRowsDemo;를 실행하면 NULL이 아닌 값만 카운트되므로 결과는 4가 됩니다. 따라서 테이블의 전체 행 개수를 구할 때는 반드시 COUNT(*)를 사용하는 것이 올바른 방법입니다.