Questão FC369488
Seja um banco de dados relacional especificado em SQL de uma empresa de correspondência entre clientes, instituições financeiras e empréstimos contratados por esses clientes nessas
Linguagem SQL
FGV · 2024
Seja um banco de dados relacional especificado em SQL de uma empresa de correspondência entre clientes, instituições financeiras e empréstimos contratados por esses clientes nessas instituições, previamente implementado em um banco de dados como a seguir:

OBS: Neste banco de dados, cadeias de caracteres (strings) são representadas envoltas em aspas simples.
Considere a seguinte sequência de comandos SQL:
insert into tb_cliente(id_cliente, num_cpf, nome)
values
(1,'111','cli1'),(2,'222','cli2'),(3,'333','cli3'),
(4,'444','cli4'),(5,'555','cli5');
update tb_cliente set estado='RJ'
where id_cliente%2!=0;
create view v_clientes_rj as
select id_cliente, num_cpf, nome, estado
from tb_cliente where estado = 'RJ';
Após a execução dos três comandos SQL apresentados, o seguinte comando foi executado:
insert into v_clientes_rj
values (6,'cli6','6666','MG');
Por fim, a seguinte consulta foi executada:
select count(*) from v_clientes_rj;
O retorno da última consulta executada será
- o valor 3, dado que a visão permanece selecionando tuplas de clientes do estado ‘RJ’.
- o valor 4, já que a execução do último comando de inserção alterou o estado da visão.
- o valor 6, por esse ser o novo número de tuplas da tabela de base da visão.
- um erro, pois visões não aceitam inserções diretamente.
- uma tabela vazia, pois a última inserção desconfigura a condição-alvo da visão.
Mostrar resposta e comentário
Gabarito
A
Comentário do professor
Após os primeiros insert foram criados 5 clientes (ids 1 a 5). Em seguida o comando update definiu estado='RJ' apenas para clientes com id ímpar (condição id_cliente%2!=0), ou seja: ids 1, 3 e 5 — total de 3 tuplas.
A view v_clientes_rj foi definida como select ... from tb_cliente where estado = 'RJ', logo ela é uma visão virtual que apresenta somente tuplas cuja coluna estado vale 'RJ'.
O comando insert into v_clientes_rj values (...,'MG') adiciona (ou tenta adicionar) uma linha com estado='MG', que não satisfaz a condição da view; portanto essa tupla não aparece na visão (pelo filtro) — ainda que gravada na tabela base ou rejeitada, não altera o conteúdo visível da view.
Assim, select count(*) from v_clientes_rj retorna 3, correspondente às tuplas com estado = 'RJ'.
Conteúdo do catálogo FC Concursos · Atualizado em