Buscar

Quiz1

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 18 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 18 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 18 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

20/09/2021 21:35 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash...
https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_21138075_1&course_id=_163573_1&content_id=_7241934_1&return_cont… 1/18
Usuário RAFAEL MOREIRA CHAVES
Curso 2103-PROGRAMAÇÃO DE BANCO DE DADOS
Teste Clique aqui para iniciar o Quiz
Iniciado 20/09/21 12:26
Enviado 20/09/21 21:33
Data de vencimento 20/09/21 23:59
Status Completada
Resultado da tentativa 9 em 10 pontos  
Tempo decorrido 9 horas, 7 minutos
Resultados exibidos Todas as respostas, Respostas enviadas, Respostas corretas, Comentários
Pergunta 1
Considere as seguintes tabelas pet e dono e o procedimento cria_pet_com_dono:
> describe pet;
+---------+-------------+------+-----+---------+----------------+
| Field   | Type        | Null | Key | Default | Extra          |
+---------+-------------+------+-----+---------+----------------+
| id        | int         | NO   | PRI | NULL    | auto_increment |
| nome    | varchar(20) | NO    | UNI | NULL    |                |
| id_dono | int               | YES  |        | NULL    |                |
+---------+-------------+------+-----+---------+----------------+
> describe dono;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int         | NO   | PRI | NULL    | auto_increment |
| nome  | varchar(20) | NO   | UNI | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
DELIMITER $$
CREATE PROCEDURE cria_pet_com_dono(IN nome_pet text, IN nome_dono text)
BEGIN
    DECLARE id_dono int;
1 em 1 pontos
20/09/2021 21:35 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash...
https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_21138075_1&course_id=_163573_1&content_id=_7241934_1&return_cont… 2/18
Resposta
Selecionada:
a.
Respostas: a.
b.
c.
    DECLARE dono_ja_existe int default False;
    DECLARE nome_repetido CONDITION FOR 1062;
    DECLARE CONTINUE HANDLER FOR nome_repetido SET dono_ja_existe = True;
    INSERT INTO dono (nome) VALUES (nome_dono);
    IF dono_ja_existe THEN
       SELECT id INTO id_dono FROM dono WHERE nome = nome_dono;
    ELSE
       SET id_dono = LAST_INSERT_ID();
    END IF;
    INSERT INTO pet (nome, id_dono) VALUES (nome_pet, id_dono);
END$$
DELIMITER ;
Esse procedimento insere um novo pet (com um nome informado ao procedimento) para
um novo dono (cujo nome também é informado ao procedimento); porém, como a tabela
dono não aceita nomes duplicados, o procedimento toma um cuidado caso o nome do
dono informado já exista na tabela: em vez de criar um novo dono, o procedimento cria um
novo pet para esse dono já existente. No entanto, o procedimento apresentado não toma
nenhuma precaução para o caso de receber um nome de pet já existente.
Sobre essa problemática, assinale a alternativa correta.
A inserção de um pet com nome repetido a princípio dispara um erro, mas o handler
nome_repetido faz com que o erro seja abafado; ou seja, se o usuário tentar inserir
um pet com um nome já existente, o procedimento não vai disparar nenhum erro,
mas também não vai inserir o registro de pet.
A inserção de um pet com nome repetido a princípio dispara um erro, mas o handler
nome_repetido faz com que o erro seja abafado; ou seja, se o usuário tentar inserir
um pet com um nome já existente, o procedimento não vai disparar nenhum erro,
mas também não vai inserir o registro de pet.
O procedimento se chama “cria pet”, então o comportamento atual é bem razoável:
caso não seja possível criar um novo pet com o nome fornecido (pois é um nome já
usado), o procedimento dispara um erro.
Como o handler declarado abafa a propagação do erro, o procedimento acaba
inserindo pets com nomes repetidos.
20/09/2021 21:35 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash...
https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_21138075_1&course_id=_163573_1&content_id=_7241934_1&return_cont… 3/18
d.
e.
Comentário
da
resposta:
A inserção de um pet com nome repetido a princípio dispara um erro, mas o handler
nome_repetido faz com que o erro seja abafado; ou seja, se o usuário tentar inserir
um pet com um nome já existente, o procedimento não vai disparar nenhum erro,
mas também não vai inserir o registro de pet. Nesse caso em que o pet não é
inserido, o procedimento, de forma consistente, também nunca criará um novo
dono.
O handler existente garante que o procedimento não terminará em erro. Assim, caso
um nome de pet repetido seja informado, o pet será atualizado, tendo seu dono
alterado de acordo com o argumento nome_dono.
No MySQL, o handler não é associado a uma tabela em particular, somente a um
determinado tipo de erro. Com isso, o mesmo erro (violação de unicidade) ocorrido
na tabela pet ativará o mesmo handler que foi projetado para lidar com a violação de
unicidade na tabela dono. Como o handler é do tipo CONTINUE, temos que uma
inserção que viole a unicidade, embora não seja efetiva (devido à restrição de
unicidade), não vai disparar um erro para o cliente do procedimento. Note que, com o
nome do pet repetido ou não, um nome inédito de dono causará a inserção de um
registro de dono. Como a inserção de pet repetido não dispara erro, a eventual
inserção de um dono não será revertida. Com essas considerações, temos que a
alternativa correta é a “a”.
Pergunta 2
Considere as seguintes situações:
 
A – Uma aplicação web é usada por vários diplomatas para a pesquisa de comunicações
diplomáticas sigilosas. Há um módulo de entrada de novas comunicações, mas a
aplicação nunca exclui uma comunicação. Contudo, um discurso sumiu do banco de
dados. Se não foi da aplicação, de onde veio o comando de deleção?
 
B – Uma aplicação web é usada por escreventes para o gerenciamento de penas impostas
por juízes e usada pelos juízes para consultar essas penas. A aplicação permite incluir,
alterar e excluir penas. Um juiz percebeu que uma pena foi indevidamente excluída. Qual
escriturário excluiu a pena?
 
C – Uma empresa que mantém um sistema web está recebendo reclamações de que seu
sistema está lento, contudo as reclamações são vagas, ninguém fala exatamente o que
está lento. O que será que está lento?
 
Considere agora os seguintes logs nativos do MySQL:
I – general log.
II – slow query log.
1 em 1 pontos
20/09/2021 21:35 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash...
https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_21138075_1&course_id=_163573_1&content_id=_7241934_1&return_cont… 4/18
Resposta Selecionada:
b. 
Respostas:
a. 
b. 
c. 
d. 
e. 
Comentário
da
resposta:
III – error log.
IV – binary log.
V – DDL log.
 
Assinale a alternativa que relaciona os logs que melhor poderão ajudar em cada situação.
A – I.
B – nenhum dos logs será conclusivo.
C – II.
A – I.
B – I.
C – II.
A – I.
B – nenhum dos logs será conclusivo.
C – II.
A – nenhum dos logs ajudará.
B – nenhum dos logs ajudará.
C – nenhum dos logs ajudará.
A – I.
B – V.
C – III.
A – III.
B – I.
C – IV.
A – Em caso de a aplicação não possuir funcionalidade de exclusão, é
interessante verificar o usuário do banco que disparou a ação e de que host
esse usuário estava agindo. Para isso, o general log pode ajudar.
 
B – Os usuários da aplicação (escreventes, juízes) são um conceito
pertencente à aplicação, sendo invisíveis para os logs do MySQL. Portanto,
nenhum log do MySQL revelará o usuário responsável pela ação.
 
C – Se o sistema está lento, uma possibilidade é que a causa seja o banco
de dados. Nesse caso, o slow query log mostrará as consultas SQL mais
lentas, permitindo conferir essa hipótese.
Pergunta 3
Considere o seguinte procedimento:
DELIMITER $$
1 em 1 pontos
20/09/2021 21:35 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash...
https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_21138075_1&course_id=_163573_1&content_id=_7241934_1&return_cont…5/18
Resposta Selecionada: e. 
Respostas: a. 
b. 
Execução 1:
Execução 2:
CREATE PROCEDURE insere_usuarios(IN quantidade int)
BEGIN
    DECLARE i INT DEFAULT 1;
    WHILE i <= quantidade DO
        INSERT INTO usuario (nome) VALUES (CONCAT('Usuário ', i));
        IF i < 10 THEN
            SET i = i + 1;
        END IF;
    END WHILE;
END$$
DELIMITER ;
Considere agora as seguintes execuções do procedimento acima:
CALL insere_usuarios(9);
CALL insere_usuarios(10);
Considere agora as seguintes afirmações:
(I) A execução 1 insere 9 registros na tabela.
(II) As execuções 1 e 2 continuarão em execução para sempre ou até serem interrompidas
ou até exaurirem os recursos do sistema.
(III) A execução 2 continuará em execução para sempre ou até ser interrompida ou até
exaurir os recursos do sistema. Isto pode ocasionar a inserção de mais de 10 registros na
tabela usuário.
(IV) A execução 2 continuará em execução para sempre ou até ser interrompida ou até
exaurir os recursos do sistema. Nessa situação, como o fim do procedimento não é
atingido, nenhum registro é de fato inserido na tabela.
Assinale a alternativa que contenha todas as afirmações verdadeiras.
I; III.
II; IV.
II; III.
20/09/2021 21:35 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash...
https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_21138075_1&course_id=_163573_1&content_id=_7241934_1&return_cont… 6/18
c. 
d. 
e. 
Comentário
da
resposta:
I.
I; IV.
I; III.
A execução 1 insere exatamente 9 registros e nunca entrará em loop infinito.
A execução 2 entra em loop infinito. Se for disparada fora do contexto de uma
transação, cada INSERT insere um registro na tabela, e os registros vão sendo
inseridos até que a execução seja interrompida ou que os recursos do sistema sejam
exauridos.
Pergunta 4
Resposta
Selecionada:
a.
Respostas: a.
b.
c. 
d. 
e. 
Comentário
da
Considere as seguintes declarações:
 
CREATE TRIGGER audita_insercao BEFORE INSERT ON produto FOR EACH ROW
  INSERT INTO produto_auditoria (data_hora_alteracao, usuario, evento, id_produto)
VALUES
   (NOW(), CURRENT_USER(), 'INCLUSAO', NEW.id);
 
CREATE TRIGGER audita_exclusao BEFORE DELETE ON produto FOR EACH ROW
FOLLOWS audita_insercao
  INSERT INTO produto_auditoria (data_hora_alteracao, usuario, evento, id_produto)
VALUES
   (NOW(), CURRENT_USER(), 'EXCLUSAO', OLD.id);
 
Sobre a execução desses comandos, é correto dizer:
Ambas as declarações funcionam, mas audita_exclusao nunca será
disparada.
Ambas as declarações funcionam, mas audita_exclusao nunca será
disparada.
Ambas as declarações funcionam, mas audita_exclusao dará erro quando
disparada.
Há um erro de sintaxe em audita_insercao.
As palavras NEW e OLD foram usadas indevidamente.
A declaração de audita_exclusao resulta em erro.
0 em 1 pontos
20/09/2021 21:35 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash...
https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_21138075_1&course_id=_163573_1&content_id=_7241934_1&return_cont… 7/18
resposta: A palavra-chave FOLLOWS deve apontar para um gatilho que opere com a
mesma tabela e comando (INSERT, UPDATE, DELETE) que o gatilho sendo
declarado. Isso quer dizer queaudita_exclusao não pode seguir (FOLLOWS)
audita_insercao, pois são gatilhos de comandos diferentes (um é INSERT e o
outro éDELETE). Assim, a alternativa correta é a “e”, pois a declaração
deaudita_exclusao produz o seguinte erro:
ERROR 3011 (HY000): Referenced trigger 'audita_insercao' for the given ac�on �me
and event type does not exist.
Pergunta 5
 
Encoders e decoders básicos
 
