Tipos de dados SQL para MySQL, SQL Server e MS Access

Cada coluna em uma tabela de banco de dados deve ter um nome e um tipo de dados.

Um desenvolvedor SQL deve decidir que tipo de dados serão armazenados dentro de cada coluna ao criar uma tabela. O tipo de dados é uma diretriz para o SQL entender que tipo de dados é esperado dentro de cada coluna e também identifica como o SQL irá interagir com os dados armazenados.

Nota: Os tipos de dados podem ter nomes diferentes em bancos de dados diferentes. E mesmo que o nome seja o mesmo, o tamanho e outros detalhes podem ser diferentes! Verifique sempre a documentação!

Tipos de dados MySQL (versão 8.0)

No MySQL, existem três tipos de dados principais: string, numérico e data e hora.

Tipos de dados de string:

Tipo de dadoDescrição
CHAR(size)Uma string de comprimento FIXO (pode conter letras, números e caracteres especiais). O parâmetro de tamanho especifica o comprimento da coluna em caracteres – pode ser de 0 a 255.
O padrão é 1
VARCHAR(size)VARCHAR é uma string de comprimento VARIÁVEL (pode conter letras, números e caracteres especiais). O parâmetro de tamanho especifica o comprimento máximo da coluna em caracteres.
Pode ser de 0 a 65535.
BINARY(size)Igual a CHAR(), mas armazena cadeias de bytes binários. O parâmetro size especifica o comprimento da coluna em bytes.
O padrão é 1
VARBINARY(size)Igual a VARCHAR (), mas armazena cadeias de bytes binários. O parâmetro size especifica o comprimento máximo da coluna em bytes.
TINYBLOBPara BLOBs (objetos binários grandes). Comprimento máximo: 255 bytes
TINYTEXTContém uma string com comprimento máximo de 255 caracteres
TEXT(size)Contém uma string com comprimento máximo de 65,535 bytes
BLOB(size)Para BLOBs (objetos binários grandes). Armazena até 65.535 bytes de dados
MEDIUMTEXTContém uma string com comprimento máximo de 16,777,215 caracteres.
MEDIUMBLOBPara BLOBs (objetos binários grandes). Armazena até 16,777,215 bytes de dados
LONGTEXTContém uma string com comprimento máximo de 4,294,967,295 caracteres
LONGBLOBPara BLOBs (objetos binários grandes). Armazena até 4,294,967,295 bytes de dados
ENUM(val1, val2, val3, …)Um objeto string que pode ter apenas um valor, escolhido em uma lista de valores possíveis. Você pode listar até 65535 valores em uma lista ENUM. Se for inserido um valor que não está na lista, um valor em branco será inserido. Os valores são classificados na ordem em que você os insere.
SET(val1, val2, val3, …)Um objeto string que pode ter 0 ou mais valores, escolhidos em uma lista de valores possíveis. Você pode listar até 64 valores em uma lista SET.

Tipos de dados numéricos:

Tipo de dadoDescrição
BIT(size)Um tipo de valor de bit. O número de bits por valor é especificado em tamanho. O parâmetro de tamanho pode conter um valor de 1 a 64. O valor padrão para tamanho é 1.
TINYINT(size)Um número inteiro muito pequeno. O intervalo com sinal é de -128 a 127. O intervalo sem sinal é de 0 a 255. O parâmetro de tamanho especifica a largura máxima de exibição (que é 255)
BOOLZero é considerado falso, valores diferentes de zero são considerados verdadeiros.
BOOLEANIgual a BOOL
SMALLINT(size)Um pequeno número inteiro com o intervalo com sinal é de -32768 a 32767. O intervalo sem sinal é de 0 a 65535. O parâmetro de tamanho especifica a largura máxima da tela (que é 255)
MEDIUMINT(size)Um inteiro médio que tem o intervalo com sinal é de -8388608 a 8388607. O intervalo sem sinal é de 0 a 16777215. O parâmetro de tamanho especifica a largura máxima da tela (que é 255)
INT(size)Um inteiro médio com o intervalo com sinal é de -2147483648 a 2147483647. O intervalo sem sinal é de 0 a 4294967295. O parâmetro de tamanho especifica a largura máxima da tela (que é 255)
INTEGER(size)Igual a INT (tamanho)
BIGINT(size)Um grande número inteiro. O intervalo com sinal é de -9223372036854775808 a 9223372036854775807. O intervalo sem sinal é de 0 a 18446744073709551615. O parâmetro de tamanho especifica a largura máxima da tela (que é 255)
FLOAT(sized)Um número de ponto flutuante. O número total de dígitos é especificado em tamanho. O número de dígitos após o ponto decimal é especificado no parâmetro d. Esta sintaxe está obsoleta no MySQL 8.0.17 e será removida em versões futuras do MySQL
FLOAT(p)Um número de ponto flutuante. O MySQL usa o valor p para determinar se deve usar FLOAT ou DOUBLE para o tipo de dados resultante. Se p for de 0 a 24, o tipo de dados se torna FLOAT (). Se p for de 25 a 53, o tipo de dados se tornará DOUBLE ()
DOUBLE(sized)Um número de ponto flutuante de tamanho normal. O número total de dígitos é especificado em tamanho. O número de dígitos após o ponto decimal é especificado no parâmetro d
DOUBLE PRECISION(sized) 
DECIMAL(sized)Um número de ponto fixo exato. O número total de dígitos é especificado em tamanho. O número de dígitos após o ponto decimal é especificado no parâmetro d. O número máximo para tamanho é 65. O número máximo para d é 30. O valor padrão para tamanho é 10. O valor padrão para d é 0.
DEC(sized)Igual a DECIMAL (tamanho, d)

