Pular para o conteúdo principal

Questão de Banco de Dados — MySQL — Quadrix 2024

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

Imagem da questão

Com relação ao código SQL acima, no SGBD MySQL, julgue o item.Para que se mostrem todos os autores e suas instituições afiliadas, pode‑se utilizar o comando a seguir.SELECT Autores.Nome AS NomeAutor, Instituicoes.Nome AS NomelnstituicaoFROM AutoresINNER JOIN Instituicoes ON Autores.InstituicaoID = Instituicoes.InstituicaoID;
  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”.

Junções SQL: INNER JOIN e a consulta de autores com instituições

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:

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

  2. FROM Autores: define a primeira tabela da junção.

  3. INNER JOIN Instituicoes: define a segunda tabela e o tipo de junção.

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

NÃO CAIA NESSA!

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

Item — ✅ CERTO ⟵ GABARITO

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