Questão FC369438
Tabelas Relacionais T1 e T2 Considere as tabelas relacionais T1 e T2, de acordo com as colunas e as instâncias abaixo descritas. Na execução dos comandos SQL, assuma que o mecanism
Linguagem SQL
FGV · 2024
Tabelas Relacionais T1 e T2
Considere as tabelas relacionais T1 e T2, de acordo com as colunas e as instâncias abaixo descritas. Na execução dos comandos SQL, assuma que o mecanismo do banco de dados considera valores NULL como valores desconhecidos (unknown).
Tabela T1
| P | N |
| 1 | 10 |
| 2 | 40 |
| 3 | 20 |
| 4 | 10 |
Tabela T2
| E |
Q | P |
| 1 | 10 | 2 |
| 2 | 40 | 3 |
| 3 | 20 | 8 |
| 4 | 10 | NULL |
Considerando as tabelas T1 e T2, anteriormente apresentadas, analise o comando SQL a seguir.
delete from T2 where P not in (select P from T2)
O número de linhas deletadas da tabela T2 pela execução desse comando é:
- 0;
- 1;
- 2;
- 3;
- 4.
Mostrar resposta e comentário
Gabarito
A
Comentário do professor
O comando tenta remover linhas de T2 cuja coluna P não esteja na lista retornada pela subconsulta `(select P from T2)`. Essa subconsulta devolve os valores {2, 3, 8, NULL}.
Para linhas com P = 2,3 ou 8, a condição `P NOT IN (...)` é false porque o valor está presente na lista — logo, não são deletadas.
Para a linha com P = NULL, qualquer comparação com NULL resulta em UNKNOWN pela lógica ternária do SQL; o predicado na cláusula WHERE precisa ser true para que a linha seja removida. Como fica UNKNOWN, também não é deletada.
Portanto, o número de linhas deletadas é 0.
Conteúdo do catálogo FC Concursos · Atualizado em