Questão nº 49
Questão de Tecnologia da Informação · FGV DATAPREV 2024 (nº 49)
O esquema de um banco de dados relacional, especificado pelos comandos SQL a seguir, atenderá às consultas
create table candidato ( num_inscr int primary key, cpf_cand char(11) unique, nome varchar(30) ); create table questao ( id int primary key, texto varchar(20) not null, gabarito char(1) check (gabarito in ('A','B','C','D','E')) ); create table candidato_questao ( num_cand int, cpf_cand char(11), id_quest int, opcao_marc char(1), primary key(num_cand,id_quest), unique(cpf_cand,id_quest), foreign key(num_cand) references candidato, foreign key(cpf_cand) references candidato(cpf_cand), foreign key(id_quest) references questao );
Considere a execução dos comandos SQL a seguir:
insert into candidato values
(1,'111','Ferreira'),(2,'333','Andrade'),
(3,'555','Verçosa'),(4,'222','Bastos'),
(5,'444','Lavor');
select nome from candidato
where nome like '__r%'
order by num_inscr asc
Assinale a opção que apresenta a ordem correta dos nomes impressos pelo comando SELECT.
- A'Andrade', 'Ferreira' e 'Verçosa'.
- B'Ferreira' e 'Andrade'.
- C'Ferreira' e 'Verçosa'. (alternativa correta)
- D'Lavor'.
- E'Verçosa' e 'Ferreira'.
Resposta comentada
Gabarito Alternativa C
O operador LIKE no SQL é usado para encontrar padrões em textos, onde _ (underscore) representa qualquer um caractere e % (percentual) representa zero ou mais caracteres. A cláusula ORDER BY organiza os resultados de uma consulta em ordem crescente (ASC) ou decrescente (DESC) com base em uma ou mais colunas.
- (A) Incorreta: A condição
nome like '__r%'significa que o nome deve ter exatamente dois caracteres, seguidos da letra 'r', e depois qualquer coisa. 'Andrade' não atende a essa condição, pois a terceira letra é 'd', não 'r'. - (B) Incorreta: 'Andrade' não satisfaz a condição
LIKE. - (C) Correta: Os nomes que satisfazem a condição
nome like '__r%'são 'Ferreira' (Fe + r + reira) e 'Verçosa' (Ve + r + çosa). Ao aplicarORDER BY num_inscr asc, 'Ferreira' (num_inscr = 1) vem antes de 'Verçosa' (num_inscr = 3). - (D) Incorreta: 'Lavor' não satisfaz a condição
LIKE, pois a terceira letra é 'v', não 'r'. - (E) Incorreta: Embora 'Verçosa' e 'Ferreira' sejam os nomes corretos, a ordem está invertida. A cláusula
ORDER BY num_inscr ascordena pelonum_inscrem ordem crescente, o que colocaria 'Ferreira' (num_inscr=1) antes de 'Verçosa' (num_inscr=3). A armadilha aqui é desconsiderar ou inverter o efeito doORDER BY.
Fonte: FGV DATAPREV 2024 Analista de Tecnologia da Informação - Arquitetura, Engenharia e Sustentação Tecnológica (Caderno Tipo 1). Reproduzida para fins de estudo.