A tabela abaixo mostra diferentes caracteres com seus code points em Unicode e os bytes
(usando notação hexadecimal) correspondentes em diferentes charsets (asteriscos indicam
que o caractere não pode ser representado naquele charset). Note que alguns charsets
possuem comprimento variável.
Char Code point ascii gb2312 utf-8
A U+0041 41 41 41
á U+00E1 * A8 A2 C3 A1
气 U+6C14 * C6 F8 E6 B0 94
U+1D11E * F0 9D 84 9E 34 D8 1E DD
Todos esses asteriscos deixam claro que alguns charsets, como o ASCII, não representam
todos os caracteres Unicode. Os charsets UTF, contudo, são projetados para tratar de todos
os code points do Unicode.
 
gb2312 – padrão legado para codificar ideogramas de chinês simplificado.
 
utf-8 – O charset de 8 bits mais comum na web, retrocompatível com ASCII puro (texto em
ASCII puro é válido no UTF-8).
 
(Fonte: RAMALHO, Luciano. Text versus bytes. In: Fluent Python: clear, concise, and effective programming. Sebastopol: O’Reilly Media,
2015.)
 
Para complementar o texto anterior, Unicode é um padrão que atribui um código (code
point) a cada caractere existente.
 
Por fim, considere a seguinte sequência de comandos:
 
1 em 1 pontos
20/09/2021 21:35 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash...
https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_21138075_1&course_id=_163573_1&content_id=_7241934_1&return_cont… 8/18
Resposta
Selecionada:
c.
Respostas: a.
b.
1 > CREATE TABLE tab (info blob);
 
2 > INSERT INTO tab (info) VALUES ('O mundo é bão Sebastião');
 
3 > table tab;
+---------------------------+
| info                      |
+---------------------------+
| O mundo é bão Sebastião   |
+---------------------------+
 
4 > SELECT CONVERT(info USING utf8) as decodificando_com_utf8 FROM tab;
+----------------------------+
| decodificando_com_utf8     |
+----------------------------+
| O mundo é bão Sebastião    |
+----------------------------+
 
5 > SELECT CONVERT(info USING ascii) as decodificando_com_ascii FROM tab;
+----------------------------+
| decodificando_com_ascii    |
+----------------------------+
| O mundo ?? b??o Sebasti??o |
+----------------------------+
 
