← Questões de Banco de Dados

Banco de Dados · FGV · 2021

Questão comentada de Banco de Dados

Considere o comando SQL a seguir, executado num banco de dados relacional com duas tabelas, R1 e R2, contendo 2.000 e 5.000 registros, respectivamente. R1 e R2 possuem chaves primárias definidas. SELECT DISTINCT * FROM A, B Assinale a opção que indica o número de linhas produzidas na execução.

Gabarito: E

Aqui a palavra-chave é a vírgula no FROM: em SQL, isso significa junção implícita sem condição de ligação, ou seja, produto cartesiano. Se a tabela R1 tem 2.000 linhas e a R2 tem 5.000, o banco combina cada linha de uma com cada linha da outra. Resultado: 2.000 x 5.000 = 10.000.000 linhas. O DISTINCT não “corta” esse número aqui, porque ele só remove linhas exatamente iguais. Como as tabelas têm chaves primárias, cada combinação de uma linha de R1 com uma de R2 gera um registro distinto. Então não há repetição para ser eliminada. Em provas, a banca adora essa pegadinha: muita gente olha o DISTINCT e imagina que o resultado vai diminuir automaticamente. Não vai. Primeiro você produz o produto cartesiano; depois, se houver duplicidade real, o DISTINCT elimina. Neste caso, ele não reduz nada. Por isso, o gabarito é E: 10.000.000 linhas.

Continue treinando

Questões relacionadas