PostgreSQL: comportamento de comandos SQL e resultado de consulta
Gabarito: Errado. A afirmação está incorreta porque o resultado apresentado na imagem 2 não corresponde ao que o comando SELECT * FROM public.servidor; retornaria, considerando os comandos executados na imagem 1. A divergência está na forma como o PostgreSQL trata a ordenação e a exibição dos dados, especialmente quando há valores nulos ou quando a ordem de inserção não é garantida. O PostgreSQL é um sistema gerenciador de banco de dados relacional objeto-relacional, que segue o padrão SQL e oferece suporte a diversos recursos, como chaves estrangeiras, funções, triggers, views e integridade transacional. Quando um comando SELECT * FROM tabela; é executado, o banco retorna as linhas da tabela, mas a ordem dessas linhas não é garantida, a menos que uma cláusula ORDER BY seja especificada. Isso significa que, sem uma ordenação explícita, o PostgreSQL pode retornar as linhas em qualquer ordem, dependendo de fatores como o plano de execução escolhido, a presença de índices e a forma como os dados estão armazenados fisicamente. A imagem 2 apresenta um suposto resultado da consulta. Para que a afirmação fosse correta, o resultado apresentado deveria ser exatamente o que o comando retornaria. No entanto, sem uma cláusula ORDER BY, a ordem das linhas no resultado pode variar. Além disso, se houver valores nulos em alguma coluna, a forma como eles são exibidos pode ser diferente do esperado, dependendo da configuração do cliente ou da ferramenta utilizada. Outro ponto relevante é que, se a tabela servidor tiver sido criada com uma coluna do tipo serial ou identity, os valores inseridos podem não começar em 1, dependendo de operações anteriores, como TRUNCATE ou DELETE. O comando TRUNCATE reinicia o contador de sequências, enquanto o DELETE não o faz. Portanto, o resultado apresentado na imagem 2 pode não refletir os valores reais das colunas, caso haja alguma operação que altere a sequência. A pegadinha da questão está em assumir que o resultado de um SELECT * é deterministicamente ordenado pela ordem de inserção, o que não é verdade no PostgreSQL. O banco não garante a ordem das linhas sem ORDER BY. Além disso, a questão pode explorar a confusão entre DELETE e TRUNCATE, ou entre a exibição de valores nulos e vazios.
Alternativa E — ❌ Incorreta ⟵ GABARITO
A alternativa E (Errado) é a correta, pois a afirmação de que o comando SELECT * FROM public.servidor; apresentará o resultado exibido na imagem 2 é falsa. O PostgreSQL não garante a ordem das linhas sem uma cláusula ORDER BY, e o resultado pode variar. Além disso, a imagem 2 pode conter valores que não correspondem aos dados reais inseridos, seja por questões de ordenação, seja por valores nulos ou sequências. Gabarito: Errado