Questão de Banco de Dados — Consultas e Comandos em SQL — Quadrix 2024
- Código
- qa630724
- Banca
- Quadrix
- Órgão
- IBICT
- Ano
- 2024
- Cargo
- Tecno ( )
- CCerto
- EErrado
GabaritoC — Certo
Gabarito: CERTO (letra C). O comando SELECT apresentado está sintaticamente correto e semanticamente adequado para listar todos os autores e suas respectivas instituições afiliadas, pois utiliza um INNER JOIN entre as tabelas Autores e Instituicoes, relacionando-as pela chave estrangeira InstituicaoID. A consulta retorna apenas os autores que possuem uma instituição correspondente, o que atende ao objetivo de "mostrar todos os autores e suas instituições afiliadas".
O INNER JOIN é um dos tipos de junção mais utilizados em SQL. Ele combina registros de duas tabelas com base em uma condição de igualdade entre colunas, retornando apenas as linhas que possuem correspondência em ambas as tabelas. No caso, a condição Autores.InstituicaoID = Instituicoes.InstituicaoID garante que somente os autores que têm uma instituição cadastrada (ou seja, com InstituicaoID não nulo e existente na tabela Instituicoes) apareçam no resultado. Se um autor tiver InstituicaoID nulo ou apontando para uma instituição inexistente, ele será excluído do resultado — comportamento esperado para uma junção interna.
A sintaxe do comando também está correta. A cláusula SELECT especifica as colunas desejadas com aliases (AS NomeAutor e AS Nomelnstituicao), a cláusula FROM indica a tabela à esquerda (Autores), e a cláusula INNER JOIN indica a tabela à direita (Instituicoes) seguida da condição de junção (ON). Essa é a forma padrão de escrever uma junção interna em SQL, compatível com o MySQL e a maioria dos SGBDs relacionais.
É importante distinguir o INNER JOIN de outros tipos de junção, como LEFT JOIN, RIGHT JOIN e FULL OUTER JOIN. Enquanto o INNER JOIN retorna apenas as linhas com correspondência em ambas as tabelas, o LEFT JOIN retorna todas as linhas da tabela à esquerda, mesmo aquelas sem correspondência na direita (preenchendo com NULL). O RIGHT JOIN faz o oposto, e o FULL OUTER JOIN retorna todas as linhas de ambas as tabelas. No contexto da questão, se o objetivo fosse listar todos os autores, inclusive aqueles sem instituição afiliada, o LEFT JOIN seria mais adequado. No entanto, o enunciado pede "todos os autores e suas instituições afiliadas", o que implica que apenas autores com instituição devem ser exibidos — exatamente o que o INNER JOIN faz.
A pegadinha que a banca poderia explorar aqui é a confusão entre INNER JOIN e LEFT JOIN. O candidato desatento pode achar que o INNER JOIN excluiria autores sem instituição, o que é verdade, mas o enunciado não pede para incluir autores sem afiliação. A expressão "autores e suas instituições afiliadas" pressupõe que a afiliação existe. Portanto, o INNER JOIN é a escolha correta.
Guarde a distinção entre os tipos de junção: é exatamente nela que as questões de SQL costumam se dividir. O INNER JOIN é o padrão para relacionar tabelas quando se quer apenas os registros que possuem par correspondente.
O comando está correto. Ele seleciona as colunas Autores.Nome e Instituicoes.Nome, renomeando-as com aliases, e realiza um INNER JOIN entre as tabelas Autores e Instituicoes na condição Autores.InstituicaoID = Instituicoes.InstituicaoID. Essa junção retorna apenas os autores que possuem uma instituição correspondente, exibindo o nome do autor e o nome da instituição. A sintaxe é válida no MySQL e atende ao objetivo de mostrar os autores e suas instituições afiliadas.
Gabarito: letra C
Link permanente: /questoes/qa630724