FC ConcursosFC Concursos

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á

  1. o valor 3, dado que a visão permanece selecionando tuplas de clientes do estado ‘RJ’.
  2. o valor 4, já que a execução do último comando de inserção alterou o estado da visão.
  3. o valor 6, por esse ser o novo número de tuplas da tabela de base da visão.
  4. um erro, pois visões não aceitam inserções diretamente.
  5. 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

Continue aprendendo