Considere o bloco de comandos Oracle a seguir. create ...

Próximas questões
Com base no mesmo assunto
Q914444 Banco de Dados
Considere o bloco de comandos Oracle a seguir.
create table x(a int, b int default 0, c int default 0); insert into x values (10,20,30); alter table x set unused (b, c) ; select * from x;
Assinale o que é produzido pelo comando “select".
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Resposta correta: A - 10

O tema dessa questão está relacionado ao gerenciamento de colunas em uma tabela no banco de dados Oracle, especificamente sobre a funcionalidade de marcar colunas como UNUSED. Para resolver essa questão, é importante compreender o que ocorre quando utilizamos o comando ALTER TABLE com a opção SET UNUSED para determinadas colunas.

O comando ALTER TABLE ... SET UNUSED é utilizado para marcar uma ou mais colunas de uma tabela como não usadas. Isso não remove imediatamente os dados dessas colunas, mas informa ao Oracle que essas colunas poderão ser removidas posteriormente. Essa ação é útil para adiar a remoção física de colunas e os possíveis impactos de desempenho associados à operação, permitindo que a exclusão ocorra em um momento mais conveniente para a manutenção do banco de dados.

Após marcar as colunas como UNUSED, qualquer tentativa de consulta a essas colunas resultará em um erro, pois, do ponto de vista do usuário, elas não existem mais. No entanto, o restante da tabela, incluindo outras colunas que não foram marcadas, continua acessível e inalterado.

Ao executar o comando SELECT * FROM x após as colunas b e c terem sido marcadas como UNUSED, apenas os dados da coluna a serão exibidos, visto que as colunas b e c não estão mais disponíveis para consulta. Portanto, o resultado será simplesmente o valor presente na coluna a, que neste caso é 10.

Logo, a alternativa correta é a A - 10, pois reflete o estado final da tabela, onde apenas os dados da coluna que está disponível (a) são retornados na consulta.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

"Se você estiver preocupado com o período de tempo necessário para descartar dados de coluna de todas as linhas de uma tabela grande, use a instrução ALTER TABLE ... SET UNUSED. Essa instrução marca uma ou mais colunas como não usadas, mas na verdade não remove os dados da coluna de destino nem restaura o espaço em disco ocupado por essas colunas. No entanto, uma coluna marcada como não utilizada não é exibida em consultas ou exibições de dicionário de dados, e seu nome é removido para que uma nova coluna possa reutilizá-lo. Todas as restrições, índices e estatísticas definidas na coluna também são removidos." Fonte: https://docs.oracle.com/cd/B28359_01/server.111/b28310/tables006.htm#ADMIN11663

A opção alter table ... set unused no  comando Alter table é uma espécie de deleção lógica das colunas.

 

Em termos práticos, ela "esconde" as colunas da tabela.

Indicado para quando temos uma tabela com uma quantidade absurda de registros e não queremos fazer a exclusão das colunas com a opção alter table ... drop column, pois tende a ser uma operação bem mais demorada.

 

 

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo