Buscar

Quiz -- Banco de Dados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

• Pergunta 1 
1 em 1 pontos 
 
Considere um banco de dados com uma tabela voos, contendo a coluna companhia, com a 
sigla da companhia aérea que operou o voo. Considere também que esse banco possui 
uma tabela companhias, com um cadastro de todas as companhias aéreas existentes. 
 
O que representa a seguinte consulta? 
 
SELECT (SELECT count(distinct companhia) FROM voos) 
/ (SELECT count(*) FROM companhias); 
 
Considere como dica os seguintes comandos e suas respectivas saídas: 
 
> SELECT 4; 
4 
> SELECT 4/2; 
2 
 
Resposta 
Selecionada: 
b. 
A proporção de companhias cadastradas que operaram voos 
registrados na tabela voos. 
Respostas: a. 
A quantidade de companhias que operaram voos registrados na tabela 
voos. 
 
b. 
A proporção de companhias cadastradas que operaram voos 
registrados na tabela voos. 
 c. 
A quantidade total de companhias cadastradas. 
 
d. 
Não representa nada, pois seja qual for o conteúdo das tabelas esse 
comando sempre retorna o número zero. 
 
e. 
Não representada nada, pois resultará em um erro devido a sintaxe 
incorreta. 
Comentário 
da resposta: 
b. A consulta está dividindo o “count(distinct companhia) FROM voos” 
(quantidade de companhias que operaram voos) por “SELECT count(*) 
FROM companhias” (quantidade de empresas cadastradas). Ou seja, 
temos a proporção de empresas que operaram voos pelo total de 
empresas cadastradas. 
 
 
• Pergunta 2 
0 em 1 pontos 
 
Considere a seguinte consulta: 
 
SELECT nome FROM funcionario WHERE not(idade > 65 AND sexo = 'M' OR idade > 60 
AND sexo = 'F'); 
Assinale a alternativa que indica um par válido de entrada e saída para essa consulta. 
Obs: Todas as entradas se referem à tabela “funcionario”. 
Resposta Selecionada: a. 
Entrada: 
 
+----------+-------+------+ 
| nome | idade | sexo | 
+----------+-------+------+ 
| Moacir | 70 | M | 
| Geraldo | 67 | M | 
| Enzo | 23 | M | 
| Josefina | 63 | F | 
| Ivone | 70 | F | 
+----------+-------+------+ 
 
Saída: 
+----------+ 
| nome | 
+----------+ 
| Enzo | 
| Josefina | 
| Ivone | 
+----------+ 
Respostas: a. 
Entrada: 
 
+----------+-------+------+ 
| nome | idade | sexo | 
+----------+-------+------+ 
| Moacir | 70 | M | 
| Geraldo | 67 | M | 
| Enzo | 23 | M | 
| Josefina | 63 | F | 
| Ivone | 70 | F | 
+----------+-------+------+ 
 
Saída: 
+----------+ 
| nome | 
+----------+ 
 
| Enzo | 
| Josefina | 
| Ivone | 
+----------+ 
 
b. 
Entrada: 
 
+----------+-------+------+ 
| nome | idade | sexo | 
+----------+-------+------+ 
| Moacir | 70 | M | 
| Geraldo | 67 | M | 
| Enzo | 23 | M | 
| Josefina | 63 | F | 
| Ivone | 70 | F | 
+----------+-------+------+ 
 
Saída: 
 
+----------+ 
| nome | 
+----------+ 
| Moacir | 
| Geraldo | 
| Josefina | 
| Ivone | 
+----------+ 
 
c. 
Entrada: 
 
+----------+-------+------+ 
| nome | idade | sexo | 
+----------+-------+------+ 
| Moacir | 70 | M | 
| Geraldo | 67 | M | 
| Enzo | 23 | M | 
| Karolyne | 23 | F | 
| Josefina | 63 | F | 
| Ivone | 70 | F | 
+----------+-------+------+ 
 
Saída: 
 
+----------+ 
| nome | 
+----------+ 
| Moacir | 
| Geraldo | 
| Enzo | 
| Karolyne | 
| Josefina | 
+----------+ 
 
d. 
Entrada: 
 
+----------+-------+------+ 
| nome | idade | sexo | 
+----------+-------+------+ 
| Moacir | 70 | M | 
| Geraldo | 67 | M | 
| Enzo | 23 | M | 
| Karolyne | 23 | F | 
| Josefina | 63 | F | 
| Ivone | 70 | F | 
+----------+-------+------+ 
 
Saída: 
 
+----------+ 
| nome | 
+----------+ 
| Enzo | 
| Karolyne | 
+----------+ 
 
e. 
Entrada: 
 
+----------+-------+------+ 
| nome | idade | sexo | 
+----------+-------+------+ 
| Moacir | 70 | M | 
| Geraldo | 67 | M | 
| Josefina | 63 | F | 
| Ivone | 70 | F | 
+----------+-------+------+ 
 
Saída: 
 
…Syntax error… 
Comentário 
da resposta: 
D. A consulta irá selecionar todos os homens com idade até 65 anos e 
todas as mulheres com idade até 60 anos. Nas opções A e B, temos 
“Ivone”, de 70 anos, sendo selecionada, por isso essas opções estão 
erradas. Na opção C, temos “Josefina”, de 63 anos, sendo selecionada, por 
isso essa opção também está errada. Como a consulta não possui erro de 
sintaxe (opção E), a alternativa correta é a D. 
 
• Pergunta 3 
1 em 1 pontos 
 
Considere a tabela municipio criada com o seguinte comando: 
 
CREATE TABLE municipio ( 
 id int auto_increment primary key, 
 nome text, 
 uf varchar(2) 
); 
 
Considere ainda o seguinte estado para a essa tabela: 
 
> select * from municipio; 
+----+------------+------+ 
| id | nome | uf | 
+----+------------+------+ 
| 1 | São Paulo | SP | 
| 2 | Osasco | SP | 
| 3 | Mateiros | TO | 
+----+------------+------+ 
 
Dado o estado definido acima, considere a execução do seguinte comando: 
 
INSERT INTO municipio (nome, uf) VALUES ('Salvador', 'BA'); 
 
Considere agora as seguintes afirmações: 
 
I – A execução do comando acima incorrerá em erro. 
II – A chave primária deve ser especificada no comando INSERT. 
 
Assinale agora a opção correta. 
 
Resposta Selecionada: b. 
As sentenças I e II são falsas. 
 
Respostas: a. 
As sentenças I e II são verdadeiras e a II é a explicação da I. 
 b. 
As sentenças I e II são falsas. 
 c. 
A sentença I é verdadeira, mas a II é falsa. 
 d. 
As sentenças I e II são verdadeiras, mas a II não é a explicação da I. 
 e. 
Apenas a sentença II é verdadeira. 
Comentário da 
resposta: 
b. A chave primária foi especificada com a opção auto_increment, o que 
dispensa a especificação da chave primária no comando INSERT. 
 
• Pergunta 4 
0 em 1 pontos 
 
Considere as seguintes tabelas: 
CREATE TABLE paciente (id int primary key, nome text); 
 
CREATE TABLE medico (id int primary key, nome text); 
 
CREATE TABLE consulta (data date, id_paciente int, id_medico int); 
 
Considere agora as seguintes consultas realizadas sobre as tabelas acima definidas: 
 
I) SELECT p.nome as nome_paciente, m.nome as nome_medico, c.data FROM paciente 
p, consulta c, medico m WHERE c.id_paciente = p.id and c.id_medico = m.id and data = 
curdate(); 
 
II) SELECT p.nome as nome_paciente, m.nome as nome_medico, c.data FROM paciente 
p JOIN consulta c ON c.id_paciente = p.id JOIN medico m ON c.id_medico = m.id 
WHERE data = curdate(); 
 
III) SELECT p.nome as nome_paciente, m.nome as nome_medico, c.data FROM 
paciente p JOIN consulta c JOIN medico m ON c.id_paciente = p.id and c.id_medico = 
m.id WHERE data = curdate(); 
 
IV) SELECT p.nome as nome_paciente, m.nome as nome_medico, c.data FROM 
paciente p INNER JOIN consulta c INNER JOIN medico m ON c.id_paciente = p.id and 
c.id_medico = m.id WHERE data = curdate(); 
 
