Questão de Banco de Dados — PostgreSQL — VUNESP 2023
Banco de Dados›PostgreSQL
Código
vu197043
Banca
VUNESP
Órgão
CIJUN
Ano
2023
Cargo
Ana ( )
No sistema gerenciador de bancos de dados PostgreSQL v 14.4, o comando para criar um tipo de dados enumerado denominado lista, contendo os valores ‘a’, ‘b’ e ‘c’ é:
ACREATE TYPE ENUM AS lista (‘a’, ‘b’, ‘c’);
BCREATE TYPE CHAR lista (‘a’, ‘b’, ‘c’);
CCREATE TYPE lista AS ENUM (‘a’, ‘b’, ‘c’);
DCREATE TYPE (‘a’, ‘b’, ‘c’) AS lista;
ECREATE TYPE lista (‘a’, ‘b’, ‘c’);
Revelar gabarito e comentário▾
GabaritoC — CREATE TYPE lista AS ENUM (‘a’, ‘b’, ‘c’);
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”.
Tipos enumerados no PostgreSQL: sintaxe do CREATE TYPE
Gabarito: letra C. No PostgreSQL, a sintaxe correta para criar um tipo enumerado é CREATE TYPE nome AS ENUM ('valor1', 'valor2', ...), ou seja, primeiro o nome do tipo, depois a palavra-chave AS ENUM e, por fim, a lista de valores entre parênteses — exatamente o que a alternativa C apresenta. As demais alternativas invertem a ordem dos elementos ou omitem a cláusula AS ENUM, tornando-as inválidas.
Um tipo enumerado (ou enum) é um tipo de dado definido pelo usuário que restringe os valores possíveis de uma coluna a uma lista fixa e ordenada de strings. No PostgreSQL, ele é criado com o comando CREATE TYPE, que pertence à categoria DDL (Data Definition Language) do SQL. A sintaxe completa é:
CREATE TYPE nome_do_tipo AS ENUM ('valor1', 'valor2', ...);
O nome do tipo vem logo após CREATE TYPE, seguido da cláusula AS ENUM e da lista de valores entre parênteses, separados por vírgula. Essa ordem é obrigatória — o PostgreSQL não aceita variações como CREATE TYPE ENUM AS nome ou CREATE TYPE nome ('a','b').
Na prática, depois de criar o tipo, você pode usá-lo como tipo de uma coluna em uma tabela. Por exemplo:
CREATE TYPE lista AS ENUM ('a', 'b', 'c');
CREATE TABLE exemplo (id INT, valor lista);
A coluna valor só aceitará os valores 'a', 'b' ou 'c'. Qualquer outro valor gerará erro. Os valores de um enum são armazenados de forma compacta (como números inteiros internos) e podem ser comparados pela ordem em que foram definidos.
A pegadinha desta questão é justamente a ordem dos elementos: a banca coloca ENUM antes do nome (alternativa A), usa CHAR no lugar de ENUM (alternativa B), coloca os valores antes do nome (alternativa D) ou omite AS ENUM (alternativa E). O candidato que não memorizou a sintaxe exata pode se confundir, mas a regra é simples: nome primeiro, AS ENUM depois, valores por último.
Guarde essa estrutura: CREATE TYPE <nome> AS ENUM (<valores>). É nela que as alternativas se dividem — as erradas ou trocam a posição do nome, ou substituem ENUM por outra palavra, ou esquecem a cláusula AS.
1CREATE TYPE
2Nome do tipo
3AS ENUM
4Valores entre parênteses
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
CREATE TYPE ENUM AS lista ('a', 'b', 'c'); — Aqui o nome do tipo (lista) aparece depois de AS, e ENUM aparece antes. A ordem correta é CREATE TYPE lista AS ENUM (...). A banca inverteu os elementos: colocou ENUM no lugar do nome e lista no lugar do tipo.
Alternativa B — ❌ Incorreta
CREATE TYPE CHAR lista ('a', 'b', 'c'); — Troca ENUM por CHAR. CHAR é um tipo de dado de caractere fixo, não uma palavra-chave para criar enum. Além disso, falta a cláusula AS e a ordem está errada. Não existe essa sintaxe no PostgreSQL.
Alternativa C — ✅ Correta ⟵ GABARITO
CREATE TYPE lista AS ENUM ('a', 'b', 'c'); — Segue exatamente a sintaxe documentada do PostgreSQL: CREATE TYPE + nome do tipo + AS ENUM + lista de valores entre parênteses. É a única alternativa que cria corretamente o tipo enumerado lista com os valores 'a', 'b' e 'c'.
Alternativa D — ❌ Incorreta
CREATE TYPE ('a', 'b', 'c') AS lista; — Coloca os valores antes do nome e usa AS lista no final. A ordem está completamente invertida: os valores devem vir por último, após AS ENUM. Essa sintaxe não é reconhecida pelo PostgreSQL.
Alternativa E — ❌ Incorreta
CREATE TYPE lista ('a', 'b', 'c'); — Omite a cláusula AS ENUM. Sem ela, o PostgreSQL não sabe que se trata de um tipo enumerado — a sintaxe correta exige AS ENUM entre o nome e a lista de valores.
PEGA ESSA DICA!
Para fixar, lembre-se da ordem: nome → AS ENUM → valores. Na prova, se a alternativa tiver ENUM antes do nome, ou valores antes do nome, ou faltar AS ENUM, descarte na hora. Essa é uma questão de memorização pura — resolva muitas questões de sintaxe do PostgreSQL para gravar.