Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — VUNESP 2023

Banco de DadosConsultas e Comandos em SQL
Código
vu195442
Banca
VUNESP
Órgão
UNICAMP
Ano
2023
Cargo
PTIC ( )
Deseja-se criar uma tabela em um banco de dados relacional, contendo dois atributos (A e B), ambos do tipo string com 20 caracteres cada um. Ambos devem compor a chave primária da tabela, a ser denominada Tab.   O comando SQL para realizar a tarefa aqui descrita é:
  1. ACREATE TABLE Tab (A Char (20), B Char (20), Primary Key (A, B);
  2. BCREATE TABLE Tab (A, B Char (20), Primary Key (A, B);
  3. CCREATE TABLE Tab (A AND B Char (20), Primary Key (A, B);
  4. DCREATE TABLE Tab (A Char(20) NOT NULL, B Char (20) NOT NULL);
  5. ECREATE TABLE Tab (A, B Char (20), PK);
Revelar gabarito e comentário

GabaritoA — CREATE TABLE Tab (A Char (20), B Char (20), Primary Key (A, B);

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

Criação de tabela com chave primária composta em SQL

Gabarito: letra A. O comando correto é CREATE TABLE Tab (A Char(20), B Char(20), Primary Key (A, B));, pois a sintaxe do CREATE TABLE exige que cada coluna seja declarada com seu tipo de dado individualmente e que a restrição de chave primária composta seja definida ao final, listando os atributos entre parênteses. As demais alternativas apresentam erros de sintaxe, como declarar dois atributos em uma única linha sem separação ou usar palavras-chave inexistentes.

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

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

Cada coluna deve ser declarada com seu nome e tipo de dado, separadas por vírgula. Quando se deseja criar uma chave primária composta (formada por mais de uma coluna), a restrição PRIMARY KEY deve ser declarada no nível da tabela, após a definição das colunas, listando os atributos que a compõem entre parênteses. Essa é a forma padrão aceita pela maioria dos SGBDs relacionais (MySQL, PostgreSQL, SQL Server, Oracle etc.).

A chave primária é um conceito fundamental do modelo relacional: ela identifica de forma única cada linha da tabela, garantindo a integridade de entidade. Quando composta por dois ou mais atributos, a combinação dos valores desses atributos deve ser única para cada registro. No caso da questão, os atributos A e B juntos formam a chave primária da tabela Tab.

É importante destacar que a ordem de declaração das colunas e da restrição de chave primária segue a sintaxe padrão: primeiro as colunas com seus tipos, depois as restrições de tabela. A alternativa correta segue exatamente essa estrutura.

A pegadinha desta questão está na forma como as alternativas apresentam a declaração das colunas. Muitos candidatos podem se confundir com a alternativa B, que tenta declarar dois atributos em uma única linha (A, B Char(20)), o que não é permitido — cada coluna deve ter seu próprio tipo de dado. Outros podem achar que a alternativa D está correta por incluir NOT NULL, mas ela não define a chave primária, apenas a restrição de não nulidade.

Alternativa A — ✅ Correta ⟵ GABARITO

Esta alternativa apresenta a sintaxe correta do CREATE TABLE: cada coluna (A e B) é declarada com seu tipo Char(20), e a restrição Primary Key (A, B) é definida ao final, criando a chave primária composta. A ordem e a pontuação estão adequadas ao padrão SQL.

Alternativa B — ❌ Incorreta

O erro está na declaração das colunas: A, B Char(20) tenta definir dois atributos em uma única linha, sem separar o tipo de dado de cada um. A sintaxe correta exige que cada coluna tenha seu próprio tipo, como em A Char(20), B Char(20). Além disso, a falta de vírgula entre as definições das colunas e a restrição de chave primária também compromete a validade do comando.

Alternativa C — ❌ Incorreta

A expressão A AND B Char(20) é inválida em SQL. O operador AND não é utilizado para declarar colunas; ele é usado em expressões lógicas (por exemplo, em cláusulas WHERE). A declaração correta deve listar as colunas separadas por vírgula, cada uma com seu tipo.

Alternativa D — ❌ Incorreta

Embora a sintaxe das colunas esteja correta (A Char(20) NOT NULL, B Char(20) NOT NULL), esta alternativa não define a chave primária. A restrição NOT NULL apenas garante que os campos não podem ficar vazios, mas não cria a chave primária composta exigida pelo enunciado. Para isso, seria necessário adicionar Primary Key (A, B) ao final do comando.

Alternativa E — ❌ Incorreta

Esta alternativa apresenta dois erros: primeiro, a declaração A, B Char(20) é inválida, como na alternativa B; segundo, a abreviação PK não é uma palavra-chave reconhecida no padrão SQL para definir chave primária. A forma correta é escrever PRIMARY KEY (A, B).

Gabarito: letra A

Link permanente: /questoes/vu195442