Pular para o conteúdo principal

Tipos de dados – SQL Server 2008


Olá pessoal!
Nessa semana vamos falar um pouco sobre os tipos de dados no SQL Server 2008. É muito importante conhecer bem todos os tipos de dados disponíveis, para utilizá-los da melhor forma no seu projeto de banco de dados. Usando corretamente o tipo de dado nas colunas das tabelas, garantirá uma boa performance, escalabilidade e integridade da informação ali armazenada.
Tipos numéricos:
TINYINT: Armazena valores numéricos inteiros, variando de 0 a 256
SMALLINT: Armazena valores numéricos inteiros, variando de -32.768 a 32.767
INT: Armazena valores numéricos inteiros, variando de -2.147.483.648 a 2.147.483.647
BIGINT: Armazena valores numéricos inteiros, variando de -9.223.372.036.854.775.808 a -9.223.372.036.854.775.807
SMALLMONEY: Valores numéricos decimais variando de -214,748.3648 a 214,748.3647
MONEY: Valores numéricos decimais variando de -922,337,203,685,477.5808 a +922,337,203,685,477.5807
NUMERIC(18,0): Armazena valores numéricos com casas decimais, utilizando precisão. O primeiro número entre os parenteses, representa a quantidade de inteiros a serem armazenados, o segundo número, indica a quantidade de casas decimais do número.
DECIMAL(18,0): Tem as mesmas funcionalidades do tipo NUMERIC, a diferença é que o DECIMAL faz parte do padrão ANSI e NUMERIC é mantido por compatibilidade.
FLOAT: Armazena valores numéricos aproximados com precisão de ponto flutuante, variando de -1.79E + 308 a 1.79E + 308
REAL: Armazena valores numéricos aproximados com precisão de ponto flutuante, variando de -3.40E + 38 a 3.40E + 38
Tipo BIT:
BIT: Armazena bits ou seja somente poderá conter os valores lógicos 0 ou 1.
Tipo data:
SMALLDATETIME: Armazena data e hora, com precisão de minutos.
DATETIME: Armazena data e hora, com precisão de centésimos de segundos.
TIME: Armazena somente hora. Pode armazenar segundos até a fração de 9999999
DATE: Armazena somente data.
DATETIME2: É uma combinação dos tipos de dados DATE e TIME. A diferença para o tipo DATETIME é a precisão ao armazenar as horas.
DATETIMEOFFSET: Armazena valores data e hora com a combinação da hora do dia com o fuso horário. O intervalo de deslocamento do fuso horário é de -14:00 a +14:00
Tipos caracteres:
CHAR(N): Armazena N caracteres fixos (até 8.000) no formato não Unicode. Independente da quantidade de caracteres utilizados, irá sempre armazenar o tamanho de caracteres do campo, sendo preenchido o restante com espaços em branco
VARCHAR(N): Armazena N caracteres (até 8.000) no formato não Unicode
VARCHAR(MAX): Armazena caracteres no formato não Unicode. MAX indica que o máximo a ser armazenado pode chegar a 2^31-1 bytes
TEXT: Armazena caracteres no formato não Unicode. Esse tipo de dado suporte até 2.147.483.647 caracteres e existem funções específicas para trabalhar com esse tipo de dado
NCHAR(N): Armazena N caracteres fixos (até 4.000) no formato Unicode. Independente da quantidade de caracteres utilizados, irá sempre armazenar o tamanho de caracteres do campo, sendo preenchido o restante com espaços em branco
NVARCHAR(N): Armazena N caracteres (até 4.000) no formato Unicode.
NVARCHAR(MAX): Armazena caracteres no formato Unicode. MAX indica que o máximo a ser armazenado pode chegar a 2^31-1 bytes
NTEXT: Armazena caracteres no formato Unicode. Esse tipo de dado suporte até 1.073.741.823 caracteres e existem funções específicas para trabalhar com esse tipo de dado
Outros tipos de dados:
BINARY(N): Armazena dados no formato binário, podendo chegar até 8.000 bytes. Independente da quantidade de dados armazenados, será preenchido com espaços em brancos até completar o tamanho do campo.
VARBINARY(N): Armazena dados no formato binário, podendo chegar até 8.000 bytes.
VARBINARY(MAX): Armazena dados no formato binário, podendo chegar até 2^31-1 bytes
IMAGE: Armazena dados no formato binário, podendo chegar até 2,147,483,647 bytes
SQL_VARIANT: Armazena todos os tipos de dados em um mesmo campo de uma tabela, com exceção dos tipos TEXT, NTEXT, TIMESTAMP e SQL_VARIANT
TIMESTAMP: Este tipo de dados permite a geração automatica de um valor binário para um campo de uma tabela.
UNIQUEIDENTIFIER: Esse tipo de dados é utilizado para a criação de um identificador global e único para uma tabela do SQL Server.
GEOMETRY: Armazena dados espaciais utilizando representação plana da Terra (Flat Earth)
GEOGRAPHY: Armazena dados espaciais utilizando representação redonda da Terra (Round Earth)
HIERARCHYID: É usado para representar uma posição em uma hierarquia. Uma coluna desse tipo não representa automaticamente uma arvore. É até a aplicação para gerar e atribuir valores hierarchyid de tal forma que a relação desejada entre as linhas é refletido nos valores.
XML: Armazena dados no formato XML, não podendo exceder a 2Gb
Bom pessoa, essa foi uma breve explicação sobre os tipos de dados existentes no SQL Server 2008. Ao longo dos artigos que falaremos de SQL Server, estaremos vendo muito esses tipos de dados e suas implementações.
Um abraço e até a próxima