Obs: “curdate()” retorna a data corrente. 
 
 
Assinale a opção que identifica corretamente os resultados obtidos para essas consultas. 
Resposta 
Selecionada: 
a. 
As consultas I e II terão o mesmo resultado. As consultas III e IV possuem 
erros de sintaxe. 
Respostas: a. 
As consultas I e II terão o mesmo resultado. As consultas III e IV possuem 
erros de sintaxe. 
 
b. 
As consultas I e II terão um mesmo resultado, enquanto as consultas III e 
IV terão um outro resultado (o resultado de III será o mesmo de IV). Todas 
as consultas são válidas. 
 
c. 
As consultas I e II terão um mesmo resultado, enquanto as consultas III e 
IV terão resultados diferentes (o resultado de III difere de I, II e IV; e o 
resultado de IV difere de I, II e III). Todas as consultas são válidas.d. 
As consultas I, II, III e IV terão o mesmo resultado, desde que todos os 
pacientes e médicos estejam vinculados a consultas marcadas para a data 
corrente. 
 
e. 
As consultas I, II, III e IV terão o mesmo resultado, independentemente do 
conteúdo das tabelas. 
Comentário 
da resposta: 
e. No MySQL, o JOIN padrão (consulta II) é o INNER JOIN (consulta IV), o 
que é a mesma coisa que o resultado do produto cartesiano filtrado pela 
condição de junção (consulta I). Além disso, para fazer a junção de três 
tabelas, há duas formas possíveis: “tabela 1 JOIN tabela 2 JOIN tabela 3 ON 
condição 1 and condição 2” (consulta III) e “tabela 1 JOIN tabela 2 ON 
condição 1 JOIN tabela 3 ON condição 2” (consulta II). 
 
 
• Pergunta 5 
0 em 1 pontos 
 
Níveis de abstração: da realidade ao dado 
 
A evolução da humanidade pode ser encarada em parte como um trajeto 
no sentido da aquisição progressiva da capacidade individual de 
abstração. De um ser intimamente ligado ao universo e em particular à 
natureza, o ser humano individual tornou-se ao longo do tempo um ente 
independente, isolado e com cada vez maior capacidade de introspecção 
objetiva, isto é, sem que este dependa de fatores subjetivos, temporais e 
individuais. 
 
 
(SETZER, V. W.; SILVA, F. S. C. da. Banco de dados: aprenda o que são, 
melhore seu conhecimento, construa os seus. São Paulo: Edgard Blücher, 
2005.) 
 
Assim como Setzer & Silva consideram a história da humanidade como um crescente na 
capacidade de abstração, a história da programação de computadores também pode ser 
encarada como uma busca por formas cada vezes mais abstratas de dar instruções a 
máquinas. 
 
Considere essas três formas de se utilizar o computador para se obter a previsão do tempo: 
 
I – 
SELECT temperatura, precipitacao FROM previsao WHERE data = CURDATE(); 
 
II – Computador, por favor, me dê a previsão do tempo de hoje. 
 
III - 
temperatura = None 
precipitacao = None 
for prev in previsoes: 
 if prev.data = date.today(): 
 temperatura = prev.temperatura 
 precipitacao = prev.precipitacao 
 print(“ temperatura=”, temperatura) 
print(“precipitacao=”, precipitacao) 
 
Assinale a alternativa que corretamente ordena os itens acima em ordem crescente de 
abstração. 
Resposta Selecionada: c. 
II, I, III. 
Respostas: a. 
I, II, III. 
 b. 
III, II, I. 
 c. 
II, I, III. 
 d. 
Todas os itens estão no mesmo nível de abstração. 
 
 e. 
III, I, II. 
Comentário da resposta: Texto feedback 
 
• Pergunta 6 
0 em 1 pontos 
 
6.1.2.1 Orientações do usuário final para a segurança de senha 
 
Use a opção --password = password ou -ppassword na linha de comando. Por 
exemplo: 
 
shell> mysql -u francis -pfrank db_name 
 
Aviso 
 
