SQL SELECT: select count(*), count(1) e count(nome) — a batalha das funções count no SQL

SQL SELECT: select count(*), count(1) e count(nome) — a batalha das funções count no SQL
Guilherme Silveira
Guilherme Silveira

Compartilhe

Introdução: SQL SELECT e função count()

Quando vamos usar count no banco de dados nos deparamos com várias opções do SQL, conheça as diferenças entre as várias possibilidades de contar linhas de tabela com count em um banco de dados.

Imagem de destaque #cover

Como contar linhas no SQL: exemplos práticos

Como um exemplo, quantos produtos tem minha empresa mesmo?


select count(nome) from Produtos; 
> 198

Mas...


select count(id) from Produtos; 
> 200

Como assim? SQL pirou? De novo?


select id, nome from Produtos where nome is null; 
> 190, null 
> 196, null
Banner da Escola de Data Science: Matricula-se na escola de Data Science. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!

O que é select count? Como usar para contar linhas no SQL

O select count verifica o número de linhas (conta as linhas) não nulas dentro do count que você quer fazer! Se tinha nome nulo, não contou! Resultado? Zoou.

SQL count: como contar valores não nulos

Muito cuidado com seus counts. Então o que devo contar? Se você quer contar valores não nulos, use o count(campo), como fizemos:


select count(nome) from Produtos; 
> 198

SQL count: como contar todos os valores

Mas se quer contar todos, count estrela nele pra não correr risco, ele vai contar o número de registros retornados, independentemente de valores nulos:


select count(\*) from Produtos; 
> 200

Caso especial: count (1)

E o 1? Pra que o count(1)?


select count(1) from Produtos; 
> 200

O count(1) seria uma alternativa ao count(algum_campo) pois você teria certeza que nunca seria nulo, e que não precisaria ler o campo... acontece que fica bizarro select count(1), e você quer ter código bizarro ou código legível?

Desafio: count(), count (*) e count (1)

Como disse, eu prefiro contar estrelas... e você, conta estrelas, conta um ou conta id?

Fica agora o desafio: qual o resultado da SQL a seguir?


select count(nome) from Produtos where nome is null; 
> ??????

Gostou dessas práticas e dicas de SQL? Então confira também os cursos que temos na Alura para a SQL e banco de dados! Outro assunto legal para estudar é sobre o que são como usar trigger em SQL. Até o próximo artigo ;)

Guilherme Silveira
Guilherme Silveira

Co-fundador da Alura, da Caelum e do GUJ. Com 18 anos de ensino nas áreas de programação e dados, criou mais de 100 cursos. Possui formação em engenharia de software, viés matemático e criativo, além de ser medalhista de ouro em competições nacionais de computação, tendo representado o Brasil nos mundiais. Participante de comunidades open source e de educação em tecnologia, tendo escrito 7 livros. Faz mágica e fala coreano no tempo livre.

Veja outros artigos sobre Data Science