Questão de Banco de Dados — MySQL — Quadrix 2024
- Código
- qg354216
- Banca
- Quadrix
- Órgão
- IBICT
- Ano
- 2024
- Nível
- Superior
- Cargo
- Tecnologista - Tecnologia da Informação

- CCerto
- EErrado

GabaritoC — Certo
Gabarito: CERTO (letra C). O comando SELECT Autores.Nome AS NomeAutor, Instituicoes.Nome AS Nomelnstituicao FROM Autores INNER JOIN Instituicoes ON Autores.InstituicaoID = Instituicoes.InstituicaoID; está sintaticamente correto e produz exatamente o que o enunciado pede: a lista de todos os autores com o nome de suas instituições afiliadas, combinando as linhas das duas tabelas sempre que houver correspondência na chave estrangeira InstituicaoID. A sintaxe do INNER JOIN no MySQL é exatamente essa: SELECT ... FROM tabela1 INNER JOIN tabela2 ON condição_de_junção.
O INNER JOIN é o tipo de junção mais comum em SQL. Ele combina linhas de duas tabelas com base em uma condição de igualdade (ou outra condição) especificada na cláusula ON. O resultado contém apenas as linhas que possuem correspondência em ambas as tabelas. No contexto do banco de dados do enunciado, a tabela Autores possui a coluna InstituicaoID, que é uma chave estrangeira referenciando a tabela Instituicoes. A consulta junta as duas tabelas por essa coluna, retornando, para cada autor, o nome da instituição à qual ele está vinculado.
Vamos decompor o comando para entender cada parte:
SELECT Autores.Nome AS NomeAutor, Instituicoes.Nome AS Nomelnstituicao: seleciona as colunas Nome da tabela Autores e Nome da tabela Instituicoes, renomeando-as (com AS) para NomeAutor e Nomelnstituicao, respectivamente. O uso do prefixo Autores. e Instituicoes. é necessário para desambiguar as colunas, pois ambas as tabelas têm uma coluna chamada Nome.
FROM Autores: define a primeira tabela da junção.
INNER JOIN Instituicoes: define a segunda tabela e o tipo de junção.
ON Autores.InstituicaoID = Instituicoes.InstituicaoID: define a condição de junção, que é a igualdade entre a chave estrangeira na tabela Autores e a chave primária na tabela Instituicoes.
Um ponto importante é que o INNER JOIN não retorna autores que não possuem uma instituição associada (ou seja, autores com InstituicaoID nulo ou com um valor que não existe na tabela Instituicoes). Se o objetivo fosse listar todos os autores, mesmo aqueles sem instituição, seria necessário usar um LEFT JOIN. No entanto, o enunciado pede "todos os autores e suas instituições afiliadas", o que implica que apenas autores com instituição afiliada devem ser mostrados — exatamente o que o INNER JOIN faz.
A pegadinha desta questão, comum em provas, é confundir o INNER JOIN com o LEFT JOIN ou RIGHT JOIN. O INNER JOIN descarta linhas sem correspondência, enquanto os OUTER JOINs (LEFT, RIGHT, FULL) as preservam, preenchendo com NULL os campos da tabela sem correspondência. Como o enunciado fala em "instituições afiliadas", a interpretação correta é que apenas autores com afiliação devem aparecer, o que torna o INNER JOIN a escolha certa.
A banca pode tentar confundir o candidato com a ideia de que o INNER JOIN não mostraria "todos" os autores. Na verdade, o INNER JOIN mostra todos os autores que têm uma instituição afiliada, que é exatamente o que o enunciado pede. Se a questão pedisse "todos os autores, inclusive os sem instituição", aí sim seria necessário um LEFT JOIN. Fique atento a essa distinção: "todos os autores e suas instituições" (INNER JOIN) é diferente de "todos os autores, mesmo sem instituição" (LEFT JOIN).
O comando SQL apresentado está correto e atende ao que o enunciado pede. A sintaxe do INNER JOIN no MySQL é válida, a condição de junção está correta (igualdade entre a chave estrangeira Autores.InstituicaoID e a chave primária Instituicoes.InstituicaoID), e a projeção das colunas com aliases (AS NomeAutor, AS Nomelnstituicao) é feita de forma adequada. O resultado será uma lista com o nome de cada autor e o nome da sua instituição afiliada, exatamente como solicitado.
Gabarito: letra C (CERTO).
Link permanente: /questoes/qg354216