Pular para o conteúdo principal

Tipos de dados no Sql Server

De vez em quando nos deparamos com uma questão: qual o tipo de dado deve ter um determinado campo?
Para um DBA isso é um bom questionamento, pois com base nessa definição outras decisões serão tomadas.

O que me motivou a pesquisar e escrever sobre isso foi a frase de um desnvolvedor:

"Pouco importa se é varchar, char, text..., pra mim tudo é string."

Abaixo segue uma relação dos tipos de dados básicos do SQL Server:

TINYINT: Valores numéricos inteiros variando de 0 até 256

SMALLINT: Valores numéricos inteiros variando de –32.768 até 32.767

INT: Valores numéricos inteiros variando de -2.147.483.648 até 2.147.483.647

* BIGINT: Valores numéricos inteiros variando de –92.23.372.036.854.775.808 até 9.223.372.036.854.775.807

BIT: Somente pode assumir os valores 0 ou 1. Utilizado para armazenar valores lógicos.

DECIMAL(I,D) e NUMERIC(I,D): Armazenam valores numéricos inteiros com casas decimais utilizando precisão. "I" deve ser substituído pela quantidade de dígitos total do número e "D" deve ser substituído pela quantidade de dígitos da parte decimal (após a vírgula). DECIMAL e NUMERIC possuem a mesma funcionalidade, porém DECIMAL faz parte do padrão ANSI e NUMERIC é mantido por compatibilidade. O SQL Server internamente armazena o separador decimal como ponto (.) e o separador de milhar como vírgula (,), idependente da configuração do Windows.

SMALLMONEY: Valores numéricos decimais variando de -214.748,3648 até 214.748,3647

MONEY: Valores numéricos decimais variando de -922.337.203.685.477,5808 até 922.337.203.685.477,5807

REAL: Valores numéricos aproximados com precisão de ponto flutuante, indo de -3.40E + 38 até 3.40E + 38

FLOAT: Valores numéricos aproximados com precisão de ponto flutuante, indo de -1.79E + 308 até 1.79E + 308

SMALLDATETIME: Armazena hora e data variando de 1 de janeiro de 1900 até 6 de junho de 2079. A precisão de hora é armazenada até os segundos.

DATETIME: Armazena hora e data variando de 1 de janeiro de 1753 até 31 de Dezembro de 9999. A precisão de hora é armazenada até os centésimos de segundos.

CHAR(N): Armazena N caracteres fixos (até 8.000) no formato não Unicode. Se a quantidade de caracteres armazenada no campo for menor que o tamanho total especificado em N, o resto do campo é preenchido com espaços em branco.

VARCHAR(N): Armazena N caracteres (até 8.000) no formato não Unicode. Se a quantidade de caracteres armazenada no campo for menor que o tamanho total especificado em N, o resto do campo não é preenchido.

TEXT: Armazena caracteres (até 2.147.483.647) no formato não Unicode. Se a quantidade de caracteres armazenada no campo for menor que 2.147.483.647, o resto do campo não é preenchido. Procure não utilizar este tipo de dado diretamente, pois existem funções específicas para trabalhar com este tipo de dado.

NCHAR(N): Armazena N caracteres fixos (até 4.000) no formato Unicode. Se a quantidade de caracteres armazenada no campo for menor que o tamanho total especificado em N, o resto do campo é preenchido com espaços em branco.

NVARCHAR(N): Armazena N caracteres (até 4.000) no formato Unicode. Se a quantidade de caracteres armazenada no campo for menor que o tamanho total especificado em N, o resto do campo não é preenchido.

NTEXT: Armazena caracteres (até 1.073.741.823) no formato Unicode. Se a quantidade de caracteres armazenada no campo for menor que 1.073.741.823, o resto do campo não é preenchido. Procure não utilizar este tipo de dado diretamente, pois existem funções específicas para trabalhar com este tipo de dado.

BINARY(N): Armazena N (até 8.000 bytes) dados no formato binário. Se a quantidade de dados binários armazenados no campo for menor que o tamanho total especificado em N, o resto do campo é preenchido com espaços em branco. Procure não utilizar este tipo de dado diretamente, pois existem funções específicas para trabalhar com este tipo de dado.

VARBINARY(N): Armazena N (até 8.000 bytes) dados no formato binário. Se a quantidade de dados binários armazenados no campo for menor que o tamanho total especificado em N, o resto do campo não é preenchido. Procure não utilizar este tipo de dado diretamente, pois existem funções específicas para trabalhar com este tipo de dado.

IMAGE: Armazena dados no formato binário (até 2,147,483,647 bytes). Se a quantidade de dados binários armazenados no campo for menor que o tamanho total especificado em N, o resto do campo não é preenchido. Procure não utilizar este tipo de dado diretamente, pois existem funções específicas para trabalhar com este tipo de dado.

CURSOR: Armazena uma referência (ponteiro) de um cursor do SQL Server. Não pode ser utilizado como um tipo de dado de uma tabela, somente em declarações de variáveis.

SQL_VARIANT: Permite o armazenamento de todos os tipos de dados em uma mesmo campo de uma tabela com exceção dos tipos TEXT, NTEXT, TIMESTAMP e SQL_VARIANT

TABLE: Armazena um conteúdo do resultado de uma instrução SELECT em uma variável de memória do SQL Server. Não pode ser utilizado como um tipo de dado de uma tabela, somente para declarações em variáveis. Este tipo de dados pode servir para suprir a necessidade de criação de arrays e matrizes no SQL Server.

TIMESTAMP: Este tipo de dado permite a geração automática de uma valor binário para um campo de uma tabela do SQL Server. Cada tabela pode possuir somente um campo com o tipo de dadoTIMESTAMP. Para o tipo de dado TIMESTAMP, devemos ou criar um DEFAULT para seu valor padrão ou passar NULL para este campo em uma instrução INSERT, pois o banco de dados automaticamente gerará um valor binário para esta coluna.

UNIQUEIDENTIFIER: Este tipo de dado deve ser utilizado para a criação de um identificar global para uma coluna de uma tabela. Também podemos possuir somente um campo como tipo UNIQUEIDENTIFIER por tabela. Este identificador deve ser utilizado quando temos certeza absoluta que nenhum valor para o campo deve ser repetido. Para alimentar o conteúdo deste campo, devemos preferencialmente utilizar a função NEWID() que retornar um identificador no formato desde tipo.

* somente funcionam a partir do SQL Server 2000

Esse material está disponibilizado em:
http://imasters.uol.com.br/artigo/244/sql_server/tipos_de_dados_no_sql_server_-_parte_1/

http://imasters.com.br/artigo/245/sql_server/tipos_de_dados_no_sql_server_parte_2/

 
Agradeço a todas essas pessoas que entendem que compartilhar não é perder espaço e sim ganhar!!

 
Até a próxima.

Comentários

Postar um comentário

Postagens mais visitadas deste blog

Conceitos básicos de banco de dados - Integridade

A integridade diz respeito ao nível de confiança das informações do banco de dados, ou seja, a credibilidade das informações e à lógica das informações. Regras de restrição de integridade configuraram um banco de dados para ser alimentado por informações com características lógicas específicas, validadas como verdadeiras antes do seu armazenamento, diminuindo a probabilidade de falta de integridade no banco de dados.