FC ConcursosFC Concursos

Questão FC369489

Para que a consulta a seguir reflita o resultado dos clientes cadastrados que não contrataram empréstimos, qual a opção que corretamente substitui o trecho na cláusula from do coma

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:

 

create table tb_cliente
(
    id_cliente     integer       primary key,
    num_cpf        char(11)      unique,
    nome           varchar(50)   not null,
    email          varchar(20),
    telefone       varchar(20),
    endereco       varchar(100),
    cidade         varchar(20),
    estado         char(2)
);

create table tb_financeira
(
    id_financeira  integer       primary key,
    razao_social   varchar(30)   not null,
    cidade         varchar(30)   not null,
    estado         char(2)       not null
);

create table tb_emprestimo
(
    id_financeira  integer       references tb_financeira,
    id_cliente     integer       references tb_cliente,
    valor          real          not null check(valor > 0),
    dia            integer       not null check(dia >= 1 and dia <= 31),
    mes            integer       not null check(mes >= 1 and mes <= 12),
    ano            integer       not null check(ano >= 1980 and ano <= 2100),
    primary key(id_financeira, id_cliente, dia, mes, ano)
);

 

OBS: Neste banco de dados, cadeias de caracteres (strings) são representadas envoltas em aspas simples.

 

Para que a consulta a seguir reflita o resultado dos clientes cadastrados que não contrataram empréstimos, qual a opção que corretamente substitui o trecho na cláusula from do comando SQL, padrão ANSI, destacado como /* TERMO */ ?

 

select c.nome

from tb_emprestimo e /* TERMO */ join tb_cliente c

on c.id_cliente = e.id_cliente

where e.id_financeira is null

  1. inner
  2. left
  3. natural
  4. outer
  5. right
Mostrar resposta e comentário

Gabarito

Errado

Comentário do professor

O uso de RIGHT JOIN é adequado porque garante que todas as linhas da tb_cliente (tabela à direita) sejam preservadas, mesmo quando não há correspondência na tabela tb_emprestimo.

Na cláusula completa: from tb_emprestimo e right join tb_cliente c on c.id_cliente = e.id_cliente, as colunas de e ficam com valor NULL para clientes que não possuam empréstimos associados.

Ao aplicar o filtro where e.id_financeira is null, a consulta passa a retornar exclusivamente esses clientes sem empréstimos, pois apenas os registros não casados apresentam e.id_financeira igual a NULL.

Portanto, RIGHT JOIN combinado com a checagem de NULL na tabela de empréstimos identifica corretamente os clientes que não contrataram empréstimos.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo