Artigo

Prova da Semana – Comentário da prova do Hemocentro – DF – 2017 – Tecnologia da Informação – BD

Abaixo comentamos as questões de banco de dados da prova do Hemocentro deste último final de semana. São duas questões de SQL, vamos aos comentários. Lembrando que doar sangue pode ajudar a salvar vidas! 

  1. Ano: 2017 Banca: IADES Órgão: Hemocentro Cargo: Analista de Tecnologia da Informação Q. 26

QUESTÃO 26 – Considere as tabelas aluno (matricula INT, nome CHAR, cod_curso INT) e curso (cod_curso INT, curso CHAR, área CHAR), apresentadas a seguir.

Qual dos comandos Structured Query Language (SQL) pode ser utilizado para listar somente os alunos que cursam História?

(A) select aluno.Nome from aluno, curso where aluno.cod_curso = curso.cod_curso AND curso.curso = 'Historia';

(B) select aluno.Nome from aluno,curso where curso.curso = 'Historia';

(C) select aluno.Nome from aluno,curso where aluno.cod_curso = 'Historia';

(D) select curso.curso from aluno,curso where aluno.cod_curso = curso.cod_curso AND curso.curso = 'Historia';

(E) select aluno.Nome from aluno,curso where curso.curso = 'Historia' and aluno.cod_curso != curso.cod_curso;

Comentário: Vamos analisar cada uma das alternativas acima.

Na alternativa A temos uma seleção que é feita sobre um produto cartesiano das tabelas aluno e curso. Em seguida é feita uma seleção com um predicado composto por duas partes, a primeira serve para limitar as colunas onde os atributos cod_curso das duas tabelas são iguais, vejam que isso faz com que o produto cartesiano se transforme em uma junção. A segunda parte limita as linhas aos atributos que possuem o valor “historia” associado ao campo curso. Vejam que é exatamente isso que é solicitado no enunciado, sendo, portanto, a nossa resposta.

Agora vamos avaliar os erros da demais alternativas. Na letra B temos um produto cartesiano sem a igualdade entre os códigos do curso na cláusula WHERE. Perceba que esse fato vai fazer com que o retorno seja bem maior em termos de linhas e que os pares obtidos não possuem um relacionamento, que seria obtido com a igualdade.

Na alternativa C o erro é ainda mais grosseiro, observe que o campo aluno.cod_curso é um atributo numérico e está sendo comparado com uma string de caracteres.

A alternativa D apresenta como resulta a coluna incorreta na cláusula select. Já a alternativa E utiliza o comparador de desigualdade na cláusula where. Em ambos os casos o resultado obtido é divergente do solicitado na questão.

Gabarito: A.

  1. Ano: 2017 Banca: IADES Órgão: Hemocentro Cargo: Analista de Tecnologia da Informação Q.

QUESTÃO 28 – Considere as tabelas aluno (id INT, nome CHAR, curso INT) e curso (id INT, nome CHAR), apresentadas a seguir.

Após a execução de uma consulta Structured Query Language (SQL), produziu-se exatamente o seguinte resultado:

Qual dos comandos SQL a seguir foi utilizado?

(A) SELECT a.nome, c.nome FROM aluno a RIGHT JOIN curso c ON a.curso = c.id;

(B) SELECT a.nome, c.nome FROM aluno a LEFT JOIN curso c ON a.curso = c.id UNION SELECT a.nome, c.nome FROM aluno a RIGHT JOIN curso c ON a.curso = c.id;

(C) SELECT a.nome, c.nome FROM aluno a LEFT JOIN curso c ON a.curso = c.id;

(D) SELECT a.nome, c.nome FROM aluno a INNER JOIN curso c ON a.curso = c.id;

(E) SELECT a.nome, c.nome FROM aluno a RIGHT JOIN curso c ON a.curso = c.id UNION SELECT a.nome, c.nome FROM aluno a LEFT JOIN curso c ON a.curso = c.id;

Comentário: Quando observamos as tabelas e os resultados podemos perceber que uma junção interna (INNER JOIN) foi executada sobre as tabelas aluno e curso para se obter o resultado esperado. Desta forma, a única alternativa que apresenta INNER JOIN no comando é a alternativa D, que é a resposta correta.

Gabarito: D.

Foram apenas essas duas questões. 

Qualquer dúvida estou às ordens,

Thiago

Deixe seu comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Veja os comentários
  • Nenhum comentário enviado.