Logo Passei Direto
Buscar

banco de dados

Ferramentas de estudo

Questões resolvidas

Considere a seguinte modelagem feita para o banco de dados de um sistema de estacionamento: Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo; tabela veiculo com campos placa, marca, modelo, cor, cpf_dono e nome_dono; estadia.placa_veiculo é chave estrangeira para veiculo.placa.
Assinale a alternativa que indica em que forma normal se encontra essa modelagem.
2FN.
1FN.
2FN.
3FN.
BCFN.

Considere um banco de dados para um sistema de controle de estacionamentos. Os requisitos básicos são: o sistema precisa armazenar o horário de início e de fim da estadia de cada veículo. Para cada estadia é preciso registrar qual o veículo que foi estacionado, assim como o dono desse veículo.
Assinale a alternativa que corresponda a uma modelagem para esse problema que esteja na BCFN.
Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo; tabela veiculo com campos placa, marca-modelo-cor e cpf_dono; estadia.placa_veiculo é chave estrangeira para veiculo.placa.
Descrição acessível: tabela veiculo com campos placa, marca, modelo, cor, cpf_dono, inicios_estadias e fins_estadias; tabela dono com campos cpf e nome_completo; estadia.cpf_dono é chave estrangeira para dono.cpf.
Descrição acessível: tabela estadia com campos inicio, fim, duracao e placa_veiculo; tabela veiculo com campos placa, marca, modelo, cor e cpf_dono; tabela dono com campos cpf e nome; estadia.placa_veiculo é chave estrangeira para veiculo.placa; veiculo.cpf_dono é chave estrangeira para dono.cpf.
Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo; tabela veiculo com campos placa, marca, modelo, cor e cpf_dono; tabela dono com campos cpf, nome_completo, primeiro_nome e sobre_nome; estadia.placa_veiculo é chave estrangeira para veiculo.placa; veiculo.cpf_dono é chave estrangeira para dono.cpf.

Com a SQL podemos utilizar sub-selects, que são “selects dentro de selects”.
Qual dos seguintes comandos exibe corretamente todos os dados dos voos ocorridos na data do voo mais antigo registrado?
SELECT * FROM voos WHERE data = (SELECT min(data) FROM voos) as data_mais_antiga;
SELECT * FROM voos WHERE data = (SELECT min(data) FROM voos) as data_mais_antiga;
SELECT * FROM voos WHERE data = (SELECT min(data)) as data_mais_antiga;
SELECT * FROM voos WHERE data = min(data);
SELECT min(data) FROM voos;

Considere a execução de uma sequência de comando, mas com uma parte dos comandos executados em uma sessão, e a outra parte executada em outra sessão.
Assinale a alternativa que indica a saída obtida para a execução do último comando da sequência.
+------+--------+| id | nome |+------+--------+| 1 | Fulano |+------+--------+
+------+--------+| id | nome |+------+--------+| 1 | Fulano |+------+--------+| id | nome |+------+--------+| 1 | Fulano |+------+--------+| 2 | Ciclano |+------+--------+
+------+----------+| id | nome |+------+----------+| 1 | Fulano |+------+----------+| 2 | Ciclano |+------+----------+| 3 | Beltrano |+------+----------+
You have an error in your SQL syntax
a. “Beltrano” não aparecerá pois foi inserido em uma transação abortada. “Ciclano” não aparecerá pois foi inserido em uma transação que está em outra sessão e que ainda não efetivada. Por fim, “Fulano” aparecerá, pois foi inserido sem o uso de transação.

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);
Assinale a alternativa que indica uma consulta válida para identificarmos os médicos que não possuem consulta marcada na data de hoje.
SELECT DISTINCT m.nome as nome_medico FROM medico m LEFT JOIN consulta c ON c.id_medico = m.id WHERE data != curdate() or data is null;
SELECT DISTINCT m.nome as nome_medico FROM medico m LEFT JOIN consulta c ON c.id_medico = m.id WHERE data != curdate() or data is null;
SELECT DISTINCT m.nome as nome_medico FROM medico m JOIN consulta c ON c.id_medico = m.id WHERE data != curdate() or data is null;
SELECT DISTINCT m.nome as nome_medico FROM medico m RIGHT JOIN consulta c ON c.id_medico = m.id WHERE data != curdate() or data is null;
SELECT DISTINCT m.nome as nome_medico FROM medico m LEFT JOIN consulta c WHERE c.id_medico = m.id and data != curdate() or data is null;

Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Questões resolvidas

