Pular para o conteúdo principal

Top 99 SQL interview questions and answers for 2026

Fique pronto para a entrevista com esta visão completa de perguntas e respostas essenciais de SQL para candidatos, gestores e recrutadores.
Atualizado 30 de abr. de 2026  · 15 min lido

Seja você um profissional em busca de uma nova oportunidade para aplicar suas habilidades em SQL ou um gestor prestes a entrevistar um candidato para uma vaga, conhecer as perguntas e respostas mais comuns de entrevistas de SQL é indispensável.

Este artigo reúne 99 perguntas e respostas de entrevista em SQL para 2026, cobrindo os principais tópicos de SQL para ajudar você a se preparar, aprender e contratar com eficiência, incluindo:

  • Conhecimentos fundamentais: definições claras de RDBMS, chaves e dialetos de SQL.
  • Domínio técnico: diferenças entre DDL e DML, constraints e indexação.
  • Lógica de consultas: explicações sobre joins, subqueries e funções de agregação.
  • Aplicação prática: soluções de código para o dia a dia, como encontrar o n-ésimo maior valor ou remover duplicatas.
  • Perguntas por cenários: problemas no estilo de entrevista cobrindo totais acumulados, detecção de duplicatas, análise de lacunas e mais.

 Para quem quer ir além e fortalecer ainda mais seus conhecimentos e habilidades, vale explorar nossos cursos completos de data engineering, tecnologias em nuvem e AWS.

Perguntas de entrevista em SQL de relance

Entrevistas de SQL costumam refletir a forma como as pessoas realmente aprendem a linguagem.

No começo, o foco é vocabulário e gramática: saber o que é um join, como o SELECT funciona e a diferença entre DDL e DML.

À medida que você ganha familiaridade, o foco muda de "você consegue escrever uma query" para "você consegue escrever a query certa". Você passa a entender quando um índice ajuda, por que normalização importa e como comandos sutilmente diferentes como DELETE e TRUNCATE se comportam nos bastidores.

No nível sênior, a sintaxe é pressuposta e o teste real é resolver problemas: lidar com duplicatas, NULLs, empates e regras de ranking com window functions e CTEs, além de raciocinar sobre transações, concorrência e performance. 

Para praticantes intermediários

  1. Funções em SQL. Você deve conhecer funções de agregação e escalares, bem como funções nativas e definidas pelo usuário.

  2. Comandos avançados. As perguntas podem abordar joins, chaves primárias e estrangeiras, índices e relacionamentos em SQL.

  3. Modelagem de banco de dados. Espere questões sobre normalização, desnormalização e diferenças entre instruções como DELETE, TRUNCATE e DROP.

  4. Consultas avançadas. Podem perguntar sobre subqueries, tanto aninhadas quanto correlacionadas, além de tarefas específicas como encontrar o n-ésimo maior valor em uma coluna.

Perguntas gerais de entrevista em SQL

Antes de entrar nas questões técnicas, o entrevistador pode começar com perguntas gerais sobre sua experiência com SQL.\

Não se preocupe se sua vivência com SQL ainda for limitada: isso provavelmente já está claro no seu currículo. Se chegaram até você, é porque seu perfil foi considerado um bom encaixe. Além disso, não há problema algum em ter trabalhado com apenas um dialeto de SQL. Lembre que os dialetos são bastante parecidos, então dominar um deles é uma base sólida para aprender os demais.

1. O que é SQL?

Sigla para Structured Query Language, é uma linguagem de programação usada para interagir com sistemas de gerenciamento de bancos de dados relacionais (RDBMS). Isso inclui buscar, atualizar, inserir e remover dados de tabelas.

2. O que são dialetos de SQL? Dê alguns exemplos.

As várias versões de SQL, gratuitas e pagas, também são chamadas de dialetos. Todos os dialetos têm sintaxe muito semelhante e variam pouco em funcionalidades adicionais. Alguns exemplos: Microsoft SQL Server, PostgreSQL, MySQL, SQLite, T-SQL e Oracle.

3. Quais são as principais aplicações do SQL?

Com SQL, podemos:

  • criar, excluir e atualizar tabelas em um banco de dados
  • acessar, manipular e modificar dados em uma tabela
  • recuperar e resumir informações de uma ou várias tabelas
  • adicionar ou remover determinadas linhas ou colunas de uma tabela

Perguntas de entrevista em SQL para iniciantes 

O entrevistador pode começar aquecendo com questões mais simples:

4. O que é uma instrução SQL?

Também chamada de comando SQL. É uma cadeia de caracteres interpretada pelo mecanismo de SQL como um comando válido, executado em seguida. Exemplos: SELECT, CREATE, DELETE, DROP, REVOKE, entre outros.

5. O que é uma query SQL?

Uma query é um trecho de código em SQL para acessar ou modificar dados de um banco.

Há dois tipos de queries: para recuperação de dados e para modificação de dados. As primeiras servem para obter os dados necessários (incluindo limitar, agrupar, ordenar, extrair de múltiplas tabelas etc.); as segundas são usadas para criar, adicionar, excluir, atualizar e renomear dados.

6. O que é uma subquery em SQL?

Também chamada de inner query: é uma query colocada dentro de outra query (outer query). Uma subquery pode aparecer em cláusulas como SELECT, FROM, WHERE, UPDATE, etc. Também é possível ter uma subquery dentro de outra subquery. A subquery mais interna roda primeiro e seu resultado é passado para a query que a contém.

7. O que é um join em SQL?

Uma cláusula usada para combinar e recuperar registros de duas ou mais tabelas. Tabelas podem ser unidas com base no relacionamento entre suas colunas. Confira nosso tutorial de SQL joins para mais contexto e nosso guia dedicado com perguntas de entrevista sobre SQL joins

8. O que é um comentário em SQL?

Uma explicação legível por humanos sobre o que um trecho de código faz. Comentários podem ser de uma linha (precedidos por dois hífens --) ou multilinha (/*comment_text*/). O mecanismo de SQL ignora comentários ao executar o código. A ideia é tornar o código mais compreensível para quem for lê-lo no futuro.

9. O que é um alias em SQL?

Um nome temporário dado a uma tabela (ou coluna) durante a execução de uma query. Aliases melhoram a legibilidade e deixam o código mais compacto. Um alias é introduzido com a palavra-chave AS:

