Considere o seguinte esquema relacional para responder a essa questão e a próxima:Editora (editoraID, nomeEditora, morada, telefone)Interprete (interpreteID, nomeArtístico, país, contato, editoraID)Disco (referência, título, duração, ano edição, editoraID, interpreteID)Qual das alternativas, a seguir, apresenta o SQL correto para retornar os intérpretes portugueses da editora ‘Grava Records’?
ASELECT nomeArtísticoFROM Interprete, EditoraWHERE nomeEditora LIKE ‘Grava Records’AND país LIKE ‘Portugal’ AND Interprete.editoraID=Editora.editoraID
BSELECT [nomeArtístico]FROM EditoraWHERE nomeEditora LIKE ‘Grava Records’AND país LIKE ‘Portugal’
CSELECT [nomeArtístico]FROM Interprete, EditoraWHERE nomeEditora AND pais LIKE“Portugal ans ‘Grava Records”
DSelect paisLike Portugal and nomeEditora like grava records from editora.
ESELECT pais, nomeEditora, nomeArtisticoLike “Portugal” and “Grava Records”Where Interprete and Editora.AND Interprete.editoraID=Editora.editoraID
Revelar gabarito e comentário▾
GabaritoA — SELECT nomeArtístico
FROM Interprete, Editora
WHERE nomeEditora LIKE ‘Grava Records’
AND país LIKE ‘Portugal’ AND Interprete.editoraID=Editora.editoraID
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”.
Consulta SQL com junção de tabelas
Gabarito: letra A. A consulta correta precisa juntar as tabelas Interprete e Editora pela chave estrangeira editoraID, filtrar os registros em que o nome da editora seja 'Grava Records' e o país do intérprete seja 'Portugal', e então selecionar a coluna nomeArtístico. A alternativa A é a única que faz essa junção (Interprete.editoraID=Editora.editoraID) e aplica os dois filtros corretamente.
O problema pede para retornar os intérpretes portugueses da editora 'Grava Records'. Isso exige consultar dados de duas tabelas: Interprete (que contém nomeArtístico e país) e Editora (que contém nomeEditora). Como as informações estão em tabelas diferentes, é necessário realizar uma junção (JOIN) entre elas, usando a coluna editoraID que existe em ambas. A junção garante que cada intérprete seja associado à sua editora correspondente.
A sintaxe básica de uma junção implícita (ou junção por vírgula) coloca as tabelas na cláusula FROM separadas por vírgula e define a condição de junção na cláusula WHERE. Nesse caso, a condição é Interprete.editoraID = Editora.editoraID. Depois, aplicam-se os filtros: nomeEditora = 'Grava Records' e país = 'Portugal'. Por fim, seleciona-se a coluna desejada, nomeArtístico. A ordem das condições no WHERE não altera o resultado, desde que todas estejam presentes e corretas.
É importante notar que o operador LIKE é usado para comparação de padrões com curingas (% para qualquer sequência, _ para um caractere). Quando usado sem curingas, como em LIKE 'Grava Records', ele se comporta como uma comparação de igualdade, o que é válido aqui. A alternativa A usa LIKE sem curingas, o que é aceitável, embora o operador = fosse mais direto.
A pegadinha desta questão está em reconhecer a necessidade da junção. As alternativas incorretas ou não fazem a junção, ou filtram colunas erradas, ou têm sintaxe inválida. A banca testa se o candidato entende que, para combinar dados de duas tabelas, é preciso usar a chave estrangeira na condição de junção.
Critério
Alternativa A (✅ Gabarito)
Alternativa B
Alternativa C
Alternativa D
Alternativa E
Junção entre tabelas
Sim (Interprete.editoraID=Editora.editoraID)
Não (apenas Editora)
Não (produto cartesiano)
Não
Não (condição solta)
Filtro editora 'Grava Records'
Sim (nomeEditora LIKE 'Grava Records')
Sim
Inválido (nomeEditora AND pais LIKE)
Sim (sem aspas)
Inválido (Like "Grava Records" sem coluna)
Filtro país 'Portugal'
Sim (país LIKE 'Portugal')
Não (coluna inexistente em Editora)
Inválido (string mal formatada)
Sim (sem aspas)
Inválido (sem coluna associada)
Coluna selecionada
nomeArtístico (correta)
nomeArtístico (inexistente em Editora)
nomeArtístico (correta, mas sem junção)
pais (errada)
pais, nomeEditora, nomeArtistico (errada)
Sintaxe SQL válida
Sim
Parcialmente (erro de coluna)
Não
Não
Não
Alternativa A — ✅ Correta ⟵ GABARITO
Esta alternativa está correta porque:
Faz a junção das tabelas Interprete e Editora na cláusula FROM (junção implícita).
Define a condição de junção corretamente: Interprete.editoraID=Editora.editoraID.
Filtra pela editora 'Grava Records' com nomeEditora LIKE 'Grava Records'.
Filtra pelo país 'Portugal' com país LIKE 'Portugal'.
Seleciona a coluna nomeArtístico, que é o que se deseja retornar.
Alternativa B — ❌ Incorreta
Esta alternativa está incorreta porque não faz a junção com a tabela Interprete. Ela consulta apenas a tabela Editora e tenta selecionar nomeArtístico, que não existe nessa tabela. Além disso, o filtro país LIKE 'Portugal' também não se aplica, pois país é uma coluna da tabela Interprete, não de Editora. A consulta resultaria em erro, pois a coluna nomeArtístico não existe na tabela Editora.
Alternativa C — ❌ Incorreta
Esta alternativa está incorreta por vários motivos:
A sintaxe WHERE nomeEditora AND pais LIKE é inválida: nomeEditora não é uma condição booleana, e falta o operador de comparação.
A string "Portugal ans 'Grava Records" está mal formatada, com aspas duplas e um erro de digitação ('ans' em vez de 'and').
Não há condição de junção entre as tabelas, então o resultado seria um produto cartesiano, o que não atende ao pedido.
Alternativa D — ❌ Incorreta
Esta alternativa está incorreta porque a sintaxe está completamente errada. A ordem das cláusulas está invertida (Select pais Like Portugal and nomeEditora like grava records from editora.), não há cláusula FROM adequada, e os filtros estão sem aspas. Além disso, não há junção com a tabela Interprete, então não seria possível retornar os intérpretes.
Alternativa E — ❌ Incorreta
Esta alternativa está incorreta porque:
A cláusula SELECT está incompleta e mal formatada: SELECT pais, nomeEditora, nomeArtistico sem a cláusula FROM adequada.
A condição Like "Portugal" and "Grava Records" não está associada a nenhuma coluna.
A cláusula Where Interprete and Editora. é inválida, pois Interprete e Editora são tabelas, não condições.
A condição de junção AND Interprete.editoraID=Editora.editoraID está solta, sem estar ligada a um WHERE válido.