Com referência à tabela R1, como descrita anteriormente, ana...

Próximas questões
Com base no mesmo assunto
Q2220426 Banco de Dados

Tabela R1


Na questão a seguir, considere a tabela R1, cuja instância é exibida a seguir. 


Com referência à tabela R1, como descrita anteriormente, analise o comando SQL 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 é:
Alternativas

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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