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를 하기에는 좋은 사이트이다. 

sqltest.net

 

SQL Test

Free Online SQL Test Tool

sqltest.net

 

 

 

반응형