Postagens mais visitadas deste blog

REST Protheus Converter charset CP1252 para UTF8 com Header Accept UTF-8

O Protheus possui um tag que pode ser utilizada para conversão para UTF8 de forma transparente, basta enviar no header da requisição a TAG ACCEPT com charset=UTF-8, também pode-se adicionar o appllication/json. Accept : application/json; charset=UTF-8 ou Accept : charset=UTF-8 Isso ajuda pois não precisa mais utilizar as funções DecodeUTF8 e EncodeUT8 pois o próprio rest já vai fazer isso.

Recursividade Minha Linda! Estrutura Produtos Protheus SG1

Fato! Depois que você conhece recursividade em sua vida tudo fica mais leve (rss... ) a recursividade pode ser infinita (pode não ta!) se for infinita vai dar problema, não pode. Mas a recursividade nos ajuda a deixar nosso sistema mais flexível e dinâmico para montar uma série de regras de negócio. Hoje vou falar exatamente da SG1, tabela TOTVS Microsiga Protheus que é utilizada para montar a estrutura de um produto dentro PCP (Planejamento e Controle de Produção). Isso séria algo que a recursividade iria ajudar. Na SG1 temos o campos G1_COD (Pai) e G1_COMP (Filho). G1_COD->G1_COMP->G1_COD->G1_COMP->G1_COD->G1_COMP Seria assim o fluxo da informação. Sem mais delongas, abaixo vou deixar o script para MSSQL para apresentar esses dados. Inté! WITH ESTRUT( CODIGO, COD_PAI, COD_COMP, QTD, PERDA, DT_INI, DT_FIM ,TRT ,RECNO, NIVEL ) AS ( SELECT G1_COD PAI, G1_COD, G1_COMP, G1_QUANT, G1_PERDA, G1_INI, G1_FIM,G1_TRT,SG1.R_E_C_N_O_, 1 AS NIVEL FR

Cadastro de funções ADVPL

FWDirRemove( cDir, nType, lComplete, lKillFiles ) Função para remover diretórios, com a vantagem de remover somente o ultimo nível ou todo o caminho. cDir                   Diretório a ser removido lComplete          Remove todo o caminho (.T.) ou apenas o ultimo nível (.F.) lKillFiles             Remove os arquivos antes de tentar remover o diretório FWMakeDir( cDir, lShowMsg ) Função para criar diretório com seus subdiretórios, com a vantagem de criar todo o caminho. cDir                    Diretório a ser criado lShowMsg          Exibe ou não mensagem caso não consiga criar o diretório FwNoAccent( cString ) Retira acentos de uma string cString                 String a ser retirado os acentos Exemplo: cString := 'O avião não pôde aterrissar de manhã' cString := FwNoAccent( cString ) // Retorna : 'O aviao nao pode aterrissar de manha' FWGetSX5( cTable, cKey ) Função de retorno dos campos de uma tabela no SX5 cTable                  Tabela para pesquisa no SX5. Par