SELECT col_1 AS column
FROM table_name;

Perguntas técnicas de entrevista em SQL

Agora vamos às perguntas técnicas e a possíveis respostas.

Ao responder questões técnicas, a melhor estratégia é ser o mais preciso possível. Respostas vagas podem soar como desvio de assunto e ainda abrir espaço para perguntas adicionais sobre as quais você pode se sentir menos confiante.

No fim das contas, há várias maneiras de consultar um banco em SQL. Além disso, SQL se integra facilmente com outras linguagens, como Python ou R, potencializando o que é possível fazer.

10. Quais tipos de comandos SQL você conhece?

  • Data Definition Language (DDL) – define e modifica a estrutura do banco.
  • Data Manipulation Language (DML) – acessa, manipula e modifica dados.
  • Data Control Language (DCL) – controla acesso dos usuários aos dados e concede ou revoga privilégios.
  • Transaction Control Language (TCL) – controla transações no banco.
  • Data Query Language (DQL) – realiza consultas aos dados para recuperar informações necessárias.

11. Dê alguns exemplos de comandos SQL comuns.

  • DDL: CREATE, ALTER TABLE, DROP, TRUNCATE e ADD COLUMN

  • DML: UPDATE, DELETE e INSERT

  • DCL: GRANT e REVOKE

  • TCL: COMMIT, SET TRANSACTION, ROLLBACK e SAVEPOINT

  • DQL:SELECT

12. O que é DBMS e quais tipos você conhece?

É a sigla para Database Management System, um pacote de software usado para executar diversas operações nos dados armazenados em um banco: acessar, atualizar, tratar, inserir e remover dados. Há vários tipos de DBMS, como relacional, hierárquico, em rede, grafo ou orientado a objetos. Esses tipos se baseiam na forma como os dados são organizados, estruturados e armazenados no sistema.

13. O que é RDBMS? Dê exemplos.

É a sigla para Relational Database Management System. É o tipo mais comum de DBMS para trabalhar com dados distribuídos em múltiplas tabelas relacionadas por chaves compartilhadas. A linguagem SQL foi projetada para interagir com RDBMS. Exemplos: MySQL, PostgreSQL, Oracle, MariaDB etc.

14. O que são tabelas e campos em SQL?

Uma tabela é um conjunto organizado de dados relacionados em formato tabular, isto é, em linhas e colunas. Campo é outro termo para coluna de uma tabela.

15. Quais tipos de subqueries em SQL você conhece?

  • Single-row – retorna no máximo uma linha.
  • Multi-row – retorna pelo menos duas linhas.
  • Multi-column – retorna pelo menos duas colunas.
  • Correlacionada – depende de informações da query externa.
  • Aninhada – uma subquery dentro de outra subquery.

16. O que é uma constraint e por que usá-la?

Um conjunto de condições que define o tipo de dado permitido em cada coluna. Constraints garantem a integridade dos dados e bloqueiam ações indesejadas.

17. Quais constraints de SQL você conhece?

  • DEFAULT – define um valor padrão para a coluna.

  • UNIQUE – permite apenas valores únicos.

  • NOT NULL – não permite valores nulos.

  • PRIMARY KEY – exige valores únicos e estritamente não nulos (NOT NULL e UNIQUE).

  • FOREIGN KEY – estabelece chaves compartilhadas entre duas ou mais tabelas.

18. Quais tipos de join você conhece?

  • (INNER) JOIN – retorna apenas os registros que satisfazem a condição de junção em ambas (ou todas) as tabelas. É o join padrão do SQL.

  • LEFT (OUTER) JOIN – retorna todos os registros da tabela da esquerda e os registros da direita que atendem à condição.

  • RIGHT (OUTER) JOIN – retorna todos os registros da tabela da direita e os registros da esquerda que atendem à condição.

  • FULL (OUTER) JOIN – retorna todos os registros de ambas (ou todas) as tabelas. Pode ser visto como a combinação de left e right joins.

Observação: FULL OUTER JOIN é suportado por PostgreSQL, SQL Server, Oracle e MySQL 8.0+, mas no MySQL só é possível via padrões de UNION; já o SQLite não suporta RIGHT JOIN, que pode ser emulado com LEFT JOIN combinado a UNION.

19. O que é uma chave primária em SQL?

Uma coluna (ou conjunto de colunas) de uma tabela à qual se aplica a constraint PRIMARY KEY para garantir valores únicos e não nulos. Em outras palavras, uma primary key combina NOT NULL e UNIQUE. A chave primária identifica unicamente cada registro da tabela.

Conceito relacionado — Surrogate key: uma surrogate key é um identificador gerado artificialmente (geralmente um inteiro sequencial ou UUID) atribuído a cada registro, independente dos valores de negócio. Diferente de chaves naturais (ex.: e-mail), surrogate keys permanecem estáveis quando os dados de negócio mudam, sendo populares como chaves primárias em bancos de produção.

 Cada tabela pode definir no máximo uma PRIMARY KEY (que pode ser composta). Uma PRIMARY KEY  é fortemente recomendada, mas nem todo mecanismo a exige estritamente.

20. O que é uma unique key em SQL?

Uma coluna (ou conjunto de colunas) com a constraint UNIQUE para garantir valores únicos na coluna, incluindo um possível NULL (apenas um).

Observação

  • SQL Server: apenas um NULL permitido, a menos que se use um índice filtrado.
  • PostgreSQL / Oracle / MySQL: múltiplos NULLs são permitidos porque NULL <> NULL.

21. O que é uma chave estrangeira (foreign key) em SQL? 

Uma coluna (ou conjunto de colunas) com a constraint FOREIGN KEY (ou UNIQUE) para vincular essa coluna à chave primária em outra(s) tabela(s). A finalidade das foreign keys é manter várias tabelas do banco conectadas de forma consistente.

22. O que é um índice em SQL?

Uma estrutura de dados especial associada a uma tabela, usada para armazenar partes importantes e permitir busca e recuperação mais rápidas. Índices são especialmente eficientes em bancos grandes, onde melhoram significativamente a performance de queries.

23. Quais tipos de índices você conhece?

  • Índice único (unique) – não permite duplicatas e ajuda a manter a integridade dos dados.
  • Índice clusterizado (clustered) – define a ordem física dos registros da tabela e busca dados com base nos valores da chave. Uma tabela pode ter apenas um índice clusterizado.
  • Índice não clusterizado (non-clustered) – mantém uma ordem lógica diferente da ordem física dos dados em disco. Os dados ficam em um lugar e o índice não clusterizado em outro. Uma tabela pode ter múltiplos índices não clusterizados.

