Study/데이터베이스 | DB
count(*) 과 count(1)
cosmohoo
2021. 4. 28. 23:14
반응형
DB에서 count(*)과 count(1)를 혼용하면서 둘의 차이점이 있는지 궁금한 분들이 있을 것이다.
결론은 '차이가 없다'이다.
-간혹 몇몇 DBMS마다 다르다는 말도 있지만, 결론적으로는 두 함수는 같은 결괏값을 도출해냅니다.
- 단 count(칼럼명)일 경우에는 해당 칼럼에 NULL을 제외한 칼럼의 수를 세게 됩니다.
CREATE TABLE sql_test_a
(
ID VARCHAR2(4000 BYTE),
FIRST_NAME VARCHAR2(200 BYTE),
LAST_NAME VARCHAR2(200 BYTE)
);
CREATE TABLE sql_test_b
(
ID VARCHAR2(4000 BYTE)
);
INSERT INTO sql_test_a (ID, FIRST_NAME, LAST_NAME) VALUES ('1', 'John', 'Snow');
INSERT INTO sql_test_a (ID, FIRST_NAME, LAST_NAME) VALUES ('2', 'Mike', 'Tyson');
INSERT INTO sql_test_a (ID, FIRST_NAME, LAST_NAME) VALUES ('3', 'Bill', 'Keaton');
INSERT INTO sql_test_a (ID, FIRST_NAME, LAST_NAME) VALUES ('4', 'Greg', 'Mercury');
INSERT INTO sql_test_a (ID, FIRST_NAME, LAST_NAME) VALUES ('5', 'Steve', 'Jobs');
INSERT INTO sql_test_a (ID, FIRST_NAME, LAST_NAME) VALUES ('6', 'Johhny', 'Depp');
INSERT INTO sql_test_a (ID, FIRST_NAME, LAST_NAME) VALUES ('', 'who', 'areU');
- 기본 테이블을 만들어보았다.
- 1~6까지의 행은 NULL값이 없는 행이지만 마지막 행에는 ID칼럼에 NULL값이 들어있다.
- 아래는 각 쿼리문의 결과이다.
select count(*)
from sql_test_a;
Result
COUNT(*) |
7 |
select count(1)
from sql_test_a;
Result
COUNT(1) |
7 |
select count(ID)
from sql_test_a;
Result
COUNT(ID) |
6 |
- 위와 같이 count(*) , count(1)은 똑같은 결괏값을 반환하지만 count(칼럼명)은 다른 값을 반환하는 것을 볼 수 있다.
- count(칼럼명)은 NULL값을 제외하고 세기 때문이다.
오랜만의 맥북을 이용해 포스팅을 하다보니 로컬에 DB를 구축하지 못해 온라인상에서 간단한 쿼리를 돌릴 수 있는 사이트에서 실행하였다.
환경이 설정되지 않은 곳에서 간단한 TEST를 하기에는 좋은 사이트이다.
SQL Test
Free Online SQL Test Tool
sqltest.net
반응형