MySQL에서 테이블의 전체 행(row) 개수를 확인할 때 흔히 count(*)를 사용하지만, count(1)을 사용해도 동일한 결과를 얻을 수 있습니다. 두 방식 모두 테이블의 전체 행 개수를 반환하므로, count(*)를 쓰지 않고도 원하는 값을 손쉽게 구할 수 있습니다.
기본 문법
먼저 기본적인 사용 문법을 살펴보겠습니다.
select count(1) from yourTableName;
예제 테이블 생성
실습을 위해 먼저 예제 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
StudentName varchar(100)
);
Query OK, 0 rows affected (0.84 sec)데이터 삽입
insert 명령어를 사용하여 테이블에 학생 이름 데이터를 추가합니다.
mysql> insert into DemoTable(StudentName) values('John Smith');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable(StudentName) values('Chris Brown');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(StudentName) values('David Miller');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(StudentName) values('Carol Taylor');
Query OK, 1 row affected (0.15 sec)저장된 데이터 확인
select 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
출력 결과
+--------------+ | StudentName | +--------------+ | John Smith | | Chris Brown | | David Miller | | Carol Taylor | +--------------+ 4 rows in set (0.00 sec)
현재 테이블에는 총 4개의 레코드가 저장되어 있습니다.
count(*) 없이 행 수 구하기
다음은 count(*)를 사용하지 않고 count(1)로 테이블의 행 수를 구하는 쿼리입니다.
mysql> select count(1) from DemoTable;
출력 결과
+----------+ | count(1) | +----------+ | 4 | +----------+ 1 row in set (0.03 sec)
실행 결과에서 볼 수 있듯이 count(1)은 count(*)와 마찬가지로 테이블의 전체 행 수인 4를 정확하게 반환합니다. 참고로 최신 버전의 MySQL에서는 count(1)과 count(*) 간의 성능 차이가 사실상 없으므로, 두 방식 중 편한 것을 선택하여 사용하면 됩니다.