O SQL Server disponibiliza uma ampla gama de tipos de dados, fundamentais para a estruturação de bancos de dados e processamento de dados. Este artigo discute tipos Numéricos, Data/Hora, Caracteres, Binários e Especiais, enfatizando suas utilidades e características técnicas.
Tipos Numéricos Exatos
Os tipos numéricos exatos são utilizados para representar números inteiros e decimais com precisão completa. Incluem-se aqui o bit, que é frequentemente usado para armazenar valores booleanos, os tinyint, smallint, int, e bigint para inteiros de diferentes intervalos de tamanho, e decimal e numeric que são perfeitos para números com precisão decimal fixa. Para valores monetários, o SQL Server oferece os tipos money e smallmoney.
Tipo de Dado | Valor Mínimo | Valor Máximo | Tamanho (em bytes) |
---|---|---|---|
bit | 0 | 1 | 1/8 |
tinyint | 0 | 255 | 1 |
smallint | -32,768 | 32,767 | 2 |
int | -2,147,483,648 | 2,147,483,647 | 4 |
bigint | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 | 8 |
decimal(p, s) | Varia com precisão e escala | Varia com precisão e escala | 5-17 |
numeric(p, s) | Varia com precisão e escala | Varia com precisão e escala | 5-17 |
money | -922,337,203,685,477.5808 | 922,337,203,685,477.5807 | 8 |
smallmoney | -214,748.3648 | 214,748.3647 | 4 |
Tipos Numéricos Aproximados
Para valores numéricos que não necessitam de precisão absoluta, os tipos numéricos aproximados como float e real são mais apropriados. Esses tipos são ideais para cálculos científicos ou quando é preciso representar números muito grandes ou muito pequenos.
Tipo de Dado | Valor Mínimo | Valor Máximo | Tamanho (em bytes) | Precisão |
---|---|---|---|---|
float | -1.79E+308 | 1.79E+308 | 4 ou 8 | Depende de n |
real | -3.40E+38 | 3.40E+38 | 4 | 7 dígitos |
Tipos de Data e Hora
Os tipos de data e hora permitem armazenar pontos no tempo com diferentes níveis de precisão. O datetime e smalldatetime são usados para combinar datas e horas, enquanto date e time armazenam respectivamente apenas a data ou a hora. datetime2 é uma versão mais precisa do datetime e datetimeoffset inclui a informação de fuso horário junto à data e hora.
Tipo de Dado | Faixa de Data | Precisão | Tamanho (em bytes) |
---|---|---|---|
datetime | 1753-01-01 a 9999-12-31 | Milissegundos | 8 |
smalldatetime | 1900-01-01 a 2079-06-06 | Minutos | 4 |
date | 0001-01-01 a 9999-12-31 | Data | 3 |
time | 00:00:00.0000000 a 23:59:59.9999999 | Nanossegundos | 3 a 5 |
datetime2 | 0001-01-01 a 9999-12-31 | Nanossegundos | 6 a 8 |
datetimeoffset | 0001-01-01 a 9999-12-31 | Minutos e Nanossegundos | 8 a 10 |
Tipos de Caracteres e Texto
Tipos de caracteres e texto como char, varchar, text, nchar, nvarchar e ntext são usados para armazenar dados alfanuméricos. Enquanto char e nchar têm comprimento fixo, varchar e nvarchar permitem armazenamento de texto com comprimento variável. text e ntext são destinados a textos longos, mas estão obsoletos e devem ser substituídos por varchar(max) e nvarchar(max).
Tipo de Dado | Descrição | Tamanho Máximo |
---|---|---|
char | Caracteres não Unicode de comprimento fixo | 8.000 caracteres |
varchar | Caracteres não Unicode de comprimento variável | 8.000 caracteres |
varchar(max) | Caracteres não Unicode de comprimento variável para grandes volumes de texto | ~2 GB |
nchar | Caracteres Unicode de comprimento fixo | 4.000 caracteres |
nvarchar | Caracteres Unicode de comprimento variável | 4.000 caracteres |
nvarchar(max) | Caracteres Unicode de comprimento variável para grandes volumes de texto | ~1 GB |
text | Texto não Unicode de comprimento variável (Obsoleto) | ~2 GB |
ntext | Texto Unicode de comprimento variável (Obsoleto) | ~1 GB |
Tipos Binários
Os tipos binários, como binary e varbinary, são usados para armazenar dados em formato binário. São úteis para armazenar arquivos ou qualquer dado que não se encaixe em tipos de dados convencionais.
Tipo de Dado | Descrição | Tamanho Máximo |
---|---|---|
binary | Binários de comprimento fixo | 8.000 bytes |
varbinary | Binários de comprimento variável | 8.000 bytes |
varbinary(max) | Binários de comprimento variável para grandes volumes de dados | ~2 GB |
image | Dados binários de comprimento variável para imagens (Obsoleto) | ~2 GB |
Tipos Especiais
O SQL Server oferece tipos de dados especializados para cenários avançados e específicos. Utilize uniqueidentifier para valores únicos como GUIDs. O sql_variant suporta diversos tipos de dados em uma única coluna. Para armazenar e manipular dados XML, use o tipo xml. Estruturas temporárias de dados podem ser mantidas em colunas do tipo table. Dados geográficos são suportados pelos tipos geometry e geography, enquanto que hierarquias estruturadas são eficientemente gerenciadas com o tipo hierarchyid. O tipo timestamp é utilizado para versionamento de linhas, sendo atualizado automaticamente a cada modificação na linha, não armazenando informações de data e hora, apesar do nome sugerir.
Tipo de Dado | Descrição | Tamanho Máximo |
---|---|---|
uniqueidentifier | Identificador único global (GUID) | 16 bytes |
sql_variant | Valores de vários tipos de dados | 8.000 bytes |
xml | Dados XML | ~2 GB |
table | Conjunto de linhas para processamento | Depende do número de linhas e colunas |
geometry | Dados espaciais planares | Depende da complexidade da forma |
geography | Dados espaciais geográficos | Depende da complexidade da forma |
hierarchyid | Dados hierárquicos | 892 bytes |
timestamp | Versionamento de linhas, não é uma data/hora real | 8 bytes |