Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FGV 2024

Banco de DadosSQL
Código
fg079806
Banca
FGV
Órgão
DATAPREV
Ano
2024
Nível
Superior
Cargo
ATI - Inteligência da Informação
Em um sistema de banco de dados relacional, o script de comandos SQL a seguir especificado foi submetido à execução:Q70.png 283×218A análise do script permite-nos afirmar que a sua execução produzirá um resultado.Assinale a opção que indica esse resultado.
  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
Revelar gabarito e comentário

GabaritoA — A 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.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

SQL: ALTER TABLE ADD e o valor padrão de coluna NOT NULL

Gabarito: letra A. O script executa com sucesso: o comando ALTER TABLE ... ADD atr4 INT NOT NULL DEFAULT 0 cria uma nova coluna atr4 e, como a tabela já possui duas tuplas, o SGBD preenche automaticamente o novo atributo com o valor padrão 0 (zero) em ambas as linhas existentes. A alternativa correta descreve exatamente esse comportamento.

O comando ALTER TABLE é um comando da sublinguagem DDL (Data Definition Language), responsável por modificar a estrutura de uma tabela existente. A cláusula ADD é utilizada para adicionar uma nova coluna, e a sintaxe básica é ALTER TABLE nome_tabela ADD nome_coluna tipo_dado [restrições]. A palavra COLUMN é opcional na maioria dos SGBDs, como PostgreSQL, MySQL e SQL Server — ou seja, ADD COLUMN atr4 e ADD atr4 são equivalentes. A restrição NOT NULL impede que a coluna aceite valores nulos, e a cláusula DEFAULT 0 define o valor padrão que será usado quando nenhum valor for fornecido explicitamente.

Quando se adiciona uma coluna com NOT NULL a uma tabela que já contém dados, o SGBD precisa atribuir um valor a essa coluna nas linhas existentes. Se a coluna tiver uma cláusula DEFAULT, o SGBD usa esse valor padrão para preencher as tuplas já presentes. Sem a cláusula DEFAULT, a operação falharia, pois não haveria como garantir a restrição NOT NULL para os registros existentes. No script da questão, a presença de DEFAULT 0 garante que as duas tuplas existentes recebam o valor 0 na nova coluna atr4.

O comando INSERT subsequente insere uma nova tupla com valores explícitos para as colunas atr1, atr2 e atr3. Como a coluna atr4 tem DEFAULT 0, ela será preenchida com 0 automaticamente. O valor NULL em atr3 na segunda tupla do INSERT não causa erro, pois a restrição NOT NULL não foi aplicada a atr3 na criação da tabela — apenas a coluna atr4 possui essa restrição. Portanto, o script é válido e produz o resultado descrito na alternativa A.

A pegadinha central desta questão está na confusão entre a sintaxe do ALTER TABLE e o comportamento do SGBD ao adicionar uma coluna NOT NULL com DEFAULT em uma tabela populada. Muitos candidatos acreditam que a palavra COLUMN é obrigatória ou que a operação falharia, mas a sintaxe correta aceita ambas as formas, e o DEFAULT resolve o problema do preenchimento das tuplas existentes.

Alternativa A — ✅ Correta ⟵ GABARITO

A alternativa descreve com precisão o resultado da execução do script. O comando ALTER TABLE adiciona a coluna atr4 com a restrição NOT NULL e o valor padrão DEFAULT 0. Como a tabela já contém duas tuplas, o SGBD preenche automaticamente o novo atributo com o valor 0 em ambas as linhas. O comando INSERT subsequente adiciona uma nova tupla, e a coluna atr4 também recebe o valor 0 por padrão. Ao final, a tabela possui três tuplas, todas com atr4 = 0.

Alternativa B — ❌ Incorreta

A alternativa confunde o conceito de coluna com o de restrição de integridade. atr4 é uma coluna (atributo) adicionada à tabela, não uma restrição. A restrição NOT NULL é uma propriedade da coluna, mas a coluna em si é o que está sendo criado. Além disso, a descrição "demanda que valores não nulos sejam inicialmente preenchidos com o valor zero" é confusa e não reflete o comportamento real: o DEFAULT 0 preenche as tuplas existentes com zero, mas a coluna pode receber outros valores em inserções futuras.

Alternativa C — ❌ Incorreta

A afirmação de que o ALTER TABLE apresentará erro é falsa. A especificação SQL permite adicionar uma nova coluna com a restrição NOT NULL, desde que um valor padrão seja fornecido (via DEFAULT) ou que a tabela esteja vazia. Como o script inclui DEFAULT 0, a operação é válida e não gera erro. A alternativa ignora a cláusula DEFAULT, que é exatamente o que torna a operação possível.

Alternativa D — ❌ Incorreta

A alternativa afirma que o INSERT não será executado porque a segunda tupla contém valor nulo em atr3. No entanto, a coluna atr3 não possui a restrição NOT NULL — ela foi criada sem essa restrição no CREATE TABLE. Portanto, valores nulos são permitidos em atr3, e o INSERT é executado normalmente. A restrição NOT NULL se aplica apenas à coluna atr4, que não é mencionada no INSERT e, por isso, recebe o valor padrão 0.

Alternativa E — ❌ Incorreta

A alternativa alega que há um erro sintático pela ausência da palavra COLUMN após ADD. Isso é incorreto: a palavra COLUMN é opcional na sintaxe do ALTER TABLE na maioria dos SGBDs. Tanto ADD COLUMN atr4 quanto ADD atr4 são formas válidas. O script está sintaticamente correto, e a execução não gera erro.

Gabarito: letra A

Link permanente: /questoes/fg079806