Considerando o texto fornecido e o estudado no capítulo 7, assinale a alternativa que melhor explica os
resultados obtidos na sequência de comandos.
O texto “O mundo é bom Sebas�ão” é armazenado em uma coluna do �po blob
(sem charset definido). Mas, ainda assim, o charset u�lizado é o UTF-8, devido à
configuração da variável de ambiente LANG. Na hora de ler a tabela sem
especificar um charset (comando 3), a leitura produz um resultado legível, pois a
leitura u�liza o charset padrão. A leitura u�lizando o charset UTF-8 (comando 4)
produz um resultado legível. Por fim, ao decodificar os bytes armazenados
u�lizando o charset ASCII (comando 5), temos um resultado não totalmente
legível.
O texto “O mundo é bão Sebas�ão” é armazenado u�lizando o charset UTF-8
(único suportado pelo MySQL). Como os bytes foram produzidos com charset UTF-
8, a leitura u�lizando esse charset (comandos 3 e 4) produz um resultado legível.
Por fim, ao decodificar os bytes armazenados u�lizando o charset ASCII (comando
5), temos um resultado não totalmente legível, pois o charset UTF-8 é
retrocompa�vel com ASCII puro.
20/09/2021 21:35 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash...
https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_21138075_1&course_id=_163573_1&content_id=_7241934_1&return_cont… 9/18
c.
d.
e.
Comentário
da
resposta:
O texto “O mundo é bão Sebas�ão” é armazenado em uma coluna do �po blob
(caracteres Unicode). Por isso, na hora de ler a tabela sem especificar um charset
(comando 3), temos um resultado legível. Como os bytes foram produzidos com
charset UTF-8, a leitura u�lizando esse charset (comando 4) produz um resultado
legível. Por fim, ao decodificar os bytes armazenados u�lizando o charset ASCII
(comando 5), temos um resultado não totalmente legível, pois o charset UTF-8 é
retrocompa�vel com ASCII puro.
O texto “O mundo é bom Sebas�ão” é armazenado em uma coluna do �po blob
(sem charset definido). Mas, ainda assim, o charset u�lizado é o UTF-8, devido à
configuração da variável de ambiente LANG. Na hora de ler a tabela sem
especificar um charset (comando 3), a leitura produz um resultado legível, pois a
leiturau�liza o charset padrão. A leitura u�lizando o charset UTF-8 (comando 4)
produz um resultado legível. Por fim, ao decodificar os bytes armazenados
u�lizando o charset ASCII (comando 5), temos um resultado não totalmente
legível.
O texto “O mundo é bão Sebas�ão” é armazenado em uma coluna do �po blob
(sem charset), mas, ainda assim, o charset u�lizado é o ASCII, devido à
configuração da variável de ambiente LANG. Como os bytes foram produzidos com
charset ASCII, a leitura u�lizando esse charset (comandos 3 e 4) produz um
resultado legível, uma vez que o UTF-8 é retrocompa�vel com ASCII puro. Por fim,
ao decodificar os bytes armazenados u�lizando o charset ASCII, temos um
resultado não totalmente legível, também pelo fato de o UTF-8 ser
retrocompa�vel com ASCII puro.
O texto “O mundo é bão Sebas�ão” é armazenado em uma coluna do �po blob
(sem charset), mas, ainda assim, o charset u�lizado é o UTF-8, devido à
configuração da variável de ambiente LANG. Na hora de ler a tabela sem
especificar um charset (comando 3), a leitura produz um resultado legível, pois a
leitura também u�liza o charset padrão. Como os bytes foram produzidos com
charset UTF-8, a leitura u�lizando esse charset (comando 4) produz um resultado
legível. Por fim, ao decodificar os bytes armazenados u�lizando o charset ASCII,
temos um resultado não totalmente legível devido a um erro de sintaxe no
comando.
Pelo texto de apoio, vemos que o charset ASCII é incapaz de lidar com textos
acentuados. Portanto, é possível determinar, pelos comandos 2 e 3, que o ASCII não é
o charset u�lizado na escrita nos dados. O fato de o UTF-8 ser retrocompa�vel com o
ASCII significa que qualquer coisa escrita com ASCII consegue ser lida com o UTF-8,
mas não é o que faz a escrita em UTF-8 não ser legível no ASCII. Pelo texto do capítulo
7, também sabemos que o MySQL é capaz de lidar com diferente charsets. Com esses
raciocínios, é possível determinar a alterna�va “c” como correta em detrimento das
outras.
Pergunta 6
Considere as seguintes funções:
CREATE FUNCTION quadrado(x int) RETURNS int deterministic RETURN x*x;
CREATE FUNCTION porcentagem_aleatoria() returns char(5) deterministic return
ROUND(RAND()*100);
1 em 1 pontos
20/09/2021 21:35 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash...
https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_21138075_1&course_id=_163573_1&content_id=_7241934_1&return_con… 10/18
Resposta Selecionada: d. 
Respostas: a. 
b. 
c. 
d. 
e. 
Comentário
da
resposta:
Tomando as funções acima, assinale a alternativa que apresenta a correta associação entre
comandos e saídas válidas para o comando associado.
Comandos:
(I) SELECT porcentagem_aleatoria;
(II) CALL quadrado(100);
(III) CALL porcentagem_aleatoria();
(IV) SELECT quadrado(100);
Saídas:
(A) 10000
(B) Unknown column 'porcentagem_aleatoria'
IV-A; I-B.
II-A; III-B.
I-A; IV-B.
IV-A; III-B.
IV-A; I-B.
II-A; I-B.
O comando I produz a saída B pois está faltando o par de parênteses na chamada da
função, de forma que o nome da função fica sintaticamente parecendo o nome de
uma coluna.
Os comandos II e III produzem o erro “PROCEDURE does not exist” pois o comando
CALL serve para a invocação de procedimentos, e não de funções.
O comando IV está correto e produz a saída desejada: o quadrado de 100, que é
10000.
Pergunta 7
Nome Descrição
AND, && “E” lógico
NOT, ! Negação
OR, || “OU” lógico
Operadores lógicos
1 em 1 pontos
20/09/2021 21:35 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash...
https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_21138075_1&course_id=_163573_1&content_id=_7241934_1&return_con… 11/18
Resposta Selecionada:
c. 
Respostas:
a. 
b. 
(Traduzido da documentação oficial do MySQL. Disponível em: https://dev.mysql.com/doc/refman/8.0/en/logical-operators.html. Acesso
em: 18 out. 2020.)
Classificação de triângulos
O triângulo é escaleno quando as medidas dos lados são todas diferentes.
O triângulo é isósceles quando possui pelo menos dois lados congruentes, ou seja, com
a mesma medida.
O triângulo é equilátero quando possui os três lados com as mesmas medidas.
(Brasil Escola. Disponível em: https://brasilescola.uol.com.br/matematica/classificacao-de-triangulos.htm. Acesso em: 5 jan. 2021.)
Considere as seguintes definições de funções e suas lacunas:
CREATE FUNCTION __I__(lado1 double, lado2 double, lado3 double) RETURNS int
deterministic RETURN lado1 = lado2 and lado2 = lado3;
CREATE FUNCTION ___II___(lado1 double, lado2 double, lado3 double) RETURNS int
deterministic RETURN lado1 = lado2 _III__ lado1 = lado3 __IV__ lado2 = lado3 __V___;
CREATE FUNCTION escaleno(lado1 double, lado2 double, lado3 double) RETURNS int
deterministic RETURN lado1 != lado2 and lado2 != lado3 ___VI___;
Agora, considerando os textos apresentados, assinale a alternativa que preenche
corretamente as lacunas.
(I) equilatero
(II) isosceles
(III) or
(IV) or
(V) vazia
(VI) and lado1 != lado3
(I) equilatero
(II) isosceles
(III) or
(IV) or
(V) vazia
(VI) vazia
(I) isosceles
(II) equilatero
(III) or
(IV) or
(V) vazia
(VI) and lado1 != lado3
20/09/2021 21:35 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash...
https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_21138075_1&course_id=_163573_1&content_id=_7241934_1&return_con… 12/18
c. 
d.
e.
Comentário
da resposta:
(I) equilatero
(II) isosceles
(III) or
(IV) or
(V) vazia
(VI) and lado1 != lado3
(I) equilatero
(II) isosceles
(III) or
(IV) or
(V) and (lado1 != lado2 or lado1 != lado3 or lado2 != lado3)
(VI) and lado1 != lado3
(I) equilatero
(II) isosceles
(III) and
(IV) and
(V) and (lado1 != lado2 or lado1 != lado3 or lado2 != lado3)
(VI) and lado1 != lado3
A lacuna I é equilatero, pois a função define que os três lados são iguais.
A lacuna II é isosceles, pois não há alternativa válida para que a função
defina um triângulo escaleno ou equilátero.
A lacunas III e IV são preenchidas com or, pois o triângulo isósceles só
precisa ter um par de lados iguais.
A lacuna V é vazia, pois não se impõe ao triângulo isósceles que ele tenha
apenas dois lados iguais.
A lacuna VI é and lado1 != lado3, pois se lado1 != lado2 e lado2 != lado3, mas lado1
= lado3, o triângulo não tem todos os lados diferentes.
Pergunta 8
mysql> SELECT 3/5;
-> 0.60
A divisão por zero produz um resultado NULL:
Operadores aritméticos: Divisão
mysql> SELECT 102/(1-1);
  -> NULL
1 em 1 pontos
20/09/2021 21:35 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash...
https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_21138075_1&course_id=_163573_1&content_id=_7241934_1&return_con… 13/18
Resposta Selecionada:
e. 
Respostas:
a. 
Uma divisão é calculada com aritmética BIGINT apenas se realizada em um
contexto em que seu resultado é convertido em um inteiro.
DIV
Divisão inteira. Descarta do resultado da divisão qualquer parte fracionária à
direita da vírgula decimal.
Se qualquer operando tiver um tipo não inteiro, os operandos serão convertidos
em DECIMAL e divididos usando a aritmética DECIMAL antes de converter o
resultado em BIGINT. Se o resultado exceder a faixa BIGINT, ocorrerá um erro.
mysql> SELECT 5 DIV 2, -5 DIV 2, 5 DIV -2, -5 DIV -2;
-> 2, -2, -2, 2
(Traduzido da documentação oficial do MySQL. Disponível em: https://dev.mysql.com/doc/refman/8.0/en/arithmetic-
functions.html. Acesso em: 18 out. 2020.)
Considere os seguintes comandos:
(I) SELECT 42/2;
(II) SELECT 42 DIV 2;
(III) SELECT 43/2;
(IV) SELECT 43 DIV 2;
(V) SELECT 42/0;
(VI) SELECT 42 DIV 0;
Assinale a alternativa que traça a correspondência correta entre os comandos e as saídas.
(I) 21.0000
(II) 21
(III) 21.5000
(IV) 21
(V) NULL
(VI) NULL
(I) 21.0000
(II) 21
(III) 21.5000
(IV) 21
(V) NULL
(VI) syntaxe error
20/09/2021 21:35 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash...
https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_21138075_1&course_id=_163573_1&content_id=_7241934_1&return_con…14/18
b. 
c. 
d. 
e. 
Comentário da
resposta:
(I) 21.0000
(II) 21
(III) 21.5000
(IV) 21.5000
(V) NULL
(VI) NULL
(I) 21.0000
(II) 21
(III) 21.5000
(IV) 21
(V) 0
(VI) 0 
(I) 21.0000
(II) syntaxe error
(III) 21.5000
(IV) syntaxe error
(V) NULL
(VI) NULL
(I) 21.0000
(II) 21
(III) 21.5000
(IV) 21
(V) NULL
(VI) NULL
Cada um dos comandos (I-VI) produz os seguintes resultados, com as
respectivas justificativas:
(I) SELECT 42/2; -- retorna 21.0, pois / é divisão fracionária
(II) SELECT 42 DIV 2; -- retorna 21, pois DIV é divisão inteira
(III) SELECT 43/2; -- retorna 21.5, pois / é divisão fracionária
(IV) SELECT 43 DIV 2; -- retorna 21, pois DIV é divisão inteira
(V) SELECT 42/0; -- divisão por zero retorna NULL
(VI) SELECT 42 DIV 0; -- divisão por zero retorna NULL
Pergunta 9
Considere as seguintes sequências de comandos.
Sequência 1:
1 em 1 pontos
20/09/2021 21:35 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash...
https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_21138075_1&course_id=_163573_1&content_id=_7241934_1&return_con… 15/18
TRUNCATE pet;
TRUNCATE dono;
DROP procedure novo_pet_para_dono;
 INSERT INTO dono(nome) VALUES ('nome_dono');
 DELIMITER $$
CREATE PROCEDURE novo_pet_para_dono(IN nome_dono text)
BEGIN
    DECLARE nome_pet text;
    DECLARE id_dono int;
    SET nome_pet = CONCAT('Pet ', ROUND(RAND()*100));
    SELECT id INTO id_dono FROM dono WHERE nome = nome_dono;
    IF id_dono is not NULL THEN
        INSERT INTO pet (nome, id_dono) VALUES (nome_pet, id_dono);
    END IF;
END$$
DELIMITER ;
 SELECT COUNT(*) FROM pet;
Sequência 2:
TRUNCATE pet;
TRUNCATE dono;
DROP procedure novo_pet_para_dono;
DELIMITER $$
CREATE PROCEDURE novo_pet_para_dono(IN nome_dono text)
BEGIN
    DECLARE nome_pet text;
    DECLARE id_dono int;
    SET nome_pet = CONCAT('Pet ', ROUND(RAND()*100));
20/09/2021 21:35 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash...
https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_21138075_1&course_id=_163573_1&content_id=_7241934_1&return_con… 16/18
Resposta Selecionada:
e. 
Respostas:
a. 
b. 
c. 
d. 
e. 
Comentário
da
resposta:
    SELECT id INTO id_dono FROM dono WHERE nome = nome_dono;
    IF id_dono is not NULL THEN
        INSERT INTO pet (nome, id_dono) VALUES (nome_pet, id_dono);
    END IF;
END$$
DELIMITER ;
 CALL novo_pet_para_dono('nome_dono');
 SELECT COUNT(*) FROM pet;
 
Assinale a alternativa que apresenta corretamente a saída do último comando de cada sequência.
Sequência 1 – 0.
Sequência 2 – 0.
Sequência 1 – erro de sintaxe.
Sequência 2 – 0.
Sequência 1 – 1.
Sequência 2 – 1.
Sequência 1 – 0.
Sequência 2 – 1.
Sequência 1 – 1.
Sequência 2 – 0.
Sequência 1 – 0.
Sequência 2 – 0.
Como o IF é avaliado somente quando da execução do procedimento, e não de sua
declaração, a sequência 1 acaba não inserindo nenhum registro, pois nem sequer
invoca o procedimento.
Já a sequência 2 não insere nenhum registro, pois quando o procedimento é
invocado não existe registro com nome “nome_dono” na tabela dono.
20/09/2021 21:35 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash...
https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_21138075_1&course_id=_163573_1&content_id=_7241934_1&return_con… 17/18
Pergunta 10
Resposta
Selecionada:
d.
Respostas: a.
b.
c. 
d.
Considere o seguinte procedimento:
DELIMITER $$
CREATE PROCEDURE cria_um_pet_para_cada_dono_ja_existente()
BEGIN
  DECLARE id_do_dono int;
  DECLARE done int default false;
  DECLARE cursor_dono CURSOR FOR SELECT id FROM dono;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
  OPEN cursor_dono;
  FETCH cursor_dono INTO id_do_dono;
  WHILE not done DO
    INSERT INTO pet (nome, id_dono) VALUES (CONCAT('Pet ', id_do_dono), id_do_dono);
    FETCH cursor_dono INTO id_do_dono;
  END WHILE;
  CLOSE cursor_dono;
END$$
DELIMITER ;
Assinale a alternativa que apresente o comando (ou a sequência de comandos) cujos efeitos são
equivalentes (em termos de dados inseridos na tabela pet) à execução do procedimento.
INSERT INTO pet (nome, id_dono) SELECT CONCAT('Pet ', id), id FROM dono;
INSERT INTO pet (nome, id_dono) VALUES SELECT CONCAT('Pet ', id), id FROM
dono;
INSERT INTO pet (nome, id_dono) VALUES CONCAT('Pet ', id), id FROM dono;
SELECT CONCAT('Pet ', id), id INTO @valores FROM dono;
INSERT INTO pet (nome, id_dono) VALUES @valores;
INSERT INTO pet (nome, id_dono) SELECT CONCAT('Pet ', id), id FROM dono;
1 em 1 pontos
20/09/2021 21:35 Revisar envio do teste: Clique aqui para iniciar o Quiz &ndash...
https://senacsp.blackboard.com/webapps/assessment/review/review.jsp?attempt_id=_21138075_1&course_id=_163573_1&content_id=_7241934_1&return_con… 18/18
Segunda-feira, 20 de Setembro de 2021 21h34min47s BRT
e.
Comentário
da resposta:
INSERT INTO pet (nome, id_dono) SELECT 'Pet ' + id, id FROM dono;
Além de executar corretamente, a alternativa “d” é a única que produz uma
execução bem-sucedida. As outras alternativas possuem problemas de sintaxe.

Outros materiais