Questão de Banco de Dados — SQL Server — VUNESP 2023
Banco de Dados›SQL 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:
A2 000 e 1 000 bytes.
B8 000 e 4 000 bytes.
C4 000 e 8 000 bytes.
D1 000 e 2 000 bytes.
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.