Considere a seguinte modelagem feita para o banco de dados de um sistema de estacionamento: Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo; tabela veiculo com campos placa, marca, modelo, cor, cpf_dono e nome_dono; estadia.placa_veiculo é chave estrangeira para veiculo.placa.
Assinale a alternativa que indica em que forma normal se encontra essa modelagem.
2FN.
1FN.
2FN.
3FN.
BCFN.

Considere um banco de dados para um sistema de controle de estacionamentos. Os requisitos básicos são: o sistema precisa armazenar o horário de início e de fim da estadia de cada veículo. Para cada estadia é preciso registrar qual o veículo que foi estacionado, assim como o dono desse veículo.
Assinale a alternativa que corresponda a uma modelagem para esse problema que esteja na BCFN.
Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo; tabela veiculo com campos placa, marca-modelo-cor e cpf_dono; estadia.placa_veiculo é chave estrangeira para veiculo.placa.
Descrição acessível: tabela veiculo com campos placa, marca, modelo, cor, cpf_dono, inicios_estadias e fins_estadias; tabela dono com campos cpf e nome_completo; estadia.cpf_dono é chave estrangeira para dono.cpf.
Descrição acessível: tabela estadia com campos inicio, fim, duracao e placa_veiculo; tabela veiculo com campos placa, marca, modelo, cor e cpf_dono; tabela dono com campos cpf e nome; estadia.placa_veiculo é chave estrangeira para veiculo.placa; veiculo.cpf_dono é chave estrangeira para dono.cpf.
Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo; tabela veiculo com campos placa, marca, modelo, cor e cpf_dono; tabela dono com campos cpf, nome_completo, primeiro_nome e sobre_nome; estadia.placa_veiculo é chave estrangeira para veiculo.placa; veiculo.cpf_dono é chave estrangeira para dono.cpf.

Com a SQL podemos utilizar sub-selects, que são “selects dentro de selects”.
Qual dos seguintes comandos exibe corretamente todos os dados dos voos ocorridos na data do voo mais antigo registrado?
SELECT * FROM voos WHERE data = (SELECT min(data) FROM voos) as data_mais_antiga;
SELECT * FROM voos WHERE data = (SELECT min(data) FROM voos) as data_mais_antiga;
SELECT * FROM voos WHERE data = (SELECT min(data)) as data_mais_antiga;
SELECT * FROM voos WHERE data = min(data);
SELECT min(data) FROM voos;

Considere a execução de uma sequência de comando, mas com uma parte dos comandos executados em uma sessão, e a outra parte executada em outra sessão.
Assinale a alternativa que indica a saída obtida para a execução do último comando da sequência.
+------+--------+| id | nome |+------+--------+| 1 | Fulano |+------+--------+
+------+--------+| id | nome |+------+--------+| 1 | Fulano |+------+--------+| id | nome |+------+--------+| 1 | Fulano |+------+--------+| 2 | Ciclano |+------+--------+
+------+----------+| id | nome |+------+----------+| 1 | Fulano |+------+----------+| 2 | Ciclano |+------+----------+| 3 | Beltrano |+------+----------+
You have an error in your SQL syntax
a. “Beltrano” não aparecerá pois foi inserido em uma transação abortada. “Ciclano” não aparecerá pois foi inserido em uma transação que está em outra sessão e que ainda não efetivada. Por fim, “Fulano” aparecerá, pois foi inserido sem o uso de transação.

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);
Assinale a alternativa que indica uma consulta válida para identificarmos os médicos que não possuem consulta marcada na data de hoje.
SELECT DISTINCT m.nome as nome_medico FROM medico m LEFT JOIN consulta c ON c.id_medico = m.id WHERE data != curdate() or data is null;
SELECT DISTINCT m.nome as nome_medico FROM medico m LEFT JOIN consulta c ON c.id_medico = m.id WHERE data != curdate() or data is null;
SELECT DISTINCT m.nome as nome_medico FROM medico m JOIN consulta c ON c.id_medico = m.id WHERE data != curdate() or data is null;
SELECT DISTINCT m.nome as nome_medico FROM medico m RIGHT JOIN consulta c ON c.id_medico = m.id WHERE data != curdate() or data is null;
SELECT DISTINCT m.nome as nome_medico FROM medico m LEFT JOIN consulta c WHERE c.id_medico = m.id and data != curdate() or data is null;

Prévia do material em texto

Quiz
REVISAR ENVIO DO TESTE: CLIQUE AQUI PARA INICIAR O QUIZ
Usuário
Curso
Teste
Iniciado
Enviado
Data de vencimento
Status Completada
Resultado da tentativa 10 em 10 pontos 
Tempo decorrido 25 minutos
Resultados exibidos Todas as respostas, Respostas enviadas, Respostas corretas, Comentários
Pergunta 1
Resposta Selecionada: b. 
Respostas: a. 
b. 
Considere a seguinte modelagem feita para o banco de dados de um sistema de
estacionamento:
Descrição acessível: tabela estadia com campos inicio, fim e placa_veiculo; tabela veiculo com campos placa,
marca, modelo, cor, cpf_dono e nome_dono; estadia.placa_veiculo é chave estrangeira para veiculo.placa.
Assinale a alternativa que indica em que forma normal se encontra essa
modelagem.
2FN.
1FN.
2FN.
Sala de Aula Tutoriais
1 em 1 pontos
https://senacsp.blackboard.com/webapps/blackboard/content/listContent.jsp?course_id=_211762_1&content_id=_9493136_1&mode=reset
https://www.ead.senac.br/
https://senacsp.blackboard.com/webapps/portal/execute/tabs/tabAction?tab_tab_group_id=_260_1
https://senacsp.blackboard.com/webapps/portal/execute/tabs/tabAction?tab_tab_group_id=_210_1
https://senacsp.blackboard.com/webapps/login/?action=logout
c. 
d. 
e. 
Comentário
da resposta:
3FN.
BCFN.
Essa modelagem não atende nem à 1FN.
b. Essa modelagem viola a 3FN, pois cpf_dono e nome_dono são
funcionalmente dependentes entre si. Como há uma violação da 3FN
e não há violações nem da 2FN nem da 1FN, então a modelagem
apresentada está na 2FN. A modelagem não viola a 1FN pois não há
campos mul�valorados. Ela também não viola a 2FN, o que ocorreria
se algum atributo não primário fosse funcionalmente dependente de
parte de alguma chave da tabela.
Pergunta 2
Resposta
Selecionada:
b.
Considere as seguintes tabelas:
CREATE TABLE bares (nome text, preco float);
CREATE TABLE restaurantes (nome text, preco float);
CREATE TABLE cafes (nome text, preco float);
Assinale a alternativa que forneça um significado plausível para o seguinte
comando:
SELECT nome, preco FROM (
SELECT nome, preco FROM bares WHERE preco = (SELECT min(preco) FROM
bares)
UNION
SELECT nome, preco FROM restaurantes WHERE preco = (SELECT min(preco)
FROM restaurantes)
UNION
SELECT nome, preco FROM cafes WHERE preco = (SELECT min(preco) FROM
cafes)
) as lazer WHERE preco < 100;
Um rapaz está procurando um lugar para marcar um encontro. Ele
está em dúvida entre um restaurante, um bar ou um café. Como o
rapaz está com pouco dinheiro, ele vai considerar somente as
opções mais baratas de cada categoria, e desde que o preço da
diversão não saia mais que 100 reais.
1 em 1 pontos
Respostas: a.
b.
c.
d.
e. 
Comentário da
resposta:
Um inves�dor está procurando um estabelecimento para comprar.
Ele está analisando um certo conjunto de restaurantes, bares e
cafés. Ele pretende comprar o mais barato entre todos esses
estabelecimentos, desde que o preço não ultrapasse 100 mil reais.
Um rapaz está procurando um lugar para marcar um encontro. Ele
está em dúvida entre um restaurante, um bar ou um café. Como o
rapaz está com pouco dinheiro, ele vai considerar somente as
opções mais baratas de cada categoria, e desde que o preço da
diversão não saia mais que 100 reais.
Um inves�dor pretende comprar um restaurante, um bar e um café.
Mas o café ele só vai comprar se custar menos de 100 mil reais.
Uma construtora aluga espaços para estabelecimentos comerciais,
como restaurantes, bares e cafés. Um analista dessa construtora está
montando um relatório com os aluguéis mais rentáveis para a
construtora.
A consulta não significa nada, pois possui um erro de sintaxe.
b. A consulta retornará a princípio três registros: o restaurante
mais barato, o bar mais barato e o café mais barato. Mas cada
uma dessas três linhas só será exibida se seu preço
correspondente for menor que 100.
Pergunta 3
Considere a seguinte tabela:
Tabela de municípios:
n
o
m
e
u
f
p
o
p
u
l
a
c
a
o
a
r
e
a
S
ã
o
P
a
S
P
1
2
2
5
2
1
5
2
1
1 em 1 pontos
ul
o
0
2
3
B
el
o
H
or
iz
o
nt
e
M
G
2
5
1
2
0
7
0
3
3
1
S
or
o
c
a
b
a
S
P
6
7
9
3
7
8
4
5
0
G
u
ar
at
in
g
u
et
á
S
P
1
2
1
7
9
8
7
5
2
R
a
n
c
h
ar
ia
S
P
2
9
7
0
7
1
5
8
7
Al
ta
m
ir
a
P
A
1
1
4
5
9
4
1
5
9
5
3
3
Fonte: https://cidades.ibge.gov.br/
É correto afirmar que essa tabela:
Resposta
Selecionada:
c. 
Respostas: a. 
b. 
c. 
d.
e. 
Comentário da
resposta:
Possui os campos “nome”, “uf”, “populacao” e “area”.
Possui 4 campos e 7 registros.
Possui 4 registros.
Possui os campos “nome”, “uf”, “populacao” e “area”.
U�liza todos os �pos de colunas presentes no MySQL: text e
integer.
Não é uma tabela; na verdade é uma tupla.
c. Cada coluna que vemos corresponde a um campo da tabela do
banco de dados. A primeira linha que vemos representa os nomes
dos campos; já as linhas subsequentes representam os registros da
tabela do banco de dados.
Pergunta 4
Resposta
Selecionada:
b.
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 |
+--------+-------------------------+
CREATE VIEW pratos_vegetarianos AS SELECT nome, pais_origem
FROM pratos WHERE vegetariano;
1 em 1 pontos
Respostas: a.
b.
c.
d.
e.
Comentário da
resposta:
CREATE SUBSELECT pratos_vegetarianos AS SELECT nome,
pais_origem AS pais FROM pratos WHERE vegetariano;
CREATE VIEW pratos_vegetarianos AS SELECT nome, pais_origem
FROM pratos WHERE vegetariano;
CREATE SUBSELECT pratos_vegetarianos AS SELECT nome,
pais_origem FROM pratos WHERE vegetariano;
CREATE VIEW pratos_vegetarianos FROM SELECT nome,
pais_origem FROM pratos WHERE vegetariano;
CREATE VIEW FOR pratos AS SELECT * FROM pratos_vegetarianos
WHERE vegetariano;
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 5
Resposta
Selecionada:
e.
Considere um banco de dados para um sistema de controle de estacionamentos.
Os requisitos básicos são: o sistema precisa armazenar o horário de início e de
fim da estadia de cada veículo. Para cada estadia é preciso registrar qual o veículo
que foi estacionado, assim como o dono desse veículo.
Assinale a alternativa que corresponda a uma modelagem para esse problema que
esteja na BCFN.
Descrição acessível: tabela estadia com campos inicio, fim e
placa_veiculo; tabela veiculo com campos placa, marca, modelo,
cor e cpf_dono; tabela dono com campos cpf e nome;
estadia.placa_veiculo é chave estrangeira para veiculo.placa;
veiculo.cpf_dono é chave estrangeira para dono.cpf.
1 em 1 pontos
Respostas: a.
b.
c.
d.
Descrição acessível: tabela estadia com campos inicio, fim e
placa_veiculo; tabela veiculo com campos placa, marca-modelo-
cor e cpf_dono; estadia.placa_veiculo é chave estrangeira para
veiculo.placa.
Descrição acessível: tabela veiculo com campos placa, marca,
modelo, cor, cpf_dono, inicios_estadias e fins_estadias; tabela
dono com campos cpf e nome_completo; estadia.cpf_dono é
chave estrangeira para dono.cpf.
Descrição acessível: tabela estadia com campos inicio, fim,
duracao e placa_veiculo; tabela veiculo com campos placa,
marca, modelo, cor e cpf_dono; tabela dono com campos cpf e
nome; estadia.placa_veiculo é chave estrangeira para
veiculo.placa; veiculo.cpf_dono é chave estrangeira para
dono.cpf.
Descrição acessível: tabela estadia com campos inicio, fim e
placa_veiculo; tabela veiculo com campos placa, marca, modelo,
cor e cpf_dono; tabela dono com campos cpf, nome_completo,primeiro_nome e sobre_nome; estadia.placa_veiculo é chave
estrangeira para veiculo.placa; veiculo.cpf_dono é chave
estrangeira para dono.cpf.
e.
Comentário
da resposta:
Descrição acessível: tabela estadia com campos inicio, fim e
placa_veiculo; tabela veiculo com campos placa, marca, modelo,
cor e cpf_dono; tabela dono com campos cpf e nome;
estadia.placa_veiculo é chave estrangeira para veiculo.placa;
veiculo.cpf_dono é chave estrangeira para dono.cpf.
e. Opção A viola a 1FN – campo multivalor (marca-modelo-cor).
Opção B viola a 1FN – campos com listas de valores
(inicios_estadias e fins_estadias). Opção C viola a 2FN – atributo
(duracao) é função de parte da chave (inicio, fim, placa). Opção D
viola a 3FN – atributos não chave (primeiro_nome e sobre_nome)
dependem de outro atributo não chave (nome_completo). Opção E
está na BCFN (não apresenta nenhuma violação à BCFN).
Pergunta 6
Com a SQL podemos utilizar sub-selects, que são “selects dentro de selects”.
Considere o exemplo:
 
