SQL에서 행 수를 셀 때 자주 사용하는 COUNT() 함수.
비슷해 보이는 아래 두 가지 방식, 결과가 항상 같을까요?
-- 방식 1
SELECT COUNT(*) FROM users;
-- 방식 2
SELECT COUNT(email) FROM users;
COUNT(*)는 NULL 여부와 관계없이 모든 행을 집계합니다.
즉, 테이블에 존재하는 전체 행 수를 반환합니다.
COUNT(컬럼명)은 해당 컬럼이 NULL이 아닌 경우만 집계합니다.
NULL이 포함된 행은 제외되기 때문에,
COUNT(*)와 결과가 달라질 수 있습니다.
-- 예시 테이블 users
id | email
---|--------------------
1 | user1@example.com
2 | NULL
3 | user3@example.com
SELECT COUNT(*) -- 결과 : 3
FROM users;
SELECT COUNT(email) -- 결과 : 2
FROM users;
→ COUNT(*)는 모든 행을 셌고,
→ COUNT(email)은 NULL을 제외한 2행만 셌습니다.
✔️ COUNT(*)는 NULL 포함 여부 관계없이 전체 행을 셉니다.
✔️ COUNT(column)은 해당 컬럼이 NULL이 아닌 경우만 셉니다.