Filtrar linhas de uma tabela com base em uma condição (ou conjunto de condições) é uma prática muito comum em análise de dados. Em SQL, você faz isso usando a cláusula where. Neste tutorial, você vai usá-la em vários cenários diferentes.
Você usará o PostgreSQL como o SGBD (Sistema de Gerenciamento de Banco de Dados), mas a sintaxe não muda muito ao usar outros sistemas. Você vai começar configurando um banco de dados PostgreSQL e criando manualmente uma tabela com dados de países. Depois disso, vai executar várias consultas com filtros usando a cláusula WHERE.
Observação: para acompanhar o tutorial, é importante conhecer o básico de SQL e PostgreSQL. Se precisar, estes recursos podem ajudar:
Para acompanhar este tutorial, você vai criar uma tabela no PostgreSQL com informações sobre países do mundo. Essa tabela será usada para demonstrar como a cláusula WHERE funciona em diferentes situações.
Passo 1: crie um novo banco de dados
Abra o pgAdmin (ou sua interface SQL preferida) e crie um novo banco de dados PostgreSQL. Você pode chamá-lo de world_data ou outro nome de sua preferência.
Passo 2: crie e popule a tabela
Com o banco pronto, abra uma nova janela de editor de consultas SQL e rode o código abaixo. Ele cria uma tabela chamada countries e insere um conjunto de registros cobrindo vários continentes, anos de independência e regiões:
A tabela traz informações diferentes sobre um total de 16 países ao redor do mundo. Ela possui as seguintes colunas:
code, a chave primária da tabela, que representa o código universal do país
name, o nome do país
continent, o continente ao qual o país pertence
region, a região geográfica onde o país está localizado
surface_area, a área do país
indep_year, o ano em que o país obteve independência
local_name, o nome local do país
gov_form, a forma de governo vigente no país
capital, a capital do país
cap_long, a longitude da capital
cap_lat, a latitude da capital
Agora vamos começar a filtrar alguns registros com a cláusula WHERE.
Usando a cláusula WHERE em SQL
Em SQL, a cláusula WHERE permite filtrar registros com base em valores textuais e numéricos. Você pode comparar esses valores, e as seguintes operações de comparação são suportadas:
= igual
<> e != diferente
< menor que
> maior que
<= menor ou igual a
>= maior ou igual a
É recomendado usar <> em vez de !=, conforme o padrão SQL.
Vamos buscar agora o registro do país cujo code é AUS. A coluna a ser comparada é code e o valor a comparar é AUS. A consulta seria:
SELECT*FROM countries WHERE code ='AUS';Tecnologia
E o resultado é:
Repare em dois pontos aqui:
A cláusula WHERE sempre vem após o FROM.
Em SQL, strings são colocadas entre aspas simples.
Agora, vamos ver uma comparação numérica. Busque os países que conquistaram sua independência (indep_year) depois de 1901:
SELECT*FROM countries WHERE indep_year >1901;Tecnologia
Você obtém os registros de 3 países que conquistaram a independência depois de 1901. Observe o operador de comparação usado. A coluna indep_year é do tipo inteiro. Portanto, nada de aspas na comparação.
Você pode combinar várias condições em uma cláusula WHERE usando os conectivos AND e OR. A consulta a seguir retorna os países where continent = 'Asia' and indep_year > 1900:
SELECT*FROM countries WHERE continent ='Asia'AND indep_year >1901;Tecnologia
Você obtém informações de três países que ficam no continente Asia e conquistaram independência após 1901. Note que, na consulta acima, você comparou valores textuais e numéricos. Como exercício, experimente diferentes combinações de AND e OR na cláusula WHERE.
Observação: ao combinar AND e OR, não esqueça de colocar cada condição entre parênteses. Caso contrário, o SQL pode se confundir ao determinar a precedência na avaliação das condições.
Com a consulta abaixo, você obtém um total de seis países.
SELECT*FROM countries WHERE(continent ='Europe'AND indep_year >1900)or(continent ='Asia'AND indep_year >1900);Tecnologia
Você pode até conectar mais de duas condições em uma cláusula WHERE:
SELECT*FROM countries WHERE continent ='Asia'OR indep_year >1900OR surface_area >652090;Tecnologia
Nesse caso, você obtém 15 países que estão em Asia, ou que conquistaram independência após 1901, ou que têm área maior que 652090.
Agora, vamos transformar a consulta em uma variante com AND, que é mais restritiva:
SELECT*FROM countries WHERE continent ='Asia'AND indep_year >1901AND surface_area >652090;Tecnologia
Nesse caso, você terá um total de dois países.
Também é possível usar subconsultas em uma cláusula WHERE. Suponha que você queira buscar o país com a maior área, mas não sabe qual é esse valor máximo. A consulta abaixo resolve isso:
SELECT*FROM countries WHERE surface_area in(SELECTMAX(surface_area)FROM countries);Tecnologia
Você deve obter o registro de Russia.
Conclusão
Parabéns, você concluiu este tutorial. Filtrar resultados de consultas com base em condições é uma habilidade essencial, e este conteúdo foi uma introdução a isso. Quer levar suas habilidades em SQL ainda mais longe? Confira nossos cursos (link abaixo).
Autor
Sayak Paul
Sayak trabalha na Hugging Face, onde codifica, escreve e fala. Seu tempo é gasto principalmente com tudo relacionado à biblioteca de difusores. Ele também é instrutor de projetos do DataCamp e autor de vários tutoriais do DataCamp. Fora do trabalho, você o verá assistindo a Suits na Netflix pela enésima vez.
SQL: perguntas frequentes sobre a cláusula WHERE
Posso usar colunas de texto e numéricas em uma cláusula WHERE?⌄
Sim, você pode filtrar por valores de texto (por exemplo, 'Asia') e numéricos (por exemplo, > 1901). Lembre-se de que valores de texto devem estar entre aspas simples.
Existe diferença entre <> e != em SQL?⌄
Ambos significam "diferente", mas <> é o operador padrão do SQL. Alguns bancos de dados também aceitam !=, mas é melhor usar <> para garantir compatibilidade.
Como filtro registros com valores NULL?⌄
Use IS NULL ou IS NOT NULL. Exemplo:
SELECT*FROM countries WHERE indep_year ISNULL;Tecnologia
Posso usar subconsultas em uma cláusula WHERE?⌄
Sim. Você pode usar subconsultas para comparar uma coluna com o resultado de outra consulta. Exemplo:
SELECT*FROM countries WHERE surface_area =(SELECTMAX(surface_area)FROM countries);Tecnologia
A cláusula WHERE vem antes ou depois do FROM?⌄
A cláusula WHERE sempre vem depois da cláusula FROM e antes de cláusulas como GROUP BY ou ORDER BY.
Posso usar WHERE com JOINs?⌄
Com certeza. Você pode aplicar a cláusula WHERE depois de executar um JOIN para filtrar o conjunto de resultados combinados.
Se você deseja começar a usar o SQL, nós o ajudamos. Neste tutorial de SQL, apresentaremos as consultas SQL, uma ferramenta poderosa que nos permite trabalhar com os dados armazenados em um banco de dados. Você verá como escrever consultas SQL, aprenderá sobre
Saiba mais sobre a cláusula SQL QUALIFY, um método de filtragem essencial, porém menos conhecido, no SQL. Entenda sua sintaxe, usos e como ela difere de outros métodos de filtragem SQL.
Filtrar linhas de uma tabela com base em uma condição (ou conjunto de condições) é uma prática muito comum em análise de dados. Em SQL, você faz isso usando a cláusula
where. Neste tutorial, você vai usá-la em vários cenários diferentes.Você usará o PostgreSQL como o SGBD (Sistema de Gerenciamento de Banco de Dados), mas a sintaxe não muda muito ao usar outros sistemas. Você vai começar configurando um banco de dados PostgreSQL e criando manualmente uma tabela com dados de países. Depois disso, vai executar várias consultas com filtros usando a cláusula
WHERE.Observação: para acompanhar o tutorial, é importante conhecer o básico de SQL e PostgreSQL. Se precisar, estes recursos podem ajudar:
Criando uma tabela no PostgreSQL
Para acompanhar este tutorial, você vai criar uma tabela no PostgreSQL com informações sobre países do mundo. Essa tabela será usada para demonstrar como a cláusula
WHEREfunciona em diferentes situações.Passo 1: crie um novo banco de dados
Abra o pgAdmin (ou sua interface SQL preferida) e crie um novo banco de dados PostgreSQL. Você pode chamá-lo de
world_dataou outro nome de sua preferência.Passo 2: crie e popule a tabela
Com o banco pronto, abra uma nova janela de editor de consultas SQL e rode o código abaixo. Ele cria uma tabela chamada
countriese insere um conjunto de registros cobrindo vários continentes, anos de independência e regiões:A tabela traz informações diferentes sobre um total de 16 países ao redor do mundo. Ela possui as seguintes colunas:
code, a chave primária da tabela, que representa o código universal do paísname, o nome do paíscontinent, o continente ao qual o país pertenceregion, a região geográfica onde o país está localizadosurface_area, a área do paísindep_year, o ano em que o país obteve independêncialocal_name, o nome local do paísgov_form, a forma de governo vigente no paíscapital, a capital do paíscap_long, a longitude da capitalcap_lat, a latitude da capitalAgora vamos começar a filtrar alguns registros com a cláusula
WHERE.Usando a cláusula WHERE em SQL
Em SQL, a cláusula
WHEREpermite filtrar registros com base em valores textuais e numéricos. Você pode comparar esses valores, e as seguintes operações de comparação são suportadas:=igual<>e!=diferente<menor que>maior que<=menor ou igual a>=maior ou igual aÉ recomendado usar
<>em vez de!=, conforme o padrão SQL.Vamos buscar agora o registro do país cujo
codeéAUS. A coluna a ser comparada écodee o valor a comparar éAUS. A consulta seria:E o resultado é:
Repare em dois pontos aqui:
A cláusula
WHEREsempre vem após oFROM.Em SQL, strings são colocadas entre aspas simples.
Agora, vamos ver uma comparação numérica. Busque os países que conquistaram sua independência (
indep_year) depois de1901:Você obtém os registros de 3 países que conquistaram a independência depois de
1901. Observe o operador de comparação usado. A colunaindep_yearé do tipo inteiro. Portanto, nada de aspas na comparação.Você pode combinar várias condições em uma cláusula
WHEREusando os conectivosANDeOR. A consulta a seguir retorna os paíseswhere continent = 'Asia' and indep_year > 1900:Você obtém informações de três países que ficam no continente
Asiae conquistaram independência após1901. Note que, na consulta acima, você comparou valores textuais e numéricos. Como exercício, experimente diferentes combinações deANDeORna cláusulaWHERE.Observação: ao combinar
ANDeOR, não esqueça de colocar cada condição entre parênteses. Caso contrário, o SQL pode se confundir ao determinar a precedência na avaliação das condições.Com a consulta abaixo, você obtém um total de seis países.
Você pode até conectar mais de duas condições em uma cláusula
WHERE:Nesse caso, você obtém 15 países que estão em
Asia, ou que conquistaram independência após1901, ou que têm área maior que652090.Agora, vamos transformar a consulta em uma variante com
AND, que é mais restritiva:Nesse caso, você terá um total de dois países.
Também é possível usar subconsultas em uma cláusula
WHERE. Suponha que você queira buscar o país com a maior área, mas não sabe qual é esse valor máximo. A consulta abaixo resolve isso:Você deve obter o registro de
Russia.Conclusão
Parabéns, você concluiu este tutorial. Filtrar resultados de consultas com base em condições é uma habilidade essencial, e este conteúdo foi uma introdução a isso. Quer levar suas habilidades em SQL ainda mais longe? Confira nossos cursos (link abaixo).