Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FCC 2015

Banco de DadosSQL
Código
fc019792
Banca
FCC
Órgão
DPE-SP
Ano
2015
Nível
Médio
Cargo
Programador
O comando SQL
  1. A[1] cria uma tabela cuja chave primária é ID.
  2. B[4] provocará uma reorganização dos registros da tabela, pois o campo ID está fora de ordem.
  3. CALTER TABLE Tab_InfJuv INCLUDE PRIMARY KEY (ID); fará com que o campo ID passe a ser a chave primária da tabela.
  4. DINSERT INTO Tab_InfJuv VALUES (32, 'Centro2-Diadema', 'Carlos Santos Silva', 2); provocará um erro.
  5. EALTER TABLE TabInfJuv ADD PRIMARY KEY (ID); dará erro porque o campo ID não é NOT NULL.
Revelar gabarito e comentário

GabaritoD — INSERT INTO Tab_InfJuv VALUES (32, 'Centro2-Diadema', 'Carlos Santos Silva', 2); provocará um erro.

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”.

Comandos SQL: UNIQUE e INSERT duplicado

Gabarito: letra D. O comando INSERT da alternativa D tenta inserir um valor para a coluna ID (32) que já existe na tabela, violando a restrição UNIQUE definida na criação. Isso provocará um erro de violação de constraint.

A tabela Tab_InfJuv foi criada com ID integer UNIQUE, ou seja, o campo ID deve ter valores únicos. Após os inserts [2] a [5], a tabela contém os IDs: 11, 14, 12 e 32. A tentativa de inserir novamente o valor 32 gera conflito com a unicidade.

erDiagram
    Tab_InfJuv {
        int ID UNIQUE
        string nome
        string endereco
        int idade
    }
    Tab_InfJuv ||--o{ Tab_InfJuv : "ID único (UNIQUE)"

Alternativa A — ❌ Incorreta

O comando [1] não cria uma chave primária, apenas uma restrição UNIQUE. Para ser chave primária, deveria ter sido usado PRIMARY KEY (ID) na definição. A restrição UNIQUE permite valores nulos (dependendo do SGBD), enquanto PRIMARY KEY não.

Alternativa B — ❌ Incorreta

O comando INSERT não reorganiza registros. A ordem física dos dados em uma tabela não é garantida por padrão; cada INSERT apenas adiciona uma nova linha, sem reordenar as existentes.

Alternativa C — ❌ Incorreta

A sintaxe correta para adicionar chave primária em uma tabela existente é ALTER TABLE ... ADD PRIMARY KEY (coluna);. O uso de INCLUDE não é válido no padrão SQL para esse fim.

Alternativa D — ✅ Correta ⟵ GABARITO

Conforme explicado, o valor 32 já foi inserido no comando [5]. A restrição UNIQUE impede duplicatas, portanto o INSERT resultará em erro.

Alternativa E — ❌ Incorreta

O nome da tabela na alternativa está escrito TabInfJuv (sem o underscore), enquanto a tabela criada é Tab_InfJuv. Esse erro de nome já causaria falha no comando. Além disso, mesmo com o nome correto, a adição de PRIMARY KEY sobre ID exigiria que a coluna fosse NOT NULL, o que não foi definido. Contudo, o erro principal é a inexistência da tabela.

PEGA ESSA DICA!

Em SQL, UNIQUE garante valores distintos, mas permite nulos (dependendo do SGBD). Já PRIMARY KEY é UNIQUE + NOT NULL. Fique atento à grafia dos nomes de tabelas e à sintaxe dos comandos DDL.

Gabarito: letra D

Link permanente: /questoes/fc019792