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