Pular para o conteúdo principal

Questão de Banco de Dados — Banco de Dados Relacionais — VUNESP 2026

Banco de DadosBanco de Dados Relacionais
Código
gp018316
Banca
VUNESP
Órgão
UNESP
Ano
2026
Cargo
V - - Analista de Informática I - Área de Atuação: Desenvolvimento de Sistemas - Edital nº 350
Considere a seguinte tabela de um banco de dados relacional:

Funcionário (ID, Nome, Salário).

Um comando SQL para criar essa tabela é (sendo ID a chave primária da tabela):
  1. ACREATE TABLE Funcionário (     ID, Nome, Salário     FROM CHAR(15), CHAR(30), DECIMAL(7,2),     PRIMARY KEY ID));
  2. BCREATE TABLE Funcionário (     ID PRIMARY KEY CHAR(15),     Nome CHAR(30),     Salário DECIMAL(7,2));
  3. CCREATE TABLE Funcionário (     CHAR(15) ID PRIMARY KEY,     CHAR(30) Nome,     DECIMAL(7,2) Salário);
  4. DCREATE TABLE Funcionário (     (ID, Nome, Salário) AS     (CHAR(15), CHAR(30), Decimal(7,2),     PRIMARY KEY ID));
  5. ECREATE TABLE Funcionário (     ID CHAR(15),     Nome CHAR(30),     Salário DECIMAL(7,2),     PRIMARY KEY ID);
Revelar gabarito e comentário

GabaritoE — CREATE TABLE Funcionário (     ID CHAR(15),     Nome CHAR(30),     Salário DECIMAL(7,2),     PRIMARY KEY ID);

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

Comando CREATE TABLE no SQL: sintaxe e chave primária

Gabarito: letra E. A alternativa E é a única que segue a sintaxe correta do comando CREATE TABLE, declarando cada coluna com seu tipo de dado e definindo a chave primária (PRIMARY KEY) de forma válida. As demais alternativas apresentam erros de sintaxe, como a ordem incorreta entre nome da coluna e tipo de dado, a ausência de declaração de tipo, ou o uso de cláusulas inexistentes.

O comando CREATE TABLE é a instrução da linguagem SQL (DDL — Data Definition Language) responsável por criar uma nova tabela em um banco de dados relacional. A sintaxe básica e universalmente aceita é:

CREATE TABLE nome_da_tabela (
    coluna1 tipo_de_dado,
    coluna2 tipo_de_dado,
    ...
    [restrições de tabela]
);

Cada coluna é definida pelo seu nome seguido do tipo de dado (ex.: CHAR(15), DECIMAL(7,2)). As restrições (constraints) podem ser definidas inline, junto à coluna, ou ao final da lista de colunas, como é o caso da PRIMARY KEY quando aplicada a uma única coluna. A chave primária é um conceito fundamental do modelo relacional: ela identifica de forma única cada tupla (linha) da tabela, garantindo que não haja valores duplicados e que o campo não seja nulo.

Na prática, para criar a tabela Funcionário com as colunas ID, Nome e Salário, sendo ID a chave primária, o comando correto é:

CREATE TABLE Funcionário (
    ID CHAR(15),
    Nome CHAR(30),
    Salário DECIMAL(7,2),
    PRIMARY KEY (ID)
);

Observe que a ordem é sempre nome da coluna → tipo de dado. A restrição PRIMARY KEY pode ser declarada ao final, referenciando a coluna ID, ou inline, como ID CHAR(15) PRIMARY KEY. Ambas as formas são válidas na maioria dos SGBDs.

A banca explora exatamente a confusão entre a ordem dos elementos na definição de uma coluna. Muitos candidatos, por falta de familiaridade com a sintaxe, aceitam comandos onde o tipo de dado vem antes do nome da coluna (como nas alternativas C e D), ou onde a chave primária é declarada de forma incorreta (como na alternativa B). A pegadinha está em reconhecer que a sintaxe correta exige que o nome da coluna seja o primeiro elemento, seguido do tipo de dado.

NÃO CAIA NESSA!

A banca inverte a ordem natural da definição de coluna, colocando o tipo de dado antes do nome (alternativas C e D) ou omitindo o tipo de dado da chave primária (alternativa B). O candidato desatento pode aceitar essas variações, mas a sintaxe padrão do SQL é sempre nome_da_coluna tipo_de_dado. Fique atento a essa inversão clássica.

Alternativa A — ❌ Incorreta

O erro está na estrutura: ID, Nome, Salário FROM CHAR(15), CHAR(30), DECIMAL(7,2). A cláusula FROM não é usada na definição de colunas, e os tipos de dados não são declarados imediatamente após cada nome de coluna. A sintaxe correta exige que cada coluna seja definida como nome tipo_de_dado, sem o uso de FROM.

Alternativa B — ❌ Incorreta

A declaração ID PRIMARY KEY CHAR(15) está com a ordem errada. O correto seria ID CHAR(15) PRIMARY KEY, ou seja, o tipo de dado deve vir antes da restrição. Além disso, a forma como a chave primária é declarada inline não é a mais comum, mas o erro principal é a ordem dos elementos.

Alternativa C — ❌ Incorreta

Aqui, o tipo de dado vem antes do nome da coluna: CHAR(15) ID PRIMARY KEY. Essa é uma inversão clássica da sintaxe correta. O padrão SQL exige que o nome da coluna seja o primeiro elemento, seguido do tipo de dado.

Alternativa D — ❌ Incorreta

A estrutura (ID, Nome, Salário) AS (CHAR(15), CHAR(30), Decimal(7,2), PRIMARY KEY ID) é inválida. A cláusula AS não é usada para definir colunas em um CREATE TABLE, e a forma como a chave primária é declarada também está incorreta. A sintaxe correta não utiliza AS para associar nomes a tipos de dados.

Alternativa E — ✅ Correta ⟵ GABARITO

Esta alternativa segue exatamente a sintaxe padrão do CREATE TABLE: cada coluna é definida com seu nome seguido do tipo de dado (ID CHAR(15), Nome CHAR(30), Salário DECIMAL(7,2)), e a chave primária é declarada ao final com PRIMARY KEY (ID). Essa é a forma correta e universalmente aceita.

Gabarito: letra E

Link permanente: /questoes/gp018316