Questão nº 70
Questão de Tecnologia da Informação · FGV DATAPREV 2024 (nº 70)
Em um sistema de banco de dados relacional, o script de comandos SQL a seguir especificado foi submetido à execução:

A análise do script permite-nos afirmar que a sua execução produzirá um resultado.
Assinale a opção que indica esse resultado.
- AA criação de uma nova coluna "atr4" ao final da execução do script, com as duas tuplas do estado da tabela contendo o valor zero como conteúdo desse novo atributo criado. (alternativa correta)
- BA criação de uma nova restrição de integridade "atr4" ao final da execução do script, que demanda que valores não nulos sejam inicialmente preenchidos com o valor zero.
- CO comando ALTER TABLE apresentará erro, pois a especificação da linguagem SQL não permite um novo atributo em uma tabela com especificação de não nulo.
- DO comando INSERT não será executado, já que a segunda tupla especificada contém valor nulo no atributo atr3, que necessita ser maior que zero.
- EUm erro sintático de construção do comando ALTER TABLE, pela ausência da especificação da palavra reservada COLUMN após a palavra reservada ADD.
Resposta comentada
Gabarito Alternativa A
Quando você adiciona uma nova coluna a uma tabela que já tem dados, se essa nova coluna for definida como NOT NULL (não pode ser vazia), você precisa especificar um DEFAULT (valor padrão) para que o banco de dados saiba o que preencher nas linhas existentes.
- (A) Correta: A execução do comando
ALTER TABLE T1 ADD atr4 INT NOT NULL DEFAULT 0;adiciona a colunaatr4do tipo inteiro. Como a tabela já possui duas tuplas e a nova coluna éNOT NULLcom umDEFAULT 0, o sistema de banco de dados preencherá automaticamente o valor0paraatr4em todas as tuplas existentes. - (B) Incorreta:
atr4é uma coluna, não uma restrição de integridade em si.NOT NULLé uma restrição aplicada à coluna, eDEFAULT 0é uma propriedade que define o valor padrão, especialmente útil para preencher linhas existentes ao adicionar uma colunaNOT NULL. - (C) Incorreta: O comando
ALTER TABLEpermite adicionar um atributoNOT NULLa uma tabela existente, desde que seja fornecido um valorDEFAULT. Sem oDEFAULT, ele apresentaria erro, mas com ele, é totalmente válido. Armadilha da banca: Muitos pensam queNOT NULLsempre impede a adição a uma tabela com dados, mas oDEFAULTresolve isso. - (D) Incorreta: Os comandos
INSERTsão válidos. A colunaatr3éNOT NULL CHECK (atr3 > 0), e os valores inseridos (10e20) satisfazem ambas as condições. Não há valor nulo paraatr3nas inserções. - (E) Incorreta: A sintaxe
ALTER TABLE T1 ADD atr4 INT NOT NULL DEFAULT 0;é válida em SQL padrão. A palavra reservadaCOLUMNapósADD(ex:ADD COLUMN atr4) é opcional em muitos sistemas de banco de dados e sua ausência não causa erro sintático.
Fonte: FGV DATAPREV 2024 Analista de Tecnologia da Informação - Inteligência da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.