Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — CESPE / CEBRASPE 2023

Banco de DadosConsultas e Comandos em SQL
Código
ce397755
Banca
CESPE / CEBRASPE
Órgão
DATAPREV
Ano
2023
Cargo
Ana TI ( )
Com relação a SQL, julgue o item a seguir.   Ao executar um comando de SELECT em mais de uma tabela sem a cláusula WHERE, o resultado será o produto cartesiano das tabelas acessadas.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

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

SQL: Produto Cartesiano em SELECT com múltiplas tabelas

Gabarito: Certo. A afirmação está correta porque, ao executar um comando SELECT em mais de uma tabela sem a cláusula WHERE (ou sem critérios de junção como JOIN), o banco de dados realiza um produto cartesiano entre as tabelas, combinando cada linha de uma tabela com todas as linhas da outra. Esse comportamento é inerente à álgebra relacional e à linguagem SQL, e é exatamente o que ocorre quando se lista mais de uma tabela na cláusula FROM.

O produto cartesiano é uma operação binária da álgebra relacional que combina cada tupla (linha) de uma relação com todas as tuplas da outra relação. Em SQL, isso acontece implicitamente quando a cláusula FROM contém duas ou mais tabelas separadas por vírgula, sem qualquer condição de junção. Por exemplo, SELECT * FROM A, B retorna todas as combinações possíveis de linhas entre A e B. Se a tabela A tem 3 linhas e a tabela B tem 4 linhas, o resultado terá 3 × 4 = 12 linhas. Esse é o mesmo efeito de um CROSS JOIN explícito, que é justamente o produto cartesiano.

A cláusula WHERE tem a função de filtrar as linhas do resultado, aplicando condições de seleção. Quando ela está presente, o produto cartesiano é reduzido às combinações que satisfazem a condição — o que, na prática, equivale a uma junção interna (INNER JOIN) se a condição envolver colunas das duas tabelas. Sem WHERE, nenhum filtro é aplicado, e o resultado é o produto cartesiano completo. É importante não confundir: a cláusula WHERE não é a responsável por gerar o produto cartesiano; ela apenas o restringe. O produto cartesiano é gerado pela própria combinação de tabelas na cláusula FROM.

A banca explora aqui um conceito fundamental de SQL e álgebra relacional. O candidato pode confundir o papel da cláusula WHERE, achando que sem ela o comando não retornaria nada ou que a junção seria automática. Na verdade, sem WHERE ou JOIN, o banco devolve todas as combinações possíveis, o que pode gerar um volume enorme de dados — um clássico erro de desempenho em consultas mal formuladas.

Guarde a distinção: FROM com múltiplas tabelas = produto cartesiano; WHERE = filtro (seleção); JOIN = junção com critério. É exatamente essa fronteira que a questão testa.

  1. 1FROM com várias tabelas
  2. 2Sem WHERE/JOIN
  3. 3Produto cartesiano (CROSS JOIN)
LEVEL · soulevel.com.br

Item — ✅ CERTO

A afirmação está correta. Ao executar um SELECT em mais de uma tabela sem a cláusula WHERE, o resultado é o produto cartesiano das tabelas acessadas. Isso ocorre porque a cláusula FROM com múltiplas tabelas (separadas por vírgula) gera um CROSS JOIN implícito, combinando cada linha de uma tabela com todas as linhas da outra. A cláusula WHERE é que filtraria essas combinações, mas, na sua ausência, todas as combinações são retornadas. Esse é o comportamento padrão da linguagem SQL e da álgebra relacional.

SE LIGUE NESSA!

O produto cartesiano também pode ser escrito explicitamente com CROSS JOIN, que tem exatamente o mesmo efeito de listar as tabelas separadas por vírgula na cláusula FROM.

Gabarito: Certo

Link permanente: /questoes/ce397755