Isso é conveniente, mas inseguro. Em alguns sistemas, sua senha fica visível 
para programas de status do sistema, como ps, que podem ser invocados por 
outros usuários para exibir linhas de comando. Os clientes MySQL geralmente 
substituem o argumento da senha da linha de comandos com zeros durante 
sua sequência de inicialização. No entanto, ainda há um breve intervalo 
durante o qual o valor é visível. Além disso, em alguns sistemas, essa 
estratégia de substituição é ineficaz e a senha permanece visível para o ps. 
(Os sistemas SystemV Unix e talvez outros estejam sujeitos a esse problema.) 
 
Se o seu ambiente operacional estiver configurado para exibir seu comando 
atual na barra de título da janela do terminal, a senha permanecerá visível 
enquanto o comando estiver em execução, mesmo se o comando já estiver 
fora de vista. 
 
MYSQL. MySQL 8.0 Reference Manual. 2020. 
 
O trecho acima do manual do MySQL explica que um determinado método de login possui 
um certo risco de segurança. 
 
Indique qual seria uma alternativa segura ao método discutido. 
 
Resposta 
Selecionada: 
c. 
Logar como o discutido, passando a senha na linha de comando, mas 
especificando o uso de uma conexão SSL segura entre cliente e banco de 
dados. 
Respostas: a. 
 
Logar com a opção -p sem passar o parâmetro (senha) no comando, o 
que fará com que a senha seja lida a partir de um prompt seguro do 
terminal. 
 
b. 
Logar com a opção -p sem passar o parâmetro (senha) no comando, o 
que fará com que o usuário anônimo seja utilizado. 
 
c. 
Logar como o discutido, passando a senha na linha de comando, mas 
especificando o uso de uma conexão SSL segura entre cliente e banco de 
dados. 
 
d. 
Logar como o discutido, passando a senha na linha de comando, mas 
usando um contêiner Docker. 
 
e. 
O manual do MySQL está defasado. Na última versão disponível do 
MySQL, o método discutido é inteiramente seguro. 
Comentário da 
resposta: 
a. Com a senha sendo digitada em modo interativo (com a opção -p), 
não há como outro programa capturar a senha digitada, a menos que 
haja algum programa espião que capture as teclas sendo digitadas. 
 
• Pergunta 7 
1 em 1 pontos 
 
Considere a seguinte tabela de pratos disponíveis em um restaurante: 
CREATE TABLE pratos (nome text, pais_origem text, vegetariano boolean, preco float); 
Considerando essa tabela, assinale a alternativa com o comando que torna possível a 
execução da seguinte consulta: 
 
SELECT pais_origem as pais, count(*) as qtd_pratos_vegetarianos FROM 
pratos_vegetarianos GROUP BY pais_origem; 
+--------+-------------------------+ 
| pais | qtd_pratos_vegetarianos | 
+--------+-------------------------+ 
| Índia | 10 | 
| Itália | 7 | 
| Brasil | 4 | 
+--------+-------------------------+ 
 
Resposta 
Selecionada: 
b. 
CREATE VIEW pratos_vegetarianos AS SELECT nome, pais_origem 
FROM pratos WHERE vegetariano; 
Respostas: a. 
 
CREATE SUBSELECT pratos_vegetarianos AS SELECT nome, pais_origem 
AS pais FROM pratos WHERE vegetariano; 
 
b. 
CREATE VIEW pratos_vegetarianos AS SELECT nome, pais_origem 
FROM pratos WHERE vegetariano; 
 
c. 
CREATE SUBSELECT pratos_vegetarianos AS SELECT nome, pais_origem 
FROM pratos WHERE vegetariano; 
 
d. 
CREATE VIEW pratos_vegetarianos FROM SELECT nome, pais_origem 
FROM pratos WHERE vegetariano; 
 
e. 
CREATE VIEW FOR pratos AS SELECT * FROM pratos_vegetarianos 
WHERE vegetariano; 
Comentário da 
resposta: 
b. Para que a consulta funcione, é preciso criar uma view para a tabela 
pratos. E a sintaxe para criar uma view é CREATE VIEW <nome-da-view> 
AS <SELECT ...>. 
 
• Pergunta 8 
0 em 1 pontos 
 
Considere a seguinte sequência de comandos: 
 
