ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • count(*) 과 count(1)
    Study/데이터베이스 | DB 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

     

     

     

    반응형

    'Study > 데이터베이스 | DB' 카테고리의 다른 글

    키의 종류  (2) 2021.05.21
    속성(Attribute)  (0) 2021.05.21
    commit, rollback 이란?  (0) 2020.09.09
    ORA-01756: 단일 인용부를 지정해 주십시오 | SQL ERROR  (0) 2020.09.08
    SQL developer 줄정리  (0) 2020.09.07

    댓글

Designed by Who.