Num banco de dados relacional, considere uma tabela R, com d...
Nesse cenário analise os comandos a seguir.
I.
II.
III.
Assinale a lista que contém o número de registros deletados em cada um dos comandos I, II e III, respectivamente, quando executados separadamente e usando a mesma instância inicial descrita.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Opção I e II o SELECT traz todos os registros e por consequência todos são deletados.
Já na opção II esse somente 5 registros são retornados.
Fiz um produto cartesiano para entender.
---------------------------------------
PedroJoão PedroJoão
PedroJoão PedroJoão
PedroJoão PedroJoão
PedroJoão PedroJoão
PedroJoão MariaIda
PedroJoão MariaIda
PedroJoão MariaIda
PedroJoão MariaIda
PedroJoão EdsonWilson
PedroJoão EdsonWilson
PedroJoão EdsonMaria
PedroJoão EdsonMaria
MariaIda PedroJoão
MariaIda PedroJoão
MariaIda PedroJoão
MariaIda PedroJoão
MariaIda MariaIda
MariaIda MariaIda
MariaIda MariaIda
MariaIda MariaIda
MariaIda EdsonWilson
MariaIda EdsonWilson
MariaIda EdsonMaria
MariaIda EdsonMaria
EdsonWilson PedroJoão
EdsonWilson PedroJoão
EdsonWilson MariaIda
EdsonWilson MariaIda
EdsonWilson EdsonWilson
EdsonWilson EdsonMaria
EdsonMaria PedroJoão
EdsonMaria PedroJoão
EdsonMaria MariaIda
EdsonMaria MariaIda
EdsonMaria EdsonWilson
EdsonMaria EdsonMaria
---------------------------------------
Na comparação é considerado a letra na ordem alfabética e não a quantidade de caracteres.
Ordenando do maior para o menor (ordem decrescente):
· “PedroJoão” é maior que “MariaIlda” (2x);
· “MariaIlda” é maior que “EdsonWilson” (2x);
· “EdsonWilson” é maior que “EdsonMaria”; e
· “EdsonMaria” não é maior que nada, no máximo é igual a “EdsonMaria”, ou seja, não é retornado no SELECT.
Número de registros que serão deletados igual a 5.
(2x) = 2 registros na tabela.
Na hora da prova não vai da de fazer como o Diego flw para a letra B.
Primeiro, no sql se você compara duas "strings" o que vale é a ordem delas, assim 'bab' > 'baa' que é True; A primeira e a segunda é igual, já o último b é maior que a. Outro exemplo, 'caad' > 'daad' que é Falso. Já de cara o c é menor que o d.
Assim a forma mais fácil seria essa:
Pedro - P
Maria - M
Edson - E
Como sempre inicia com R.A e r1.A queremos ver se R.A > r1.A temos as seguintes possibilidades;
Para o Pedro:
P > M (quando r1.B é Ida) - 2 vzs
P > E (quando r1.B for Maria E Wilson) - 2 vzs
Avaliando o caso da Maria, ela sempre será maior que E, uma vez que r1.A sempre que for E
M > E nos dois casos - 2vzs;
Veja que os casos quando r1.A for Edilson será duplicado na tabela resultado, mas não importa.
Assim teremos a exclusão da linha 2, 3, 4, 5 e 6 totalizando 5.
Resolvendo no modo turbo:
1) Esse tipo de consulta sempre deletará TODOS os resultados quando não tiver o valor NULL.
Descartamos a A, B e C
2) Está usando o simbolo > (maior) e não o >= (maior igual), ou seja, o MAIOR VALOR nunca será maior que ele mesmo.
Logo não pode retornar 6 opções.
Descartamos a E e sobrou a D
Comando II
quando são nomes, tem que olhar a ordem alfabética de cada nome, letra por letra até a achar a letra que vem depois do alfabeto,a letra que vem depois no alfabeto é maior
R r1
PedroJoão PedroJoão
MariaIda MariaIda
MariaIda MariaIda
PedroJoão PedroJoão
EdsonWilson EdsonWilson
EdsonMaria EdsonMaria
agora analisando cada linha de R com todas a de r1
R r1
"EdsonMaria" não é maior que PedroJoão
MariaIda
MariaIda
PedroJoão
agora analisando
R r1
"EdsonMaria" EdsonWilson
Até o final do nome "Edson" é tudo igual, mas chegando em "M" de "Maria" , "M" vem antes no alfabeto do "W" (M é menor de W) de Wilson, logo, "EdsonMaria" < EdsonWilson
ainda não satisfazendo a condição. Por fim,
R r1
"EdsonMaria" EdsonMaria são iguais, logo, nenhum é maior que o outro
Logo, como " EdsonMaria" não é maior que ninguém, essa linha não será deletada da tabela R, apenas 5 linhas serão deletadas na comando "II"
GAB D
O item II retorna zero linhas! Não tem produto cartesiano nessa questão, ele apenas faz um alias r1 para a tabela R e compara ela com ela mesma. Não tem como R.A+R.B ser maior que r1.A+r1.B porque são iguais!
A resposta é 6,0,6
A questão deveria ser cancelada!
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo