Pular para o conteúdo principal

Questão de Banco de Dados — SQL Server — VUNESP 2023

Banco de DadosSQL Server
Código
vu196812
Banca
VUNESP
Órgão
CM SJC
Ano
2023
Cargo
TLE ( )

No MS SQL Server, os tipos de dados VARCHAR e NVARCHAR, quando não utilizados com o tamanho MAX, podem ocupar no máximo, respectivamente:

  1. A2 000 e 1 000 bytes.
  2. B8 000 e 4 000 bytes.
  3. C4 000 e 8 000 bytes.
  4. D1 000 e 2 000 bytes.
  5. E8 000 e 8 000 bytes.
Revelar gabarito e comentário

GabaritoB — 8 000 e 4 000 bytes.

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 de dados VARCHAR e NVARCHAR no SQL Server

Gabarito: letra B. No Microsoft SQL Server, quando declarados sem a opção MAX, o tipo VARCHAR pode armazenar até 8.000 bytes e o tipo NVARCHAR até 4.000 bytes (metade, pois cada caractere Unicode ocupa 2 bytes). Essa é a regra documentada pela Microsoft para os tipos de dados de cadeia de caracteres do SQL Server.

Os tipos VARCHAR e NVARCHAR são usados para armazenar cadeias de caracteres (strings) de comprimento variável. A diferença fundamental entre eles está na codificação: o VARCHAR armazena caracteres não Unicode (como ASCII ou páginas de código específicas), ocupando 1 byte por caractere; o NVARCHAR armazena caracteres Unicode (padrão UTF-16), ocupando 2 bytes por caractere. Por isso, para um mesmo limite de bytes, o NVARCHAR comporta metade dos caracteres que o VARCHAR.

Quando você declara uma coluna como VARCHAR(n) ou NVARCHAR(n), o n representa o número máximo de caracteres que a coluna pode armazenar. No SQL Server, o tamanho máximo permitido para n é 8.000 para VARCHAR e 4.000 para NVARCHAR. Isso significa que, em termos de bytes, ambos podem ocupar até 8.000 bytes: o VARCHAR com 8.000 caracteres (1 byte cada) e o NVARCHAR com 4.000 caracteres (2 bytes cada).

A opção MAX (VARCHAR(MAX) ou NVARCHAR(MAX)) é uma exceção: ela permite armazenar até 2 GB de dados, mas a questão exclui explicitamente esse caso, perguntando apenas sobre os tamanhos sem MAX.

A pegadinha clássica dessa questão é inverter os valores: muitos candidatos lembram que o NVARCHAR ocupa o dobro de espaço, mas esquecem que o limite de caracteres é a metade, e acabam marcando 8.000 e 8.000 (letra E) ou 4.000 e 8.000 (letra C). A relação correta é sempre: VARCHAR = 8.000 bytes, NVARCHAR = 4.000 bytes (quando sem MAX).

Guarde essa proporção: o NVARCHAR é o VARCHAR com metade da capacidade em caracteres, porque cada caractere Unicode consome o dobro de bytes. É exatamente essa relação que as alternativas tentam confundir.

Alternativa A — ❌ Incorreta

Afirma que VARCHAR e NVARCHAR ocupam, respectivamente, 2.000 e 1.000 bytes. Esses valores não correspondem a nenhum limite padrão do SQL Server. O correto é 8.000 e 4.000 bytes. A banca provavelmente quis testar se o candidato conhece os valores reais, e não valores aleatórios.

Alternativa B — ✅ Correta ⟵ GABARITO

Esta é a alternativa correta. O VARCHAR, sem MAX, pode armazenar até 8.000 bytes (8.000 caracteres de 1 byte), e o NVARCHAR, sem MAX, pode armazenar até 4.000 bytes (4.000 caracteres de 2 bytes). Essa é a documentação oficial do SQL Server para os tipos de dados de cadeia de caracteres.

Alternativa C — ❌ Incorreta

Inverte os valores: afirma 4.000 para VARCHAR e 8.000 para NVARCHAR. Isso está errado, pois o VARCHAR tem capacidade maior (8.000) e o NVARCHAR menor (4.000). A banca trocou os números para confundir quem sabe que o NVARCHAR ocupa mais espaço, mas não lembra que isso reduz o limite de caracteres.

Alternativa D — ❌ Incorreta

Afirma 1.000 e 2.000 bytes. Novamente, valores sem fundamento no SQL Server. O correto é 8.000 e 4.000. Não há nenhuma configuração padrão que use esses números.

Alternativa E — ❌ Incorreta

Afirma 8.000 e 8.000 bytes. O erro aqui é não considerar que o NVARCHAR, por usar 2 bytes por caractere, tem seu limite de caracteres reduzido pela metade (4.000). Embora o NVARCHAR também possa ocupar até 8.000 bytes em termos de armazenamento físico, o tamanho máximo declarável sem MAX é 4.000 caracteres, o que corresponde a 8.000 bytes. A questão pede o tamanho máximo em bytes que o tipo pode ocupar, e a interpretação correta é que o NVARCHAR tem limite de 4.000 bytes (ou 4.000 caracteres). A alternativa E ignora essa distinção.

NÃO CAIA NESSA!

Para fixar, lembre-se: VARCHAR = 8.000, NVARCHAR = 4.000 (sem MAX). O NVARCHAR é sempre a metade em caracteres, porque cada caractere Unicode usa 2 bytes. Se a questão perguntar sobre bytes, o NVARCHAR ainda é 4.000 (pois 4.000 caracteres × 2 bytes = 8.000 bytes, mas o limite declarado é 4.000). Na dúvida, desenhe a tabela:

Tipo

Caracteres máx.

Bytes por caractere

Bytes totais

VARCHAR

8.000

1

8.000

NVARCHAR

4.000

2

8.000

A pegadinha está em confundir caracteres com bytes. O enunciado pede bytes, então a resposta é 8.000 e 4.000.

Gabarito: letra B

Link permanente: /questoes/vu196812