24. O que é um schema?

Uma coleção de elementos estruturais do banco, como tabelas, procedures, índices, funções e triggers. Ele mostra a arquitetura geral, especifica relacionamentos entre objetos e define permissões de acesso. Leia nosso guia de schema de banco de dados para se aprofundar.

25. O que é um operador em SQL?

Um caractere reservado, combinação de caracteres ou palavra-chave usada em queries para executar uma operação específica. Operadores aparecem comumente na cláusula WHERE para definir condição(ões) de filtragem.

26. Quais tipos de operadores SQL você conhece?

  • Aritméticos (+, -, *, / etc.)

  • Comparação (>, <, =, >= etc.)

  • Compostos (+=, -=, *=, /= etc.)

  • Lógicos (AND, OR, NOT, BETWEEN etc.)

  • Strings (%, _, +, ^ etc.)

  • Conjuntos (UNION, UNION ALL, INTERSECT e MINUS (ou EXCEPT))

27. O que é uma cláusula?

Uma condição imposta a uma query SQL para filtrar dados e obter o resultado desejado. Exemplos: WHERE, LIMIT, HAVING, LIKE, AND, OR, ORDER BY etc.

28. Quais são instruções comuns usadas com SELECT?

As mais comuns são FROM, GROUP BY, JOIN, WHERE, ORDER BY, LIMIT e HAVING.

29. Como criar uma tabela em SQL?

Usando CREATE TABLE. Por exemplo, para criar uma tabela com três colunas e tipos pré-definidos:

CREATE TABLE table_name (col_1 datatype,
                         col_2 datatype,
                         col_3 datatype);

30. Como atualizar uma tabela?

Usando UPDATE. Sintaxe:

UPDATE table_name
SET col_1 = value_1, col_2 = value_2
WHERE condition;

31. Como excluir uma tabela do banco?

Usando DROP TABLE. Sintaxe: DROP TABLE table_name;.

32. Como obter a contagem de registros em uma tabela?

Usando a função de agregação COUNT() com asterisco: SELECT COUNT(*) FROM table_name;.

33. Como ordenar registros em uma tabela?

Usando ORDER BY:

SELECT * FROM table_name
ORDER BY col_1;

Podemos especificar ordem decrescente com DESC; caso contrário, a ordem padrão é crescente. Também é possível ordenar por mais de uma coluna e definir para cada uma se a ordem é crescente ou decrescente. Exemplo:

SELECT * FROM table_name
ORDER BY col_1 DESC, col_3, col_6 DESC;

34. Como selecionar todas as colunas de uma tabela?

Usando o asterisco * com SELECT. Sintaxe: SELECT * FROM table_name;.

35. Como selecionar registros comuns entre duas tabelas?

Usando INTERSECT:

SELECT col1, col2 FROM table_1
INTERSECT
SELECT col1, col2 FROM table_2;

Observação: INTERSECT exige o mesmo número de colunas e tipos compatíveis.

36. O que é DISTINCT e como usá-lo?

É usado com SELECT para eliminar duplicatas e retornar apenas valores únicos de uma coluna. Sintaxe:

SELECT DISTINCT col_1
FROM table_name;

37. O que são relacionamentos? Dê exemplos.

São conexões e correlações entre entidades, isto é, como duas ou mais tabelas se relacionam. Por exemplo, o mesmo ID de cliente pode aparecer em uma tabela de vendas e na tabela de clientes.

38. O que é um valor NULL? Em que difere de zero ou espaço em branco?

Um valor NULL indica ausência de dado em uma célula. Já zero é um valor numérico válido e string vazia é uma cadeia de caracteres de comprimento zero, válida.

39. Qual a diferença entre SQL e NoSQL?

Bancos SQL são relacionais, estruturados e usam tabelas com schemas pré-definidos; bancos NoSQL são não relacionais, sem schema fixo e projetados para lidar com dados não estruturados ou semiestruturados.

40. Quais desafios comuns ao trabalhar com bancos SQL?

Desafios incluem ajuste de performance em grandes volumes, estratégias de indexação, garantir integridade com constraints, lidar com transações concorrentes e otimizar a execução de queries.

Perguntas intermediárias de entrevista em SQL

41. O que é uma Common Table Expression (CTE)?

Uma Common Table Expression (CTE) é um conjunto de resultados temporário e nomeado que você pode referenciar dentro de uma instrução SELECT, INSERT, UPDATE ou DELETE. CTEs melhoram a legibilidade e permitem quebrar queries complexas em partes simples e reutilizáveis. A sintaxe usa a palavra-chave WITH:

WITH sales_summary AS (
  SELECT product_id, SUM(amount) AS total_sales
  FROM sales
  GROUP BY product_id
)
SELECT p.product_name, s.total_sales
FROM products p
JOIN sales_summary s ON p.id = s.product_id
WHERE s.total_sales > 10000;

CTEs são especialmente úteis para queries recursivas (dados hierárquicos como organogramas) e quando é preciso referenciar a mesma subquery várias vezes.

42. O que são window functions e como diferem de funções de agregação?

Window functions realizam cálculos em um conjunto de linhas relacionadas à linha atual, sem colapsar o resultado em uma única linha como fazem as agregações. Elas usam a cláusula OVER() para definir a janela.

Principais window functions:

  • ROW_NUMBER() – atribui um número sequencial único a cada linha
  • RANK() – atribui ranking com lacunas em empates
  • DENSE_RANK() – atribui ranking sem lacunas em empates
  • LAG() / LEAD() – acessam dados da linha anterior/seguinte
  • SUM() OVER(), AVG() OVER() – cálculos corridos ou cumulativos

Exemplo: calcular total acumulado de vendas

SELECT 
  order_date,
  amount,
  SUM(amount) OVER (ORDER BY order_date) AS running_total
FROM orders;

43. Qual a diferença entre RANK(), DENSE_RANK() e ROW_NUMBER()?

Todas são funções de ranking, mas tratam empates de forma diferente:

  • ROW_NUMBER() – sempre atribui números únicos (1, 2, 3, 4...), mesmo em empates
  • RANK() – dá o mesmo ranking a empates e pula números (1, 2, 2, 4...)
  • DENSE_RANK() – dá o mesmo ranking a empates, sem pular (1, 2, 2, 3...)
SELECT 
  name, 
  score,
  ROW_NUMBER() OVER (ORDER BY score DESC) AS row_num,
  RANK() OVER (ORDER BY score DESC) AS rank,
  DENSE_RANK() OVER (ORDER BY score DESC) AS dense_rank
FROM students;

Use DENSE_RANK() para achar o "n-ésimo maior" valor quando empates devem compartilhar a mesma posição.

Nesta seção, vemos as perguntas intermediárias mais populares para você saber o que esperar.

44. O que é uma função em SQL?

Um objeto de banco que representa um conjunto de instruções SQL usadas com frequência para uma tarefa. Uma função recebe parâmetros de entrada, realiza cálculos ou manipulações e retorna um resultado. Funções melhoram a legibilidade e evitam repetição de código.

45. Quais tipos de funções SQL você conhece?

  • Funções de agregação – operam sobre múltiplos registros (geralmente agrupados) e retornam um único valor (geralmente por grupo).
  • Funções escalares – operam em cada valor individualmente e retornam um único valor.

Além disso, funções podem ser nativas (do sistema) ou definidas pelo usuário (criadas para necessidades específicas).

46. Quais funções de agregação você conhece?

  • AVG() – retorna a média

  • SUM() – retorna a soma

  • MIN() – retorna o mínimo

  • MAX() – retorna o máximo

  • COUNT() – retorna a contagem de linhas, incluindo as com valor nulo

47. Quais funções escalares você conhece?

  • LEN() (em outros dialetos – LENGTH()) – retorna o comprimento da string, incluindo espaços

  • UCASE() (em outros dialetos – UPPER()) – converte para maiúsculas

  • LCASE() (em outros dialetos – LOWER()) – converte para minúsculas

  • INITCAP() – converte para Title Case (cada palavra inicia em maiúscula)

  • MID() (em outros dialetos – SUBSTR()) – extrai uma substring

  • ROUND() – arredonda para o número de casas especificado

  • NOW() – retorna data e hora atuais

48. O que são funções de manipulação de caixa (case) em SQL?

São um subconjunto das funções de caracteres, usadas para alterar a capitalização do texto. Com elas, dá para converter para maiúsculas, minúsculas ou Title Case.

  • UCASE() (em outros dialetos – UPPER()) – converte para maiúsculas

  • LCASE() (em outros dialetos – LOWER()) – converte para minúsculas

  • INITCAP() – converte para Title Case

49. O que são funções de manipulação de caracteres em SQL?

São usadas para modificar dados textuais.

  • CONCAT() – junta duas ou mais strings, anexando a segunda ao final da primeira

  • SUBSTRING()/SUBSTR() – retorna parte da string conforme início e fim fornecidos

  • LENGTH() (em outros dialetos – LEN()) – retorna o comprimento da string

  • REPLACE() – substitui todas as ocorrências de uma substring por outra

  • INSTR() – retorna a posição numérica de uma substring dentro de uma string

  • LPAD() e RPAD() – fazem padding à esquerda/direita para alinhar valores

  • TRIM() – remove caracteres definidos e espaços em branco das extremidades

50. Qual a diferença entre variáveis locais e globais?

Variáveis locais só podem ser acessadas dentro da função onde foram declaradas. Variáveis globais, declaradas fora de qualquer função, são armazenadas em estruturas de memória fixas e podem ser usadas em todo o programa.

51. Qual a diferença entre SQL e PL/SQL?

SQL é a linguagem padrão para consultar e gerenciar bancos relacionais, usada principalmente para manipulação e recuperação de dados. PL/SQL (Procedural Language/SQL) é uma extensão do SQL usada em bancos Oracle que inclui construções procedurais como loops, condições e tratamento de exceções, permitindo implementar lógica de negócio complexa dentro do banco. Temos outro artigo com as Top 20 PL/SQL Interview Questions and Answers, um bom resumo caso você saiba que será perguntado sobre Oracle. 

52. Qual a diferença entre LEFT JOIN e LEFT OUTER JOIN?

Não há diferença entre LEFT JOIN e LEFT OUTER JOIN. São equivalentes. O SQL permite que a palavra OUTER seja opcional, então LEFT JOIN é apenas uma forma abreviada de LEFT OUTER JOIN. Ambos retornam todos os registros da tabela da esquerda e os correspondentes da direita.

53. O que é indexação em SQL e como melhora a performance?

Indexação cria uma estrutura de dados especial que acelera a recuperação, permitindo encontrar linhas com mais eficiência. Funciona como uma tabela de consulta otimizada, reduzindo a necessidade de varreduras completas. Porém, excesso de índices pode desacelerar inserções, atualizações e exclusões por conta da manutenção dos índices.

54. O que é uma stored procedure e como difere de uma função?

Uma stored procedure é um conjunto pré-compilado de instruções SQL executado como uma unidade para realizar uma tarefa. Procedures podem modificar dados ou objetos de schema, gerenciar transações e retornar zero ou mais conjuntos de resultados. Funções, por sua vez, são usadas em expressões SQL, devem retornar um valor (escalar ou tabela) e, em muitos bancos, têm restrições quanto a efeitos colaterais. O comportamento exato varia por SGBD (por exemplo, no T-SQL há funções escalares e com valor de tabela; no PostgreSQL há distinção entre funções e procedures).

55. Qual é a ordenação padrão com ORDER BY e como mudá-la?

Padrão é crescente (NULLS FIRST/LAST varia por banco). Use ASC/DESC por coluna, por exemplo:

SELECT * FROM table_name 
ORDER BY col_1 DESC;

56. Quais são os operadores de conjuntos em SQL?

  • UNION – retorna registros obtidos por pelo menos uma das duas queries (exclui duplicatas)

  • UNION ALL – retorna registros obtidos por pelo menos uma das duas queries (inclui duplicatas)

  • INTERSECT – retorna registros presentes em ambas as queries

  • EXCEPT (chamado MINUS no MySQL e Oracle) – retorna apenas os registros da primeira query que não estão na segunda

57. Qual operador é usado para correspondência de padrão?

O operador LIKE com os curingas % e _. % representa qualquer número de caracteres (inclusive zero) e _ representa exatamente um caractere.

