Comando SQL para consulta com múltiplas tabelas
Gabarito: letra E. Para obter dados de duas tabelas relacionadas (Curso e Aluno), é necessário usar uma junção (JOIN) com a condição correta de igualdade entre as chaves. A sintaxe válida é SELECT ... FROM tabela1, tabela2 WHERE tabela1.coluna = tabela2.coluna, qualificando as colunas com o nome da tabela para evitar ambiguidade. A alternativa E apresenta exatamente essa forma.
Alternativa A — ❌ Incorreta
FROM Curso, Aluno sem cláusula WHERE gera um produto cartesiano (todas as combinações possíveis entre as linhas das duas tabelas), o que não produz o resultado desejado e normalmente é um erro lógico.
Alternativa B — ❌ Incorreta
FROM Curso.ID = Aluno.ID é uma sintaxe inválida. A cláusula FROM deve listar tabelas, não condições. A condição de junção deve vir na cláusula WHERE ou em JOIN explícito.
Alternativa C — ❌ Incorreta
WHERE ID = ID é ambíguo porque ambas as tabelas possuem a coluna ID. Em muitos SGBDs isso resulta em erro de ambiguidade ou em uma comparação incorreta (a mesma coluna consigo mesma, dependendo da implementação). A forma correta é qualificar com o nome da tabela.
Alternativa D — ❌ Incorreta
FROM Curso, Aluno (Curso.ID = Aluno.ID) — a sintaxe com parênteses dessa forma não é reconhecida pelo SQL padrão. Não é possível colocar a condição de junção entre parênteses após a lista de tabelas dessa maneira.
Alternativa E — ✅ Correta ⟵ GABARITO
FROM Curso, Aluno WHERE Curso.ID = Aluno.ID é a sintaxe clássica e correta para uma junção implícita (vírgula no FROM mais condição no WHERE). As colunas são devidamente qualificadas (Curso.ID e Aluno.ID), eliminando ambiguidade. O resultado será a combinação das linhas onde o ID do curso coincide, trazendo Nome (do Aluno) e Especialidade e Tipo (do Curso).
Gabarito: letra E