Nota: Todos os tipos de dados numéricos podem ter uma opção extra: UNSIGNED ou ZEROFILL. Se você adicionar a opção UNSIGNED, o MySQL não permitirá valores negativos para a coluna. Se você adicionar a opção ZEROFILL, o MySQL também adiciona automaticamente o atributo UNSIGNED à coluna.

Tipos de dados de data e hora:

Tipo de dadoDescrição
DATEUma data, formato: AAAA-MM-DD. O intervalo compatível é de ‘1000-01-01’ a ‘9999-12-31’
DATETIME(fsp)Uma combinação de data e hora. Formato: AAAA-MM-DD hh: mm: ss. O intervalo compatível é de ‘1000-01-01 00:00:00’ a ‘9999-12-31 23:59:59’. Adicionando DEFAULT e ON UPDATE na definição da coluna para obter inicialização automática e atualização para a data e hora atuais.
TIMESTAMP(fsp)Um carimbo de data / hora. Os valores TIMESTAMP são armazenados como o número de segundos desde a época do Unix (‘1970-01-01 00:00:00’ UTC). Formato: AAAA-MM-DD hh: mm: ss. O intervalo compatível é de ‘1970-01-01 00:00:01’ UTC a ‘2038-01-09 03:14:07’ UTC. A inicialização automática e a atualização para a data e hora atuais podem ser especificadas usando DEFAULT CURRENT_TIMESTAMP e ON UPDATE CURRENT_TIMESTAMP na definição da coluna
TIME(fsp)Um tempo, formato: hh:mm:ss. O intervalo suportado é de ‘-838:59:59’ a ‘838:59:59’
YEARUm ano no formato de quatro dígitos. Valores permitidos no formato de quatro dígitos: 1901 a 2155 e 0000. O MySQL 8.0 não suporta ano no formato de dois dígitos.

Tipos de dados do SQL Server

Tipos de dados de string:

Tipo de DadoDescriçãoTamanho MáximoArmazenamento
char(n)Cadeia de caracteres de largura fixa8,000 caracteresLargura definida
varchar(n)Cadeia de caracteres de largura variável8,000 caracteres2 bytes + número de caracteres
varchar(max)Cadeia de caracteres de largura variável1,073,741,824 caracteres2 bytes + número de caracteres
textCadeia de caracteres de largura variável2 GB de dados de texto4 bytes + número de caracteres
ncharString Unicode de largura fixa4,000 caracteresLargura definida x 2
nvarcharString Unicode de largura variável4,000 caracteres 
nvarchar(max)String Unicode de largura variável536,870,912 caracteres 
ntextString Unicode de largura variável2 GB de dados de texto 
binary(n)String binária de largura fixa8,000 bytes 
varbinaryString binária de largura variável8,000 bytes 
varbinary(max)String binária de largura variável2GB 
imageString binária de largura variável2GB 

Tipos de dados numéricos:

Tipo de dadoDescriçãoArmazenamento
bitInteiro que pode ser 0, 1 ou NULL 
tinyintPermite números inteiros de 0 a 2551 byte
smallintPermite números inteiros entre -32,768 e 32,7672 bytes
intPermite números inteiros entre -2,147,483,648 e 2,147,483,6474 bytes
bigintPermite números inteiros entre -9.223.372.036.854.775.808 e 9.223.372.036.854.775.8078 bytes
decimal(p,s)Precisão fixa e números de escala. Permite números de -10 ^ 38 +1 a 10 ^ 38 –1. O parâmetro p indica o número total máximo de dígitos que podem ser armazenados (à esquerda e à direita do ponto decimal) . p deve ser um valor de 1 a 38. O padrão é 18. O parâmetro s indica o número máximo de dígitos armazenados à direita da vírgula decimal. s deve ser um valor de 0 a p. O valor padrão é 05-17 bytes
numeric(p,s)Precisão fixa e números de escala. Permite números de -10 ^ 38 +1 a 10 ^ 38 –1. O parâmetro p indica o número total máximo de dígitos que podem ser armazenados (à esquerda e à direita do ponto decimal) . p deve ser um valor de 1 a 38. O padrão é 18. O parâmetro s indica o número máximo de dígitos armazenados à direita da vírgula decimal. s deve ser um valor de 0 a p. O valor padrão é 05-17 bytes
smallmoneyDados monetários de -214,748,3648 a 214,748,36474 bytes
moneyDados monetários de -922,337,203,685,477,5808 a 922,337,203,685,477,58078 bytes
float(n)Dados de número de precisão flutuante de -1,79E + 308 a 1,79E + 308. O parâmetro n indica se o campo deve conter 4 ou 8 bytes. float (24) contém um campo de 4 bytes e float (53) contém um campo de 8 bytes. O valor padrão de n é 53.4 or 8 bytes
realDados de número de precisão flutuante de -3,40E + 38 a 3,40E + 384 bytes

Tipos de dados de data e hora:

Tipo de dadoDescriçãoArmazenamento
datetimeDe 1º de janeiro de 1753 a 31 de dezembro de 9999 com uma precisão de 3,33 milissegundos8 bytes
datetime2De 1º de janeiro de 0001 a 31 de dezembro de 9999 com uma precisão de 100 nanossegundos.6-8 bytes
smalldatetimeDe 1º de janeiro de 1900 a 6 de junho de 2079 com uma precisão de 1 minuto.4 bytes
dateArmazene apenas uma data. De 1º de janeiro de 0001 a 31 de dezembro de 9999.3 bytes
timeArmazene um tempo apenas com uma precisão de 100 nanossegundos3-5 bytes
datetimeoffsetO mesmo que datetime2 com a adição de um deslocamento de fuso horário8-10 bytes
timestampArmazena um número exclusivo que é atualizado sempre que uma linha é criada ou modificada. O valor do carimbo de data / hora é baseado em um relógio interno e não corresponde ao tempo real. Cada tabela pode ter apenas uma variável de carimbo de data / hora 

Outros tipos de dados:

Tipo de dadoDescrição
sql_variantArmazena até 8,000 bytes de dados de vários tipos de dados, exceto text, ntext e timestamp
uniqueidentifierArmazena um identificador globalmente exclusivo (GUID)
xmlArmazena dados formatados em XML. 2 GB máximo
cursorArmazena uma referência a um cursor usado para operações de banco de dados.
tableArmazena um conjunto de resultados para processamento posterior.

Tipos de dados do Microsoft Access

Tipo de dadoDescriçãoArmazenamento
TextUse para texto ou combinações de texto e números. 255 caracteres no máximo 
MemoMemo é usado para grandes quantidades de texto. Armazena até 65.536 caracteres. Nota: Você não pode classificar um campo de memorando. No entanto, eles são pesquisáveis 
BytePermite números inteiros de 0 a 2551 byte
IntegerPermite números inteiros entre -32,768 e 32,7672 bytes
LongPermite números inteiros entre -2,147,483,648 e 2,147,483,6474 bytes
SinglePonto flutuante de precisão simples. Vai lidar com a maioria dos decimais.4 bytes
DoublePonto flutuante de dupla precisão. Vai lidar com a maioria dos decimais8 bytes
CurrencyUse para moeda. Detém até 15 dígitos de dólares inteiros, mais 4 casas decimais. Dica: você pode escolher a moeda do país a ser usada8 bytes
AutoNumberOs campos AutoNumeração fornecem automaticamente a cada registro seu próprio número, geralmente começando em 14 bytes
Date/TimeUse para datas e horas8 bytes
Yes/NoUm campo lógico pode ser exibido como Yes/No, True/False ou On/Off. No código, use as constantes True e False (equivalente a -1 e 0). Nota: Valores nulos não são permitidos nos campos Yes/No.1 bit
Ole ObjectPode armazenar imagens, áudio, vídeo ou outros BLOBs (objetos binários grandes).até 1GB
HyperlinkContém links para outros arquivos, incluindo páginas da web. 
Lookup WizardPermite que você digite uma lista de opções, que podem ser escolhidas em uma lista suspensa.4 bytes
Sair da versão mobile