58. Qual a diferença entre primary key e unique key em SQL?

Ambas garantem valores únicos em uma coluna, mas a primeira identifica unicamente cada registro da tabela, enquanto a segunda apenas impede duplicatas na coluna.

59. O que é uma chave primária composta?

Uma chave primária baseada em múltiplas colunas.

60. Qual a ordem típica das cláusulas em um SELECT?

SELECTFROMJOINONWHEREGROUP BYHAVINGORDER BYLIMIT

61. Em que ordem o interpretador executa as partes de um SELECT?

Aqui está a ordem de execução em SQL

FROMONJOINWHEREGROUP BYHAVINGSELECTORDER BYLIMIT/OFFSET (FETCH)

62. O que é uma view em SQL?

Uma tabela virtual contendo um subconjunto de dados recuperados de uma ou mais tabelas (ou outras views). Views padrão não armazenam dados; materialized views sim. Views simplificam queries, encapsulam lógica e, combinadas com privilégios, restringem colunas/linhas. Podem juntar/agregar dados de várias tabelas.

63. Podemos criar uma view baseada em outra view?

Sim. São as chamadas views aninhadas. Porém, evite aninhar muitas views, pois o código fica difícil de ler e de depurar.

64. Ainda podemos usar uma view se a tabela original for excluída?

Não. Qualquer view baseada nessa tabela ficará inválida após a exclusão. Tentar usá-la gerará erro.

65. Quais tipos de relacionamentos em SQL você conhece?

  • Um-para-um – cada registro de uma tabela corresponde a um da outra
  • Um-para-muitos – um registro de uma tabela corresponde a vários na outra
  • Muitos-para-muitos – registros em ambas as tabelas correspondem a vários na outra

66. Quais são os valores possíveis de um campo BOOLEAN?

Em alguns dialetos, como PostgreSQL, o tipo BOOLEAN existe explicitamente e assume TRUE, FALSE ou NULL. Em outros, como Microsoft SQL Server, usa-se o tipo BIT para armazenar booleanos como inteiros 1 (verdadeiro) e 0 (falso).

67. O que é normalização em SQL?

É o processo de modelagem que organiza e reestrutura dados para reduzir redundância, dependência, duplicação e inconsistência. Isso melhora a integridade, aumenta o número de tabelas, facilita o acesso e o controle de segurança e dá mais flexibilidade às queries.

68. O que é desnormalização em SQL?

Desnormalização é o processo oposto: introduz redundância e combina dados de múltiplas tabelas. Ela otimiza a performance quando leituras são mais importantes que escritas, evitando joins complexos e reduzindo o tempo de execução de consultas.

69. Qual a diferença entre renomear uma coluna e dar um alias?

Renomear é alterar permanentemente o nome da coluna na tabela original. Dar um alias é fornecer um nome temporário durante a execução da query, para melhorar a legibilidade e compacidade do código.

70. Qual a diferença entre subqueries aninhadas e correlacionadas?

Uma subquery correlacionada é uma query interna que referencia valores da query externa para sua execução; ela depende da query externa. Já uma subquery não correlacionada independe da query externa e pode ser executada isoladamente.

71. Qual a diferença entre índices clusterizados e não clusterizados?

Um índice clusterizado define a ordem física dos registros da tabela e busca dados pelos valores da chave; um índice não clusterizado mantém uma ordem lógica diferente da física em disco. Uma tabela pode ter um clusterizado e vários não clusterizados.

72. O que é a função CASE()?

É a forma de implementar lógica if-then-else em SQL. A função verifica condições em sequência nas cláusulas WHEN e retorna o valor correspondente em THEN da primeira condição satisfeita. Se nenhuma for satisfeita, retorna o valor do ELSE (se houver); caso contrário, retorna NULL. Sintaxe:

CASE
    WHEN condition_1 THEN value_1
    WHEN condition_2 THEN value_2
    WHEN condition_3 THEN value_3
    ...
    ELSE value
END;

73. Qual a diferença entre DELETE e TRUNCATE?

DELETE é um comando DML usado para remover uma ou mais linhas com base em uma condição na cláusula WHERE. É reversível apenas se estiver dentro de uma transação (com ROLLBACK).

TRUNCATE é um comando DDL que remove todas as linhas desalocando páginas. É mais rápido, geralmente irreversível e não pode ser usado em tabelas referenciadas por chave estrangeira.

74. Qual a diferença entre DROP e TRUNCATE?

DROP exclui completamente a tabela do banco, incluindo estrutura, constraints, relacionamentos e privilégios. TRUNCATE exclui todas as linhas sem afetar a estrutura e constraints.  Ambos são DDL. DROP remove a tabela e seus metadados; TRUNCATE apaga as linhas e mantém a definição. Performance e comportamento transacional dependem do SGBD.

75. Qual a diferença entre HAVING e WHERE?

HAVING atua sobre dados agregados após o agrupamento; WHERE verifica cada linha individualmente. Se ambas existirem na query, a ordem é:WHEREGROUP BYHAVING. O interpretador também executa nessa ordem.

76. Como adicionar um registro em uma tabela?

Usando INSERT INTO com VALUES. Sintaxe:

INSERT INTO table_name
VALUES (value_1, value_2, ...);

77. Como excluir um registro de uma tabela?

Usando DELETE. Sintaxe:

DELETE FROM table_name
WHERE condition;

Também é possível excluir múltiplos registros que atendam à condição.

78. Como adicionar uma coluna a uma tabela?

Usando ALTER TABLE com ADD. Sintaxe:

ALTER TABLE table_name
ADD column_name datatype;

79. Como renomear uma coluna?

Usando ALTER TABLE com RENAME COLUMN ... TO .... Sintaxe:

ALTER TABLE table_name
RENAME COLUMN old_column_name TO new_column_name;

80. Como excluir uma coluna?

Usando ALTER TABLE com DROP COLUMN. Sintaxe:

ALTER TABLE table_name
DROP COLUMN column_name;

81. Como selecionar apenas registros pares ou ímpares?

Verificando o resto da divisão por 2. Em alguns dialetos (PostgreSQL e MySQL), usa-se a função MOD; em outros (SQL Server e SQLite), o operador módulo (%). Para selecionar pares com MOD:

SELECT * FROM table_name
WHERE MOD(ID_column, 2) = 0;

