SóProvas


ID
5532430
Banca
FGV
Órgão
TJ-RO
Ano
2021
Provas
Disciplina
Banco de Dados
Assuntos

Considere uma tabela de banco de dados T1, com colunas A e B, e outra, T2, com colunas C e D. A coluna A constitui a chave primária de T1. Não há chave primária em T2. Há n1 registros em T1 e n2 registros em T2, n1 > 0 e n2 > 0.
Considere ainda o comando SQL a seguir.

select distinct A
from T1 right join T2 on T1.A=T2.C

Para quaisquer instâncias de T1 e T2 de acordo com as premissas acima, é correto afirmar, sobre o resultado produzido pela execução desse comando, que:

Alternativas
Comentários
  • Na minha opinião, questão sem gabarito

     

    a) Não pode ser vazio porque T2 possui n2>0, ou seja, terá pelo menos 1 registro nesse right join, mesmo se o resultado for 1 NULL

    b) Posso ter NULL se algum T1.C não possuir equivalência em T1.A

    c) Estaria certo se não fosse o DISTINCT. Se T2.C possuir 10 valores mas nenhuma equivalência em T1.A, então teríamos 10 NULLs que virariam 1 NULL por causa do DISTINCT

    d) n1+n2 é se tiver um UNION ALL sem DISTINCT

    e) Quem vai definir o limite superior de linhas é T1.A, porque ele é quem está sendo exibido. No pior caso, todos os T1.A possuem equivalência em T2.C; assim, será exibido o número de linhas igual a n1 porque o distinct não deixaria passar disso. NO ENTANTO, se algum valor de T2.C não possuir equivalência em T1.A, será acrescentado mais uma linha com valor NULL.

    ------------------------------------------

    EXEMPLO

    T1: (1, 1)

    T2: (1, 1), (2, 2)

    Resultado da script: (null), (1)

    Veja que T1 possui 1 linha e a saída possui 2

    ------------------------------------------

    GABARITO: o número de linhas será menor ou igual a n1 + 1