Questão de Banco de Dados — SQL — Quadrix 2025
- Código
- qg603663
- Banca
- Quadrix
- Órgão
- SEDF
- Ano
- 2025
- Nível
- Superior
- Cargo
- Professor de Educação Básica: Informática
- CCerto
- EErrado
GabaritoC — Certo
Gabarito: letra C (CERTO). No DB2, ao adicionar uma coluna com ALTER TABLE ... ADD COLUMN, se a coluna não for explicitamente definida como NULL e não tiver um valor DEFAULT, o comando falha, pois o DB2 exige que colunas novas sejam anuláveis ou tenham um valor padrão. Essa é uma característica específica do DB2, que difere de outros SGBDs como SQL Server e Oracle.
O comando ALTER TABLE ... ADD COLUMN é uma instrução da sublinguagem DDL (Data Definition Language), responsável por modificar a estrutura de uma tabela existente. Quando uma nova coluna é adicionada a uma tabela que já contém registros, o SGBD precisa definir qual valor será atribuído a essa coluna nas linhas existentes. No DB2, essa definição é obrigatória: a coluna deve ser anulável (permitir NULL) ou ter um valor DEFAULT especificado. Se nenhuma dessas condições for atendida, o comando falha, pois o DB2 não consegue determinar o valor a ser preenchido nas linhas já existentes.
Essa regra existe para garantir a integridade dos dados. Ao adicionar uma coluna NOT NULL sem valor padrão, o banco não teria como preencher as linhas existentes com um valor válido, o que violaria a restrição de não-nulidade. Portanto, o DB2 exige que o usuário especifique um DEFAULT ou permita NULL para que a operação seja bem-sucedida.
É importante destacar que esse comportamento não é universal. No SQL Server, por exemplo, é possível adicionar uma coluna NOT NULL sem DEFAULT em uma tabela com dados, desde que a tabela esteja vazia. No Oracle, a adição de uma coluna NOT NULL sem DEFAULT também é permitida, mas apenas se a tabela não tiver registros. O DB2, por sua vez, adota uma postura mais rígida, exigindo que a coluna seja anulável ou tenha um valor padrão, independentemente de a tabela estar vazia ou não.
A pegadinha desta questão está em generalizar o comportamento do SQL padrão para todos os SGBDs. O candidato que conhece apenas o comportamento do SQL Server ou do MySQL pode marcar a alternativa como errada, acreditando que a adição de uma coluna NOT NULL sem DEFAULT é sempre permitida. No entanto, a questão é específica sobre o DB2, e a banca cobra exatamente essa particularidade.
Guarde a distinção: no DB2, ADD COLUMN exige que a nova coluna seja anulável ou tenha DEFAULT. Essa é a regra que decide a questão.
A afirmação está correta. No DB2, ao utilizar ALTER TABLE ... ADD COLUMN, se a coluna adicionada não for explicitamente definida como NULL e não tiver um valor DEFAULT, o comando falha. O DB2 exige que colunas novas sejam anuláveis ou tenham um valor padrão, pois, ao adicionar uma coluna a uma tabela com dados existentes, o SGBD precisa saber qual valor atribuir às linhas já presentes. Sem NULL ou DEFAULT, não há como preencher essas linhas sem violar a restrição de não-nulidade.
Para questões sobre ALTER TABLE ADD COLUMN, lembre-se de que o comportamento varia entre SGBDs. No DB2, a regra é rígida: a coluna deve ser anulável ou ter DEFAULT. No SQL Server e no Oracle, a adição de coluna NOT NULL sem DEFAULT é permitida apenas em tabelas vazias. Essa distinção é frequentemente cobrada em provas.
Gabarito: letra C (CERTO).
Link permanente: /questoes/qg603663