Para selecionar pares com %:

SELECT * FROM table_name 
WHERE ID_column % 2 = 0;

Para selecionar ímpares, a sintaxe é idêntica, trocando = por <>.

82. Como evitar duplicatas em uma consulta?

Usando DISTINCT com SELECT ou criando uma unique key para a tabela.

83. Como inserir várias linhas em uma tabela?

Usando INSERT INTO com VALUES. Sintaxe:

INSERT INTO table_name
VALUES (value_1, value_2, ...),
      (value_3, value_4, ...),
      (value_5, value_6, ...),
      ...;

84. Como encontrar o n-ésimo maior valor em uma coluna?

Use window functions para tratar empates corretamente:

SELECT column_name
FROM (
  SELECT column_name, DENSE_RANK() OVER (ORDER BY column_name DESC) AS rnk
  FROM table_name
) t
WHERE rnk = :n;

Para a n-ésima linha pela ordem (ignorando empates): ORDER BY column_name DESC OFFSET n-1 ROWS FETCH NEXT 1 ROW ONLY.

85. Como encontrar valores em uma coluna de texto que começam com certa letra?

Use LIKE com % e _. Ex.: para achar sobrenomes que começam com "A":

SELECT * FROM table_name
WHERE surname LIKE 'A_';

Aqui assumimos que o sobrenome tem ao menos duas letras. Sem essa suposição (podendo ser só "A"), a query é:

SELECT * FROM table_name
WHERE surname LIKE 'A%';

86. Como encontrar o último id de uma tabela?

O método mais simples é usar a função de agregação MAX().

SELECT MAX(id) AS highest_id
FROM table_name;

Usando ORDER BY com LIMIT ou TOP

SELECT id
FROM table_name
ORDER BY id DESC
LIMIT 1;

87. Como selecionar linhas aleatórias de uma tabela?

Usando RAND() com ORDER BY e LIMIT. Em alguns dialetos, como PostgreSQL, chama-se RANDOM(). Ex.: retornar cinco linhas aleatórias no MySQL:

SELECT * FROM table_name
ORDER BY RAND()
LIMIT 5;

Perguntas de entrevista em SQL baseadas em cenários

Questões por cenários testam sua capacidade de resolver problemas reais de negócio com SQL. Os entrevistadores avaliam não só sua sintaxe, mas também sua abordagem de resolução e como você lida com casos extremos como duplicatas, valores NULL e empates.

88. Como encontrar e remover registros duplicados de uma tabela?

Encontrando duplicatas:

SELECT email, COUNT(*) AS duplicate_count
FROM users
GROUP BY email
HAVING COUNT(*) > 1;

Removendo duplicatas (mantendo um registro):

WITH duplicates AS (
  SELECT id, 
         ROW_NUMBER() OVER (PARTITION BY email ORDER BY id) AS rn
  FROM users
)
DELETE FROM users 
WHERE id IN (SELECT id FROM duplicates WHERE rn > 1);

Essa abordagem usa uma CTE com ROW_NUMBER() para identificar duplicatas, mantendo o registro de menor ID.

89. Como calcular um total acumulado (running total)?

Use SUM() como window function com ORDER BY:

SELECT 
  transaction_date,
  amount,
  SUM(amount) OVER (ORDER BY transaction_date) AS running_total
FROM transactions;

Para acumulado por categoria (ex.: por cliente):

SELECT 
  customer_id,
  transaction_date,
  amount,
  SUM(amount) OVER (
    PARTITION BY customer_id 
    ORDER BY transaction_date
  ) AS customer_running_total
FROM transactions;

90. Como encontrar funcionários que ganham acima da média do departamento?

Clássico caso de subquery correlacionada:

SELECT e.name, e.department, e.salary
FROM employees e
WHERE e.salary > (
  SELECT AVG(salary) 
  FROM employees 
  WHERE department = e.department
);

Alternativamente, usando window function:

SELECT name, department, salary
FROM (
  SELECT 
    name, 
    department, 
    salary,
    AVG(salary) OVER (PARTITION BY department) AS dept_avg
  FROM employees
) t
WHERE salary > dept_avg;

91. Como encontrar lacunas em uma sequência numérica (ex.: notas fiscais faltantes)?

Use LEAD() para comparar cada valor com o próximo:

SELECT 
  invoice_number,
  LEAD(invoice_number) OVER (ORDER BY invoice_number) AS next_invoice,
  LEAD(invoice_number) OVER (ORDER BY invoice_number) - invoice_number - 1 AS gap_size
FROM invoices
WHERE LEAD(invoice_number) OVER (ORDER BY invoice_number) - invoice_number > 1;

Isso identifica onde o intervalo entre notas consecutivas é maior que 1.

92. Como encontrar clientes que compraram em meses consecutivos?

Use LAG() para comparar com a linha anterior:

WITH monthly_purchases AS (
  SELECT 
    customer_id,
    DATE_TRUNC('month', purchase_date) AS purchase_month,
    LAG(DATE_TRUNC('month', purchase_date)) OVER (
      PARTITION BY customer_id 
      ORDER BY DATE_TRUNC('month', purchase_date)
    ) AS prev_month
  FROM purchases
  GROUP BY customer_id, DATE_TRUNC('month', purchase_date)
)
SELECT DISTINCT customer_id
FROM monthly_purchases
WHERE purchase_month = prev_month + INTERVAL '1 month';

93. Como pivotar dados de linhas para colunas?

Use agregação condicional com CASE:

SELECT 
  product_name,
  SUM(CASE WHEN EXTRACT(MONTH FROM sale_date) = 1 THEN amount ELSE 0 END) AS jan_sales,
  SUM(CASE WHEN EXTRACT(MONTH FROM sale_date) = 2 THEN amount ELSE 0 END) AS feb_sales,
  SUM(CASE WHEN EXTRACT(MONTH FROM sale_date) = 3 THEN amount ELSE 0 END) AS mar_sales
FROM sales
GROUP BY product_name;

Alguns bancos (SQL Server, Oracle) têm sintaxe nativa PIVOT para essa operação.

94. Como encontrar os 3 produtos com mais vendas em cada categoria?

Use DENSE_RANK() com PARTITION BY:

WITH ranked_products AS (
  SELECT 
    category,
    product_name,
    SUM(sales_amount) AS total_sales,
    DENSE_RANK() OVER (
      PARTITION BY category 
      ORDER BY SUM(sales_amount) DESC
    ) AS sales_rank
  FROM sales
  GROUP BY category, product_name
)
SELECT category, product_name, total_sales
FROM ranked_products
WHERE sales_rank <= 3
ORDER BY category, sales_rank;

95. O que são as propriedades ACID em transações?

ACID é o acrônimo para quatro propriedades que garantem transações confiáveis de banco de dados:

  • Atomicidade: a transação é “tudo ou nada” – ou todas as operações concluem com sucesso ou nenhuma
  • Consistência: a transação leva o banco de um estado válido a outro, mantendo regras e constraints
  • Isolamento: transações concorrentes não interferem; cada uma enxerga um snapshot consistente
  • Durabilidade: após o commit, as mudanças persistem mesmo em caso de falha

Exemplo de transação:

BEGIN TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;

COMMIT;

96. O que é deadlock e como preveni-lo?

Deadlock ocorre quando duas ou mais transações aguardam entre si a liberação de locks, criando dependência circular em que nenhuma avança.

Cenário exemplo: a transação A bloqueia a Tabela X e espera a Y; a transação B bloqueia a Y e espera a X.

Estratégias de prevenção:

  • Ordem consistente de locks: sempre adquirir locks na mesma ordem
  • Transações curtas: dar commit ou rollback o quanto antes
  • Nível de isolamento adequado: níveis mais baixos reduzem contenção de locks
  • Acessar só o necessário: evitar bloquear linhas desnecessárias
  • Tratar retentativas: a maioria dos bancos detecta e resolve deadlocks revertendo uma transação

97. Como otimizar uma query lenta?

Estratégias-chave:

  • Adicionar índices apropriados: crie índices em colunas usadas em WHERE, JOIN e ORDER BY

  • Analisar o plano de execução: use EXPLAIN (PostgreSQL/MySQL) ou EXPLAIN PLAN (Oracle)

  • Evitar SELECT *: traga apenas as colunas necessárias

  • Preferir JOINs a subqueries correlacionadas: muitas vezes são mais eficientes

  • Limitar resultados: use LIMIT/TOP quando não precisar de todas as linhas

  • Evitar funções em colunas indexadas: WHERE YEAR(date_col) = 2026 não usa índice; prefira WHERE date_col >= '2026-01-01'

  • Considerar particionamento: para tabelas muito grandes, particione por data ou categoria

98. Como lidar com valores NULL em cálculos e comparações?

NULL representa dado ausente ou desconhecido e exige cuidado:

  • Comparações: use IS NULL ou IS NOT NULL em vez de = NULL

  • COALESCE(): retorna o primeiro valor não NULL: COALESCE(column, 'default')

  • NULLIF(): retorna NULL se dois valores forem iguais: NULLIF(a, b)

  • ISNULL() / NVL(): funções específicas de alguns bancos para substituir NULL

SELECT 
  name,
  COALESCE(phone, email, 'No contact') AS contact_info,
  CASE WHEN status IS NULL THEN 'Unknown' ELSE status END AS status
FROM customers;

99. Como encontrar a sequência mais longa de dias consecutivos de login de um usuário?

Este é um problema avançado de “ilhas e lacunas”:

WITH login_groups AS (
  SELECT 
    user_id,
    login_date,
    login_date - ROW_NUMBER() OVER (
      PARTITION BY user_id 
      ORDER BY login_date
    ) * INTERVAL '1 day' AS group_id
  FROM user_logins
)
SELECT 
  user_id,
  MIN(login_date) AS streak_start,
  MAX(login_date) AS streak_end,
  COUNT(*) AS streak_length
FROM login_groups
GROUP BY user_id, group_id
ORDER BY streak_length DESC
LIMIT 1;

O truque é subtrair um número de linha de cada data – datas consecutivas produzem o mesmo "group_id".

Capacitando seu time com SQL

Embora se preparar para entrevistas de SQL seja essencial para candidatos e gestores, é igualmente importante que as empresas invistam em treinamento contínuo em SQL para seus times. Trabalhar com dados é mais importante do que nunca, e garantir que seus colaboradores dominem SQL pode fazer a diferença no sucesso da sua companhia.

Se você lidera um time ou é dono de negócio e quer garantir que todos dominem SQL, o DataCamp for Business oferece programas personalizados que ajudam sua equipe a dominar SQL, do básico ao avançado. Podemos oferecer:

  • Trilhas de aprendizado direcionadas: personalizadas ao nível atual e às necessidades do seu negócio.
  • Prática mão na massa: cenários e exercícios reais que reforçam o aprendizado e melhoram a retenção.
  • Acompanhamento de progresso: ferramentas para monitorar e avaliar o avanço do time, garantindo que cumpram as metas.

Investir em capacitação em SQL com plataformas como o DataCamp não só aprimora as competências do seu time como também dá vantagem estratégica ao negócio, ajudando você a se manter competitivo e a entregar resultados. Fale com nosso time e solicite uma demonstração hoje

Conclusão

Resumindo, abordamos 99 perguntas essenciais de SQL para iniciantes, nível intermediário e baseadas em cenários, com as respostas certas. Esperamos que isso ajude você a se preparar e se sentir mais confiante — seja para buscar uma vaga com SQL ou para contratar candidatos para uma posição intermediária.

Se você acha que precisa de mais treino para a entrevista, confira nossa lista completa de cursos de SQL:

Aumente a proficiência em SQL da sua equipe

Treine sua equipe em SQL com o DataCamp for Business. Treinamento abrangente, projetos práticos e métricas de desempenho detalhadas para sua organização.

Solicite uma demonstração hoje mesmo!
business-homepage-hero.png

FAQs

Como posso começar a aprender SQL?

Para começar em SQL, comece pelo básico de conceitos de banco de dados e sistemas relacionais. A DataCamp tem muitos recursos, como o curso Introduction to SQL, a trilha de carreira Data Analyst in SQL e o cheat sheet de SQL. Você também pode visitar a página de cursos de SQL para ver todos os recursos.

Onde posso encontrar problemas reais de SQL para praticar?

Na plataforma DataCamp há diversos projetos de SQL para praticar, adequados para todos os níveis.

Quais são perguntas comuns de SQL para iniciantes?

Iniciantes costumam ser questionados sobre conceitos básicos de SQL, como a diferença entre SELECT e INSERT, a finalidade das chaves em um banco (primary keys e foreign keys) e queries simples para buscar dados de uma única tabela usando condições (WHERE).

Quais são perguntas comuns de SQL para quem está no nível intermediário?

Profissionais intermediários podem enfrentar questões sobre conceitos mais complexos, como joins (INNER, LEFT, RIGHT, FULL), subqueries, agregações e agrupamento (GROUP BY), e o uso de operações de conjunto como UNION, INTERSECT e EXCEPT. Também podem ser solicitadas soluções de otimização de queries.

Como devo me preparar para uma entrevista de SQL?

A preparação deve incluir:

  • Revisar conceitos básicos e avançados de SQL.
  • Praticar escrita de queries para problemas comuns.
  • Entender modelagem e normalização de bancos.
  • Familiarizar-se com o dialeto específico usado pelo empregador (ex.: PostgreSQL, MySQL, SQL Server).
  • Resolver questões e problemas de entrevista disponíveis online.

O que esperar de uma entrevista técnica de SQL e como demonstrar melhor minhas habilidades?

Em uma entrevista técnica de SQL, espere perguntas que testem seu conhecimento de sintaxe, modelagem, otimização de queries e capacidade de resolver problemas com SQL. Para demonstrar suas habilidades:

  • Explique seu raciocínio ao resolver problemas.
  • Esteja pronto para escrever queries sem erros em quadro ou ambiente online.
  • Mostre entendimento de conceitos como joins, subqueries e transações com exemplos.
  • Fale sobre experiências reais com bancos, destacando desafios superados ou otimizações que implementou.

Quão importante é aprender dialetos específicos de SQL e em quais devo focar?

O núcleo da sintaxe é consistente entre RDBMS, mas cada sistema (MySQL, PostgreSQL, SQL Server, Oracle) tem seu dialeto com recursos e funções próprios. Aprender um dialeto específico é importante se você mira vagas que usam um SGBD em particular. Foque no dialeto mais relevante para seus objetivos ou o mais comum no seu setor. Uma base sólida em SQL padrão facilita a adaptação a outros dialetos conforme necessário.

A DataCamp tem recursos GRATUITOS extras para se preparar para entrevistas de SQL?

Sim! Se você é professor universitário ou aluno, pode usar o DataCamp Classrooms para ter acesso a todo nosso catálogo premium GRATUITAMENTE. Isso inclui nossas trilhas e certificações de SQL.

Você também pode conferir nosso SQL Basics cheat sheet gratuito.

Quais são os tópicos mais importantes de SQL para estudar para entrevistas em 2026?

Foque nestes pontos: (1) Joins e subqueries – entenda INNER, LEFT, RIGHT e FULL, além de subqueries correlacionadas vs. não correlacionadas; (2) Window functions – ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD e totais acumulados; (3) CTEs (Common Table Expressions) – para queries legíveis e fáceis de manter; (4) Agregações e GROUP BY – incluindo o uso do HAVING; (5) Otimização de queries – estratégias de indexação e planos de execução.

Qual a diferença entre ROW_NUMBER, RANK e DENSE_RANK?

Todas são funções de ranking, mas tratam empates de formas diferentes: ROW_NUMBER() atribui números sequenciais únicos mesmo em empates (1, 2, 3, 4); RANK() dá o mesmo ranking aos empates, pulando números seguintes (1, 2, 2, 4); DENSE_RANK() dá o mesmo ranking sem pular (1, 2, 2, 3). Use DENSE_RANK ao buscar o "n-ésimo maior" valor quando empates compartilham a mesma posição.


Elena Kosourova's photo
Author
Elena Kosourova
LinkedIn

Cientista de Dados Certificado pela IBM (2020), anteriormente Geólogo de Petróleo/Geomodelador de campos de petróleo e gás em todo o mundo com mais de 12 anos de experiência de trabalho internacional. Você é proficiente em Python, R e SQL. Áreas de especialização: limpeza de dados, manipulação de dados, visualização de dados, análise de dados, modelagem de dados, estatística, storytelling, machine learning. Ampla experiência no gerenciamento de comunidades de ciência de dados e na redação/revisão de artigos e tutoriais sobre ciência de dados e tópicos de carreira.

Tópicos

Aprenda mais sobre SQL com estes cursos!

Curso

Manipulação de dados em SQL

4 h
318.1K
Domine consultas SQL complexas no PostgreSQL para responder várias perguntas de ciência de dados e preparar conjuntos de dados robustos.
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

20 principais perguntas da entrevista sobre junções de SQL

Prepare-se para sua entrevista sobre SQL com esta lista das perguntas mais comuns sobre SQL Joins
Javier Canales Luna's photo

Javier Canales Luna

15 min

blog

As 45 principais perguntas da entrevista sobre PostgreSQL para todos os níveis

Está se candidatando a um emprego que exige fluência em PostgreSQL? Prepare-se para o processo de entrevista com esta lista abrangente de perguntas sobre o PostgreSQL
Javier Canales Luna's photo

Javier Canales Luna

15 min

blog

As 25 perguntas mais frequentes em entrevistas sobre o Tableau para 2026 (iniciante a avançado)

Tenha sucesso nas suas entrevistas sobre o Tableau com o nosso guia completo, que cobre perguntas comuns para usuários iniciantes, intermediários e avançados.
Chloe Lubin's photo

Chloe Lubin

15 min

a great interview

blog

45 perguntas essenciais sobre o Power BI para entrevistas em todos os níveis

Dá uma olhada nas perguntas que você pode esperar numa entrevista de emprego sobre Power BI, seja você um profissional iniciante, intermediário ou avançado em Power BI.
Joleen Bothma's photo

Joleen Bothma

15 min

blog

As 31 principais perguntas e respostas de entrevistas com analistas de negócios para todos os níveis

Explore perguntas comuns de entrevistas com analistas de negócios e suas respostas para todos os níveis de experiência.
Austin Chia's photo

Austin Chia

15 min

blog

As 30 principais perguntas da entrevista sobre o Excel para todos os níveis

Um guia para as perguntas mais comuns em entrevistas sobre o Excel para usuários iniciantes, intermediários e avançados, para que você seja aprovado na entrevista técnica.
Chloe Lubin's photo

Chloe Lubin

15 min

Ver maisVer mais