Crie um site como este com o WordPress.com
Comece agora

Parte 2 – Tipo de Dados – Serie – Aprendendo TSQL

Fala pessoal, tudo bem? 

Vamos falar sobre tipo de dados? (Data Type)
Você, que está começando, sabe os tipos de dados que podem ser usados para armazenar suas informações? 

O SQL SERVER nos dá diversas opções de definições de dados, porém não é por que um tipo de dado suporta o conteúdo que você quer armazenar que ele é o ideal, por exemplo, de maneira genérica, não há por que eu ter uma coluna com tipo de dado que aceite texto se eu só irei armazenar datas. Existem diversas razões que justifiquem isso, mas podemos destacar as principais como: Queda de performance em determinadas operações e má utilização de espaço em disco e memória. 

É importante que você tenha isto em mente, digo isso pois no início da minha carreira não foi destacado para mim tal importância, somente se falava em questão do espaço em disco, o que em alguns cenários não fica tão evidente, ainda assim, acredite, tente sempre definir os objetos com os melhores tipos de dados, seja na definição da tabela, variáveis, parâmetros de funções, procedures, etc. 

Alguns fatos sobre a importância deste mapeamento: 

  • O SQL SERVER leva em consideração vários fatores para estimar a quantidade de memória que será disponibilizada para execução de uma query e o tipo de dados é um destes fatores. Se a consulta está consumindo muita memória desnecessariamente, esta memória poderia estar sendo utilizada por outros recursos.  A falta de memória pode gerar leituras em disco, o que é mais lento do que só consultando a memória, então cuide bem da memória, ela deve ser sua melhor amiga. 
  • O espaço que é gasto para armazenar um dado pode ser duplicado, triplicado e até mais, tudo vai depender da quantidade de índices que tem em sua tabela, pois para cada índice que é criado, são gerados novas páginas de dados, isto porque cada índice pode ter uma estrutura e ordenação diferente. 

Abaixo, descreverei somente os tipos de dados mais usados, na maior parte dos casos devem ser suficientes para você modelar seu banco e orientar quem está começando: 

Tipos de dados que armazenam caracteres do tipo texto, números, pontos, traços entre outros: 

OBS: Dentro dos parênteses (n), especificamos o limite máximo de caracteres, o número máximo para declaração do campo é de 8000, porém caso eu queira gravar algo maior que 8000 caracteres devemos declarar como (MAX) sendo possível armazenar até 2GB de informações! 

Data Type: CHAR (n)  
FormatoN/A 
Limite: (nArmazenamento:  (n) 
DescriçãoA quantidade de bytes será igual a (n), ou seja, se defini o campo como char(30), o campo SEMPRE irá ocupar 30 bytes, independente se forem preenchidos somente 1 caractere.  
Data Type: VARCHAR (n)  
FormatoN/A 
Limite: (nArmazenamento:  2 bytes + quantidade de caracteres preenchidos. 
Descrição2 bytes + 1 byte por caractere, ou seja, se defini como varchar(30) e preenchi somente 1 caractere ele ocupará um total de 3 bytes. (2 bytes por ser varchar + 1 byte do único caractere preenchido).  

Curiosidades

Caso na declaração de parâmetros, variáveis ou na criação de uma tabela, não especificarmos o valor de (n)  o SQL irá considerar somente 1 caractere, porém, caso façamos uma conversão em uma instrução de consulta, o SQL irá considerar até 30 caracteres. 

Tipo de dados para armazenar DATAS: 

Data Type: Date 
FormatoAAAA-MM-DD 
Limite0001-01-01 a 9999-12-31 
Armazenamento:  3 bytes. 
DescriçãoOcupam sempre 3 bytes independente da data inserida.   
Data Type: Datetime 
FormatoAAAAA-MM-DD hh:mm:ss[.nnn] 
Limite1753-01-01 a 9999-12-31 23:59:59.997 
Armazenamento:  8 bytes. 
DescriçãoOcupam sempre 8 bytes independente da data inserida.  

Tipo de dado inteiro que aceita somente 0 e 1 e NULL
(Verdadeiro e falso): 

Data Type: Bit 
FormatoN/A 
Limite0,1 e NULL 
Armazenamento:  1 a 8 colunas 1 byte 
DescriçãoO armazenamento funciona de maneira diferente, a cada 8 colunas ou menos são gastos apenas 1 byte, ou seja: 
1 a 8 colunas – 1 byte 
9 a 16 colunas – 2 bytes  
E assim por diante.  

Curiosidades

Caso tentamos converter ‘TRUE’ direto para bit é convertido para o valor 1 e ‘FALSE’ em 0. 

Caso tentamos converter um valor inteiro qualquer diferente de 0 para bit, retornará sempre 1. 

Tipo de dados para armazenar números inteiros: 

Data Type: INT 
FormatoN/A 
Limite-2.147.483.648 a 2.147.483.647 
Armazenamento:  4 bytes 
DescriçãoOcupam 4 bytes de armazenamento, independente do valor inserido.  
Data Type: BIGINT 
FormatoN/A 
Limite-9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 
Armazenamento:  8 bytes 
DescriçãoOcupam 8 bytes de armazenamento, independente do valor inserido.  

Tipo de dados para armazenar decimais, como valores financeiros entre outros: 

OBS: Dentro do parêntese (p,s), especificamos em ordem precisão e escala, o número máximo para precisão é de 38 números. (à esquerda da vírgula) 

Data Type: DECIMAL (p,s) / NUMERIC (p,s) 
FormatoN/A 
Limite(p,s) 
Armazenamento:  5 a 17 bytes 
DescriçãoIrá ocupar de acordo com a precisão definida. 
1 a 9 – 5 bytes 
10 – 19 – 9 bytes 
20 – 28 – 13 bytes  
29 – 38 – 17 bytes  

É isso pessoal, até a próxima! 

Contribuição: Igor Santos. 

Referências:  

CHAR E VARCHAR – https://docs.microsoft.com/pt-br/sql/t-sql/data-types/char-and-varchar-transact-sql?view=sql-server-2017 

DATE E DATETIME – https://docs.microsoft.com/pt-br/sql/t-sql/functions/date-and-time-data-types-and-functions-transact-sql?view=sql-server-2017 

BIT – https://docs.microsoft.com/pt-br/sql/t-sql/data-types/bit-transact-sql?view=sql-server-2017 

INT E BIGINT – https://docs.microsoft.com/pt-br/sql/t-sql/data-types/int-bigint-smallint-and-tinyint-transact-sql?view=sql-server-2017 

DECIMAL E NUMERIC – https://docs.microsoft.com/pt-br/sql/t-sql/data-types/decimal-and-numeric-transact-sql?view=sql-server-2017 

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Crie um website ou blog gratuito no WordPress.com.

Acima ↑

%d blogueiros gostam disto: