Pular para o conteúdo principal

Questão de Banco de Dados — SQL — CESPE / CEBRASPE 2022

Banco de DadosSQL
Código
ce147341
Banca
CESPE / CEBRASPE
Órgão
TCE-RJ
Ano
2022
Nível
Superior
Cargo
Analista de Controle Externo
Tendo como referência as informações precedentes, julgue o item subsecutivo.O comando SQL a seguir cria uma visão com todos os dados dos professores e dos respectivos cursos que eles coordenam, não incluindo os cursos sem um professor com a função de coordenador.create view coordenador_curso asselect * from professor p left outer join curso s on truewhere p.cpf_professor = s.cpf_professor_coord;
  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 – Criação de visão (VIEW)

SE LIGUE NESSA!

Esta questão depende de um texto-base não disponível, mas a análise do comando SQL pode ser feita com base na lógica geral. O gabarito oficial é Certo.

Gabarito: ✅ CERTO. O comando CREATE VIEW coordenador_curso AS SELECT * FROM professor p LEFT OUTER JOIN curso s ON true WHERE p.cpf_professor = s.cpf_professor_coord cria uma visão que contém os dados dos professores que são coordenadores de pelo menos um curso, juntamente com os dados dos respectivos cursos. Embora pareça um LEFT JOIN, a cláusula ON true seguida do WHERE transforma a operação em um INNER JOIN – ou seja, apenas as combinações que satisfazem a condição de igualdade são retornadas, excluindo cursos sem coordenador (pois não haveria correspondência) e também excluindo professores que não coordenam nenhum curso. O enunciado afirma que a visão deve conter “todos os dados dos professores e dos respectivos cursos que eles coordenam, não incluindo os cursos sem um professor com a função de coordenador”. A interpretação adotada pela banca é que apenas professores que efetivamente coordenam cursos devem aparecer, e o comando atende exatamente a isso. Portanto, a afirmação está Certa.

ERRADO – Se o comando fosse interpretado literalmente como LEFT JOIN, esperaríamos que todos os professores fossem preservados (inclusive os sem coordenação), com valores NULL para as colunas de curso. No entanto, a presença do WHERE anula esse efeito, transformando a junção em interna. A sintaxe é incomum, mas funcional: LEFT OUTER JOIN ... ON true gera o produto cartesiano entre as tabelas, e o WHERE filtra as linhas onde há correspondência. Dessa forma, o resultado é idêntico a um INNER JOIN com a condição ON p.cpf_professor = s.cpf_professor_coord. Assim, professores sem coordenação são excluídos, o que está alinhado com a redação do enunciado.

  1. 1LEFT JOIN ON true
  2. 2Produto cartesiano
  3. 3WHERE filtra correspondências
  4. 4Resultado = INNER JOIN
LEVEL · soulevel.com.br
PEGA ESSA DICA!

Em SQL, o LEFT JOIN com ON true seguido de WHERE condição equivale a um INNER JOIN. Na hora da prova, desconfie de junções que parecem externas mas contêm filtros no WHERE – eles podem converter o resultado em interno. O comando correto para incluir todos os professores (mesmo sem coordenação) seria LEFT JOIN curso s ON p.cpf_professor = s.cpf_professor_coord, sem o WHERE adicional.

CERTO

Link permanente: /questoes/ce147341