Pular para o conteúdo principal

Introdução à cláusula WHERE em SQL

Neste tutorial, você vai aprender a filtrar linhas em SQL usando a cláusula WHERE.
Atualizado 17 de set. de 2026  · 7 min lido

Explorar com IA

ChatGPTClaudePerplexity

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 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:

-- Create the countries tableCREATE TABLE countries (    code VARCHAR(3) PRIMARY KEY,    name VARCHAR(100),    continent VARCHAR(50),    region VARCHAR(100),    surface_area NUMERIC,    indep_year INTEGER,    local_name VARCHAR(100),    gov_form VARCHAR(100),    capital VARCHAR(100),    cap_long NUMERIC,    cap_lat NUMERIC);-- Insert sample data into the countries tableINSERT INTO countries (code, name, continent, region, surface_area, indep_year, local_name, gov_form, capital, cap_long, cap_lat)VALUES('IND', 'India', 'Asia', 'Southern Asia', 3287263, 1947, 'Bharat', 'Federal Republic', 'New Delhi', 77.2090, 28.6139),('PAK', 'Pakistan', 'Asia', 'Southern Asia', 881912, 1947, 'Pakistan', 'Federal Republic', 'Islamabad', 73.0551, 33.6844),('CHN', 'China', 'Asia', 'Eastern Asia', 9596961, NULL, 'Zhongguo', 'People''s Republic', 'Beijing', 116.4074, 39.9042),('VNM', 'Vietnam', 'Asia', 'South-Eastern Asia', 331212, 1945, 'Việt Nam', 'Socialist Republic', 'Hanoi', 105.8544, 21.0285),('JPN', 'Japan', 'Asia', 'Eastern Asia', 377975, NULL, 'Nippon', 'Constitutional Monarchy', 'Tokyo', 139.6917, 35.6895),('DEU', 'Germany', 'Europe', 'Western Europe', 357386, 1955, 'Deutschland', 'Federal Republic', 'Berlin', 13.4050, 52.5200),('FRA', 'France', 'Europe', 'Western Europe', 551695, 843, 'France', 'Republic', 'Paris', 2.3522, 48.8566),('RUS', 'Russia', 'Europe', 'Eastern Europe', 17098242, 1991, 'Rossiya', 'Federation', 'Moscow', 37.6173, 55.7558),('UKR', 'Ukraine', 'Europe', 'Eastern Europe', 603500, 1991, 'Ukrayina', 'Republic', 'Kyiv', 30.5234, 50.4501),('EGY', 'Egypt', 'Africa', 'Northern Africa', 1002450, 1922, 'Misr', 'Republic', 'Cairo', 31.2357, 30.0444),('NGA', 'Nigeria', 'Africa', 'Western Africa', 923768, 1960, 'Nigeria', 'Federal Republic', 'Abuja', 7.4951, 9.0578),('AUS', 'Australia', 'Oceania', 'Australia and New Zealand', 7682300, 1901, 'Australia', 'Federal Parliamentary Democracy', 'Canberra', 149.1245, -35.3075),('USA', 'United States', 'North America', 'North America', 9833517, 1776, 'United States', 'Federal Republic', 'Washington, D.C.', -77.0369, 38.9072),('CAN', 'Canada', 'North America', 'North America', 9984670, 1867, 'Canada', 'Constitutional Monarchy', 'Ottawa', -75.6972, 45.4215),('BRA', 'Brazil', 'South America', 'South America', 8515767, 1822, 'Brasil', 'Federal Republic', 'Brasília', -47.9292, -15.7801),('ARG', 'Argentina', 'South America', 'South America', 2780400, 1816, 'Argentina', 'Federal Republic', 'Buenos Aires', -58.3816, -34.6037);

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';

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;

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;

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);

Você pode até conectar mais de duas condições em uma cláusula WHERE:

SELECT * FROM countries WHERE continent = 'Asia' OR indep_year > 1900 OR surface_area > 652090;

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 > 1901 AND surface_area > 652090;

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 (SELECT MAX(surface_area) FROM countries);

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).

Torne-se certificado em SQL

Comprove que suas habilidades em SQL estão prontas para o trabalho com uma certificação.
Impulsionar Minha Carreira

Sayak Paul's photo
Author
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 IS NULL;

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 = (SELECT MAX(surface_area) FROM countries);

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.

Tópicos
Data Analysis
Ciência de dados
SQL

Cursos de SQL

Curso

Melhorando o Desempenho de Consultas no PostgreSQL

4 h
14K
Aprenda a organizar suas consultas PostgreSQL para que elas sejam executadas rapidinho.
Ver detalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

Tutorial

Exemplos e tutoriais de consultas SQL

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
Sejal Jaiswal's photo

Sejal Jaiswal

15 min

Tutorial

QUALIFICAR: A instrução de filtragem SQL que você nunca soube que precisava

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.
Kurtis Pykes 's photo

Kurtis Pykes

8 min

Tutorial

Tutorial de visão geral do banco de dados SQL

Neste tutorial, você aprenderá sobre bancos de dados em SQL.
DataCamp Team's photo

DataCamp Team

3 min

Tutorial

Como usar GROUP BY e HAVING no SQL

Um guia intuitivo para você descobrir os dois comandos SQL mais populares para agregar linhas do seu conjunto de dados
Eugenia Anello's photo

Eugenia Anello

6 min

Tutorial

FUNÇÃO SQL COUNT()

COUNT() permite que você conte o número de linhas que correspondem a determinadas condições. Saiba como usá-lo neste tutorial.
Travis Tang 's photo

Travis Tang

3 min

Tutorial

Tutorial do Insert Into SQL

A instrução "INSERT INTO" do SQL pode ser usada para adicionar linhas de dados a uma tabela no banco de dados.
DataCamp Team's photo

DataCamp Team

3 min

Ver MaisVer Mais