Com referência à tabela R1, como descrita anteriormente, ana...
Tabela R1
Na questão a seguir, considere a tabela R1, cuja instância é
exibida a seguir.
delete from R1 where (select count(*) from R1 x where R1.B = x.B) > 0
Após a execução desse comando, o conjunto completo de linhas presentes na instância da tabela R1 é:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A questão exige conhecimentos a respeitos dos comandos no SQL:
Vejamos:
delete from R1 - Indica que está excluindo linhas da tabela chamada R1.
where (select count(*) from R1 x - determina quais linhas serão excluídas.
where R1.B = x.B) > 0 - Esse comando verifica se há mais de uma ocorrência do mesmo valor na coluna B.
Pessoal, o comando DELETE irá excluir todas as linhas da tabela R1 que existam pelo menos uma outra linha na tabela X com o mesmo valor em coluna B. Apenas as linhas com valores únicos na coluna B serão mantidas, e as outras vão ser excluídas.
Temos que null = null é falso, nesse caso, após a execução desse comando, o conjunto completo de linhas presentes na instância da tabela R1 é 10 NULL 32(segunda linha na tabela R1.)
Desse modo, as alternativas A,B,C e D estão incorretas.
Gabarito do monitor: LETRA E
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
Vamos analisar o comando SQL com a instância da tabela R1 fornecida:
A subconsulta conta quantas linhas na tabela R1 têm o mesmo valor na coluna B que a linha atual (referenciada por R1). Se essa contagem for maior que 0, a linha atual é excluída.
A instância da tabela R1 fornecida é:
Agora, vamos avaliar o comando para cada linha:
- Para a primeira linha (A=10, B=20, C=31), a contagem de linhas em R1 com o mesmo valor de B é 2 (duas linhas com B=20). Portanto, esta linha será excluída.
- Para a segunda linha (A=10, B=NULL, C=32), a contagem de linhas em R1 com o mesmo valor de B é 1 (uma linha com B=NULL). Portanto, esta linha não será excluída.
- Para a terceira linha (A=11, B=20, C=NULL), a contagem de linhas em R1 com o mesmo valor de B é 2 (duas linhas com B=20). Portanto, esta linha será excluída.
- Para a quarta linha (A=12, B=9, C=31), a contagem de linhas em R1 com o mesmo valor de B é 1 (uma linha com B=9). Portanto, esta linha não será excluída.
- Para a quinta linha (A=14, B=8, C=NULL), a contagem de linhas em R1 com o mesmo valor de B é 1 (uma linha com B=8). Portanto, esta linha não será excluída.
Após a execução do comando, as linhas excluídas serão aquelas onde havia pelo menos uma linha com o mesmo valor em B. Portanto, o conjunto completo de linhas presentes na instância da tabela R1 será:
Portanto, a resposta correta é a opção E: "10 NULL 32".
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo