Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — VUNESP 2023

Banco de DadosConsultas e Comandos em SQL
Código
vu195354
Banca
VUNESP
Órgão
Pref Marília
Ano
2023
Cargo
Ana ( )

Considere a tabela de um banco de dados relacional

 

TX (A, B, C, D)

 

e a seguinte consulta sobre essa tabela

 

SELECT C, D

FROM TX

WHERE B> 30 AND C < 50

 

Como resultado da execução dessa consulta, serão exibidos apenas os valores dos atributos

  1. AC e D.
  2. BB e C.
  3. CA e C.
  4. DB, C e D.
  5. EA, C e D.
Revelar gabarito e comentário

GabaritoA — C e D.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Consulta SQL: cláusula SELECT e projeção de colunas

Gabarito: letra A. A consulta SELECT C, D FROM TX WHERE B > 30 AND C < 50 exibirá apenas os valores dos atributos C e D, pois a cláusula SELECT define quais colunas serão projetadas no resultado, enquanto a cláusula WHERE apenas filtra as linhas que atendem às condições. As colunas A e B, embora usadas na condição de filtro (B), não aparecem na lista de projeção.

A linguagem SQL (Structured Query Language) é a linguagem padrão para acesso e manipulação de bancos de dados relacionais. Ela é declarativa: o usuário especifica o que deseja obter, sem precisar dizer como o banco deve executar a busca. A estrutura básica de uma consulta é composta por cláusulas que têm funções bem definidas e uma ordem lógica de execução. A cláusula SELECT é responsável pela projeção, ou seja, pela escolha das colunas que farão parte do resultado. A cláusula FROM indica a tabela (ou tabelas) de onde os dados serão lidos. A cláusula WHERE realiza a seleção, filtrando apenas as linhas (tuplas) que satisfazem as condições especificadas.

No comando apresentado, SELECT C, D projeta exatamente as colunas C e D. A condição WHERE B > 30 AND C < 50 é um filtro aplicado antes da projeção: o banco primeiro identifica quais linhas da tabela TX atendem simultaneamente às duas condições (B maior que 30 e C menor que 50) e, dessas linhas, extrai apenas os valores das colunas C e D. É importante notar que a coluna B, embora participe do filtro, não é exibida no resultado, pois não consta na lista do SELECT. Da mesma forma, a coluna A não é projetada nem usada no filtro, portanto não aparece.

Para fixar o conceito, pense em uma tabela de produtos com colunas (ID, Nome, Preço, Estoque). A consulta SELECT Nome, Preco FROM Produtos WHERE Estoque > 0 retornaria apenas os nomes e preços dos produtos com estoque positivo — o ID e o Estoque não apareceriam no resultado, mesmo que o Estoque tenha sido usado para filtrar. A pegadinha desta questão está exatamente aí: o candidato pode confundir as colunas usadas na condição WHERE com as colunas que serão exibidas, mas a regra é clara: o SELECT manda no que aparece.

Guarde o critério decisivo: a lista de colunas após o SELECT é a única que define o conjunto de atributos do resultado. As condições do WHERE apenas restringem quais linhas serão consideradas. É nessa distinção que as alternativas se dividem.

  1. 1FROM (tabela)
  2. 2WHERE (filtra linhas)
  3. 3SELECT (projeta colunas)
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

A consulta SELECT C, D FROM TX WHERE B > 30 AND C < 50 projeta exatamente as colunas C e D. A cláusula SELECT define a projeção (colunas do resultado), e a cláusula WHERE define a seleção (linhas filtradas). Como a lista de projeção contém apenas C e D, somente esses valores serão exibidos.

Alternativa B — ❌ Incorreta

Afirma que serão exibidos B e C. O erro está em incluir a coluna B no resultado. A coluna B é usada apenas na condição do WHERE (B > 30), mas não aparece na lista do SELECT. A projeção é definida exclusivamente pela lista após o SELECT, que contém apenas C e D.

Alternativa C — ❌ Incorreta

Afirma que serão exibidos A e C. A coluna A não é mencionada em nenhuma parte da consulta — nem na projeção (SELECT C, D) nem na condição (WHERE B > 30 AND C < 50). Portanto, ela não pode fazer parte do resultado. Apenas C e D são projetados.

Alternativa D — ❌ Incorreta

Afirma que serão exibidos B, C e D. O erro é o mesmo da alternativa B: incluir a coluna B no resultado. A coluna B participa apenas do filtro (WHERE B > 30), não da projeção. O resultado contém somente as colunas listadas no SELECT: C e D.

Alternativa E — ❌ Incorreta

Afirma que serão exibidos A, C e D. A coluna A não aparece na consulta, nem na projeção nem no filtro. A coluna B, que é usada no WHERE, também não é projetada. O resultado é composto apenas pelas colunas C e D, conforme a lista do SELECT.

PEGA ESSA DICA!

Para resolver questões de SQL que perguntam "quais colunas serão exibidas", ignore completamente a cláusula WHERE e olhe apenas para a lista após o SELECT. O WHERE só filtra linhas; quem define as colunas do resultado é o SELECT. Essa é a técnica mais rápida e evita a confusão clássica entre projeção e seleção.

Gabarito: letra A

Link permanente: /questoes/vu195354