Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — Quadrix 2024

Banco de DadosConsultas e Comandos em SQL
Código
qa630724
Banca
Quadrix
Órgão
IBICT
Ano
2024
Cargo
Tecno ( )
CREATE TABLE Autores ( AutorID INT AUTO_INCREMENT PRIMARY KEY, Nome VARCHAR(100), Email VARCHAR(100), InstituicaoID INT, FOREIGN KEY (InstituicaoID) REFERENCES Instituicoes(InstituicaoID) ); CREATE TABLE Revistas ( RevistaID INT AUTO_INCREMENT PRIMARY KEY, Nome VARCHAR(100), ISSN VARCHAR(20) ); CREATE TABLE Artigos ( ArtigoID INT AUTO_INCREMENT PRIMARY KEY, Titulo VARCHAR(255), Resumo TEXT, PalavrasChave VARCHAR(255), RevistaID INT, FOREIGN KEY (RevistaID) REFERENCES Revistas(RevistaID) ); CREATE TABLE Instituicoes ( InstituicaoID INT AUTO_INCREMENT PRIMARY KEY, Nome VARCHAR(100), Cidade VARCHAR(100), Pais VARCHAR(100) ); CREATE TABLE Autor_Artigo ( AutorID INT, ArtigoID INT, PRIMARY KEY (AutorID, ArtigoID), FOREIGN KEY (AutorID) REFERENCES Autores(AutorID), FOREIGN KEY (ArtigoID) REFERENCES Artigos(ArtigoID) ); Com relação ao código SQL acima, no SGBD MySQL, julgue o item a seguir.   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 Nomelnstituicao FROM Autores INNER 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 e instituições

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.

Alternativa C — ✅ CERTOGABARITO

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