O que é tipo de dados?
Um tipo de dados é definido como o tipo de dados que qualquer coluna ou variável pode armazenar no MS SQL Server.
Ao criar qualquer tabela ou variável, além de especificar o nome, você também define o tipo de dados que armazenará.
Como usar o tipo de dados MS SQL
- Você precisa definir com antecedência o tipo de dados que uma coluna ou variável pode armazenar. A determinação do tipo de dados também restringe o usuário de inserir quaisquer dados inesperados ou inválidos.
- Você pode fazer uso eficiente da memória atribuindo um tipo de dados apropriado à variável ou coluna que alocará apenas a quantidade necessária de memória do sistema para os dados da respectiva coluna.
- O MS SQL oferece uma ampla categoria de tipos de dados de acordo com as necessidades do usuário. Como data, imagens binárias, etc.
Neste tutorial, você aprenderá:
- O que é tipo de dados?
- Como usar o tipo de dados MS SQL
- Por que usar DataTypes?
- Numérico Exato
- Numérico Aproximado
- Data e hora
- Strings de personagem
- Strings de caracteres Unicode
- String Binária
- Outros tipos de dados
Por que usar DataTypes?
Vamos dar uma amostra da página de inscrição simples do aplicativo do site. Três campos de entrada são Nome, Sobrenome e Número de contato.
Aqui, devemos observar que em tempo real:
- "Nome / Sobrenome" sempre será alfabético .
- "Contato" sempre será numérico .
- A partir da imagem acima, vale a pena definir "Nome / Sobrenome" como um caractere e " Contato" como um inteiro .
É evidente que em qualquer aplicação, todos os campos possuem um ou outro tipo de dado. Por exemplo, numérico, alfabético, data e muito mais.
Além disso, observe que tipos de dados diferentes têm requisitos de memória diferentes. Portanto, faz mais sentido definir a coluna ou variável com o tipo de dados que ela conterá para o uso eficiente da memória.
Tipo de dados disponível em MS SQL
O servidor MS SQL suporta as seguintes categorias de tipo de dados:
- Numérico exato
- Aproximado numérico
- Data e hora
- Cadeias de caracteres
- Strings de caracteres Unicode
- Strings binárias
- Outros tipos de dados
Numérico Exato
Numérico exato tem nove tipos de subtipos de dados. Tipos de dados numéricos exatos
Tipo de dados | Descrição | Limite inferior | Limite superior | Memória |
---|---|---|---|---|
bigint | Ele armazena números inteiros no intervalo fornecido | −2 63 (−9.223.372, 036.854.775.808) | 2 63−1 (−9.223.372, 036.854.775.807) | 8 bytes |
int | Ele armazena números inteiros no intervalo fornecido | −2 31 (−2.147, 483.648) | 2 31−1 (−2,147, 483,647) | 4 bytes |
smallint | Ele armazena números inteiros no intervalo fornecido | −2 15 (−32.767) | 2 15 (-32.768) | 2 bytes |
tinyint | Ele armazena números inteiros no intervalo fornecido | 0 | 255 | 1 byte |
mordeu | Pode ter valores 0, 1 ou NULL. | 0 | 1 | 1 byte / coluna de 8 bits |
decimal | Usado para escala e números de precisão fixa | -10 38 + 1 | 10 381−1 | 5 a 17 bytes |
numérico | Usado para escala e números de precisão fixa | -10 38 + 1 | 10 381−1 | 5 a 17 bytes |
dinheiro | Dados monetários usados | -922.337, 203, 685.477.5808 | +922.337, 203, 685.477.5807 | 8 bytes |
dinheirinho | Dados monetários usados | -214.478,3648 | +214.478.3647 | 4 bytes |
Exemplos:
Consulta:
DECLARE @Datatype_Int INT = 2PRINT @Datatype_Int
Produto: 2
Sintaxe: Decimal (P, S)
Aqui,
- P é precisão
- S é escala
Consulta:
DECLARE @Datatype_Decimal DECIMAL (3,2) = 2.31PRINT @Datatype_Decimal
Produto: 2,31
Numérico Aproximado
A categoria numérica aproximada inclui ponto flutuante e valores reais. Eles são usados principalmente em cálculos científicos. Tipo de dados numéricos aproximados
Tipo de dados | Descrição | Limite inferior | Limite superior | Memória | Precisão |
---|---|---|---|---|---|
float (n) | Usado para um número de precisão flutuante | -1,79E + 308 | 1,79E + 308 | Depende do valor de n | 7 dígitos |
real | Usado para um número de precisão flutuante | -3,40E + 38 | 3,40E + 38 | 4 bytes | 15 dígitos |
Syntax: FLOAT [(n)]
Aqui, n é o número de bits usados para armazenar a mantissa do número flutuante em notação científica. Por padrão, o valor de n é 53.
Quando o usuário define um tipo de dados como float, n deve ser um valor entre 1 e 53.
O SQL Server trata n como um de dois valores possíveis. Se 1 <= n <= 24, n é tratado como 24. Se 25 <= n <= 53, n é tratado como 53.
Consulta de exemplo:
DECLARE @Datatype_Float FLOAT(24) = 22.1234PRINT @Datatype_Float
Saída: 22.1234
Data e hora
Ele armazena dados do tipo Data e hora. Tipo de dados de data e hora
Tipo de dados | Descrição | Tamanho de armazenamento | Precisão | Faixa Inferior | Faixa Superior |
---|---|---|---|---|---|
Data hora | Usado para especificar uma data e hora de 1º de janeiro de 1753 a 31 de dezembro de 9999. Tem uma precisão de 3,33 milissegundos. | 8 bytes | Arredondado para incrementos de 0,000, 0,003, 0,007 | 1753-01-01 | 9999-12-31 |
smalldatetime | Usado para especificar uma data e hora de 1º de janeiro de 0001 a 31 de dezembro de 9999. Tem uma precisão de 100 nanossegundos | 4 bytes, fixo | 1 minuto | 01-01-1900 | 06/06/2079 |
encontro | Usado para armazenar apenas a data de 1º de janeiro de 0001 a 31 de dezembro de 9999 | 3 bytes, fixo | 1 dia | 0001-01-01 | 9999-12-31 |
Tempo | Usado para armazenar apenas valores de tempo com uma precisão de 100 nanossegundos. | 5 bytes | 100 nanossegundos | 00: 00: 00.0000000 | 23: 59: 59,9999999 |
datetimeoffset | Semelhante ao datatime, mas tem uma diferença de fuso horário | 10 bytes | 100 nanossegundos | 0001-01-01 | 9999-12-31 |
datetime2 | Usado para especificar uma data e hora de 1º de janeiro de 0001 a 31 de dezembro de 9999 | 6 bytes | 100 nanossegundos | 0001-01-01 | 9999-12-31 |
Consulta de exemplo:
DECLARE @Datatype_Date DATE = '2030-01-01'PRINT @Datatype_Date
Resultado: '2030-01-01'
Strings de personagem
Esta categoria está relacionada a um tipo de personagem. Ele permite ao usuário definir o tipo de dado do caractere, que pode ser de comprimento fixo e variável. Ele possui quatro tipos de tipos de dados. Tipos de dados de strings de caracteres
Tipo de dados | Descrição | Limite inferior | Limite superior | Memória |
---|---|---|---|---|
Caracteres | É uma string de caracteres com largura fixa. Ele armazena no máximo 8.000 caracteres. | 0 caracteres | 8000 caracteres | n bytes |
varchar | Esta é uma string de caracteres com largura variável | 0 caracteres | 8000 caracteres | n bytes + 2 bytes |
varchar (max) | Esta é uma string de caracteres com largura variável. Ele armazena no máximo 1.073.741.824 caracteres. | 0 caracteres | 2 31 caracteres | n bytes + 2 bytes |
texto | Esta é uma string de caracteres com largura variável. Ele armazena no máximo 2 GB de dados de texto. | 0 caracteres | 2.147.483.647 caracteres | n bytes + 4 bytes |
Consulta de exemplo:
DECLARE @Datatype_Char VARCHAR(30) = 'This is Character Datatype'PRINT @Datatype_Char
Saída: este é o tipo de dados de caractere
Strings de caracteres Unicode
Esta categoria armazena toda a gama de caracteres Unicode que usam a codificação de caracteres UTF-16. Tipos de dados de string de caracteres Unicode
Tipo de dados | Descrição | Limite inferior | Limite superior | Memória |
---|---|---|---|---|
nchar | É uma string Unicode de largura fixa | 0 caracteres | 4000 caracteres | 2 vezes n bytes |
nvarchar | É uma string Unicode de largura variável | 0 caracteres | 4000 caracteres | 2 vezes n bytes + 2 bytes |
ntext | É uma string Unicode de largura variável | 0 caracteres | 1.073.741.823 char | 2 vezes o comprimento da corda |
Consulta de exemplo:
DECLARE @Datatype_nChar VARCHAR(30) = 'This is nCharacter Datatype'PRINT @Datatype_nChar
Saída: Este é o tipo de dados nCharacter
String Binária
Esta categoria contém uma string binária de comprimento fixo e variável. Tipos de dados de string binárias
Tipo de dados | Descrição | Limite inferior | Limite superior | Memória |
---|---|---|---|---|
binário | É uma string binária de largura fixa. Ele armazena no máximo 8.000 bytes. | 0 bytes | 8000 bytes | n bytes |
varbinary | Esta é uma string binária de largura variável. Ele armazena no máximo 8.000 bytes | 0 bytes | 8000 bytes | O comprimento real dos dados inseridos + 2 bytes |
imagem | Esta é uma string binária de largura variável. Ele armazena no máximo 2 GB. | 0 bytes | 2.147.483.647 bytes |
Consulta de exemplo:
DECLARE @Datatype_Binary BINARY(2) = 12;PRINT @Datatype_Binary
Saída: 0x000C
Outros tipos de dados
Estes são outros tipos de dados diferentes com a descrição abaixo-
Tipo de dados | Descrição |
---|---|
Cursor | Sua saída é uma coluna de sp_cursor_list e sp_describe_cursor. Ele retorna o nome da variável do cursor. |
Versão de linha | A versão carimba as linhas da tabela. |
Hierárquico | Este tipo de dados representa uma posição na hierarquia |
Identificador único | Conversão de uma expressão de personagem. |
Sql_variant | Ele armazena valores de tipos de dados suportados pelo servidor SQL. |
XML | Ele armazena dados XML em uma coluna. |
Tipo de geometria espacial | Ele representa dados em um sistema de coordenadas simples. |
Tipo de geografia espacial | Ele representa dados no sistema de coordenadas de terra redonda. |
tabela | Ele armazena um conjunto de resultados para processamento posterior. |
Fatos interessantes!
- O tipo de dados CHAR é mais rápido do que VARCHAR durante a recuperação de dados.
Resumo:
- Cada coluna nas tabelas é definida com seu tipo de dados durante a criação da tabela.
- Existem seis categorias principais e uma outra categoria diversa. Outros diversos têm nove subcategorias de tipos de dados disponíveis.