> select * from municipio;
+----+------------+------+
| id | nome | uf |
+----+------------+------+
| 1 | São Paulo | SP |
| 2 | Osasco | SP |
| 3 | Mateiros | TO |
| 4 | Salvador | BA |
+----+------------+------+
 
> select * from municipio where uf = 'SP';
+----+------------+------+
| id | nome | uf |
+----+------------+------+
| 1 | São Paulo | SP |
| 2 | Osasco | SP |
+----+------------+------+
 
> select count(*) from (select * from municipio where uf = 'SP') as subtab;
+----------+
| count(*) |
+----------+
1 em 1 pontos
Resposta
Selecionada:
a.
Respostas: a.
b.
c. 
d. 
e. 
Comentário
da resposta:
| 2 |
+----------+
 
Considere agora a existência da tabela voos, com um voo por registro e com a
coluna data, representando a data do voo.
 
Qual dos seguintes comandos exibe corretamente todos os dados dos voos ocorridos
na data do voo mais an�go registrado?
SELECT * FROM voos WHERE data = (SELECT
min(data) FROM voos) as data_mais_antiga;
SELECT * FROM voos WHERE data = (SELECT
min(data) FROM voos) as data_mais_antiga;
SELECT * FROM voos WHERE data = (SELECT
min(data)) as data_mais_antiga;
SELECT * FROM voos WHERE data = min(data);
SELECT min(data) FROM voos;
SELECT * FROM voos WHERE min(data);
a. Como queremos ver todas as colunas, é necessário o “SELECT *”.
Como queremos ver apenas alguns registros (voos mais an�gos) é
preciso um WHERE limitando isso, impondo uma condição sobre a
data. Se já soubéssemos a data poderíamos fazer algo como “WHERE
data = ‘2010-01-01’”, mas no caso podemos trocar o literal ‘2010-01-
01’ pela expressão que nele resulta: “SELECT min(data) FROM voos”.
Pergunta 7
Considere a execução de uma sequência de comando, mas com uma parte dos
comandos executados em uma sessão, e a outra parte executada em outra
sessão. Os comandos estão listados abaixo, de forma que 1> indica o prompt da
sessão 1, enquanto 2> indica o prompt da sessão 2.
 