> SELECT id, saldo FROM conta_corrente WHERE id in (1324, 7634); 
id saldo 
----- -------- 
1324 5000.0 
7634 40000.0 
> BEGIN; 
> UPDATE conta_corrente SET saldo = saldo - 100 WHERE id = 1324; 
> UPDATE conta_corrente SET saldo = saldo + 200 WEHRE id = 7634; 
> COMMIT; 
> SELECT id, saldo FROM conta_corrente WHERE id in (1324, 7634); 
Qual é a saída produzida pelo último comando? 
 
Resposta Selecionada: d. 
… You have an error in your SQL syntax ... 
Respostas: a. 
id saldo 
----- -------- 
1324 5100.0 
7634 40200.0 
 
b. 
id saldo 
----- -------- 
 
1324 5000.0 
7634 40000.0 
 
c. 
id saldo 
----- -------- 
1324 5100.0 
7634 40000.0 
 d. 
… You have an error in your SQL syntax ... 
 
e. 
----- -------- 
1324 7634 
5000.0 40000.0 
Comentário da 
resposta: 
b. Como há um erro de sintaxe no segundo UPDATE e os comandos de 
UPDATE estão envoltos em uma transação (BEGIN, COMMIT), então 
nenhum UPDATE será efetivo. Por isso a saída final será igual a saída do 
primeiro SELECT. 
 
• Pergunta 9 
0 em 1 pontos 
 
Considere os seguintes tipos de bancos de dados: 
 (I) Relacionais com propriedades ACID 
(II) Em memória 
(III) Orientados a documentos 
(IV) Orientados a grafos 
 Considere agora os seguintes domínios a serem modelados em bancosde dados: 
 ( ) Soluções de cache. 
( ) Entidades com alta variabilidade de atributos entre suas instâncias. 
( ) Dados financeiros que exigem alta consistência. 
( ) Análise logística de rotas de caminhões. 
 
Assinale a alternativa que traça a correspondência mais adequada entre os tipos de bancos 
de dados e os domínios aos quais eles se aplicam melhor. 
 
Resposta Selecionada: b. 
(II) (I) (III) (IV) 
Respostas: a. 
(IV) (III) (I) (II) 
 b. 
(II) (I) (III) (IV) 
 c. 
(III) (II) (I) (IV) 
 d. 
(II) (III) (I) (IV) 
 e. 
(I) (III) (II) (IV) 
Comentário 
da resposta: 
d. Soluções de cache exigem pouco espaço e devem ser rápidas, por 
isso bancos em memória são adequados para elas. Instâncias 
diferentes com atributos diferentes para uma mesma entidade geram 
tabelas esparsas em bancos relacionais; utilizar um banco com 
esquema flexível, como os orientados a documentos, é interessante. A 
transferência entre contas correntes é um caso que exige alta 
consistência e todas as garantias do ACID: melhor ficar com um SGBD 
relacional. Por fim, a análise logística pode utilizar a aplicação de 
algoritmos em grafos, por isso pode se valer de um SGBD orientado a 
grafos. 
 
• Pergunta 10 
1 em 1 pontos 
 
Considere a uma tabela voos contendo um registro por voo e a coluna orig_estado_abrv, 
que representa o estado da federação de origem do voo. 
 
Qual será o resultado da consulta abaixo? 
 
SELECT count(*) FROM voos WHERE orig_estado_abrv = 
'SP' AND orig_estado_abrv = 'RJ'; 
 
Resposta 
Selecionada: 
b. 
Zero. 
Respostas: a. 
A soma das quantidades de voos partindo do estado de São Paulo e voos 
partindo do estado do Rio de Janeiro. 
 b. 
Zero. 
 c. 
 
Duas linhas, uma linha com a quantidade de voos partindo do estado de 
São Paulo e outra linha com a quantidade de voos partindo do estado do 
Rio de Janeiro. 
 
d. 
Uma linha com duas colunas; uma coluna com a quantidade de voos 
partindo do estado de São Paulo e outra coluna com a quantidade de 
voos partindo do estado do Rio de Janeiro. 
 e. 
Um erro, pois a sintaxe está incorreta. 
Comentário da 
resposta: 
b. Um mesmo registro não pode ter um valor (“SP”) para uma coluna e ao 
mesmo tempo outro valor (“RJ”) para a mesma coluna. Dessa forma 
nenhuma linha satisfará a condição imposta pelo WHERE. O que resultará 
numa contagem de zero linhas.

Outros materiais