1> CREATE TABLE pessoa (id int, nome text);
1> INSERT INTO pessoa VALUES (1, 'Fulano');
1> BEGIN;
1> INSERT INTO pessoa VALUES (2, 'Ciclano');
2> BEGIN;
2> INSERT INTO pessoa VALUES (3, 'Beltrano');
2> ROLLBACK;
2> SELECT * FROM pessoa;
 
1 em 1 pontos
Resposta Selecionada:
a. 
Respostas:
a. 
b. 
c. 
d. 
e. 
Comentário da
resposta:
Assinale a alterna�va que indica a saída ob�da para a execução do úl�mo comando da
sequência.
+------+--------+
| id | nome |
+------+--------+
| 1 | Fulano |
+------+--------+
+------+--------+
| id | nome |
+------+--------+
| 1 | Fulano |
+------+--------+
Empty set
+------+---------+
| id | nome |
+------+---------+
| 1 | Fulano |
| 2 | Ciclano |
+------+---------+
+------+----------+
| id | nome |
+------+----------+
| 1 | Fulano |
| 2 | Ciclano |
| 3 | Beltrano |
+------+----------+
You have an error in your SQL syntax
a. “Beltrano” não aparecerá pois foi inserido em uma transação
abortada. “Ciclano” não aparecerá pois foi inserido em uma
transação que está em outra sessão e que ainda não efetivada.
Por fim, “Fulano” aparecerá, pois foi inserido sem o uso de
transação.
Pergunta 8
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);
Assinale a alternativa que indica uma consulta válida para identificarmos os
médicos que não possuem consulta marcada na data de hoje.
1 em 1 pontos
Resposta
Selecionada:
a.
Respostas: a.
b.
c.
d.
e.
Comentário
da resposta:
SELECT DISTINCT m.nome as nome_medico FROM medico m LEFT
JOIN consulta c ON c.id_medico = m.id WHERE data != curdate() or
data is null;
SELECT DISTINCT m.nome as nome_medico FROM medico m LEFT
JOIN consulta c ON c.id_medico = m.id WHERE data != curdate() or
data is null;
SELECT DISTINCT m.nome as nome_medico FROM medico m JOIN
consulta c ON c.id_medico = m.id WHERE data != curdate() or data
is null;
SELECT DISTINCT m.nome as nome_medico FROM medico m
RIGHT JOIN consulta c ON c.id_medico = m.id WHERE data !=
curdate() or data is null;
SELECT DISTINCT m.nome as nome_medico FROM medico m LEFT
JOIN consulta c WHERE c.id_medico = m.id and data != curdate()
or data is null;
Dada a modelagem apresentada, não é possível realizar a consulta
desejada com um único SELECT.
a. Com um LEFT JOIN, teremos os médicos associados a alguma
consulta e também os médicos sem consultas. Para que a
consulta devolva os médicos sem consulta alguma marcada,
temos o “data is null”. Para que a consulta devolva os médicos
com consulta marcada em outros dias que não o dia corrente,
temos o “data != curdate()”. Sem o DISTINCT, a consulta SQL
devolveria uma linha por consulta médica, o que poderia repetir os
nomes dos médicos. Como queremos listar somente os médicos,
o DISTINCT é desejável.
Pergunta 9
Analise a seguinte sequência de comandos realizada com o usuário administrador
(aquele que possui todos os privilégios sobre a instância do SGBD):
CREATE USER 'u1'@'%' IDENTIFIED BY 'senha';
CREATE USER 'u2'@'%' IDENTIFIED BY 'senha';
CREATE USER 'u3'@'%' IDENTIFIED BY 'senha';
CREATE DATABASE db1;
USE db1;
1 em 1 pontos
Resposta Selecionada: b. 
CREATE TABLE tb1 (id int, x int);
CREATE TABLE tb2 (id int, x int);
GRANT SELECT ON db1.* TO u1;
GRANT SELECT, DELETE ON db1.* TO u2;
GRANT UPDATE, INSERT ON db1.tb1 TO u3;
CREATE DATABASE db2;
USE db2;
CREATE TABLE tb1 (id int, x int);
CREATE ROLE r1;
GRANT ALL ON db2.* TO r1;
GRANT r1 TO u3;
SET DEFAULT ROLE ALL TO u3;
FLUSH PRIVILEGES;
Considerando que os comandos apresentados já foram executados (todos com
sucesso), associe a lista de comandos à lista de trechos das saídas produzidas
por esses comandos.
Lista de comandos (o sinal $ indica um comando realizado no sistema
operacional e o sinal > indica um comando realizado no MySQL):
(I) $ mysql -u u1 db2 -psenha
(II) $mysql -u u2 db1 -psenha
> DROP tb2;
(III) $ mysql -u u3 db1 -psenha
> UPDATE tb1 SET x = 2*x WHERE x > 10;
(IV) $ mysql -u u3 db2 -psenha
> UPDATE tb1 SET x = 2*x WHERE x > 10;
Lista de trechos das saídas:
( ) SELECT command denied to user
( ) Access denied for user
( ) Query OK
( ) You have an error in your SQL syntax
A sequência correta dessa associação é:
(III) (I) (IV) (II)
Respostas: a. 
b. 
c. 
d. 
e. 
Comentário
da resposta:
(IV) (I) (III) (II)
(III) (I) (IV) (II)
(IV) (I) (II) (III)
(I) (II) (III) (IV)
(IV) (III) (II) (I)
b. O comando I resultará em acesso negado, pois u1 não tem
nenhum privilégio sobre db2. O comando II resultará em erro de
sintaxe, pois o comando correto seria “DROP TABLE tb2”. O
comando III resultará em erro de permissão, pois, apesar de ter
direito ao UPDATE, u3 não possui direito de SELECT em db1.tb1, e
a condição do WHERE impõe a necessidade de leitura da tabela.
Já o comando IV resultará em sucesso, pois u3 recebeu os
privilégios de r1, que tem acesso total a db2.
Pergunta 10
Resposta Selecionada:
b. 
Respostas:
a.b. 
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?
id saldo 
----- --------
1324 5000.0 
7634 40000.0
id saldo 
----- --------
1324 5100.0 
7634 40200.0
id saldo 
----- --------
1324 5000.0 
7634 40000.0
1 em 1 pontos
c. 
d. 
e. 
Comentário da
resposta:
id saldo 
----- --------
1324 5100.0 
7634 40000.0
… You have an error in your SQL syntax ...
----- --------
1324 7634 
5000.0 40000.0
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á efe�vo. Por isso a saída final será igual
a saída do primeiro SELECT.
← OK

Mais conteúdos dessa disciplina