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 dado | Descriçã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. |
TINYBLOB | Para BLOBs (objetos binários grandes). Comprimento máximo: 255 bytes |
TINYTEXT | Conté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 |
MEDIUMTEXT | Contém uma string com comprimento máximo de 16,777,215 caracteres. |
MEDIUMBLOB | Para BLOBs (objetos binários grandes). Armazena até 16,777,215 bytes de dados |
LONGTEXT | Contém uma string com comprimento máximo de 4,294,967,295 caracteres |
LONGBLOB | Para 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 dado | Descriçã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) |
BOOL | Zero é considerado falso, valores diferentes de zero são considerados verdadeiros. |
BOOLEAN | Igual 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(size, d) | 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(size, d) | 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(size, d) | |
DECIMAL(size, d) | 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(size, d) | 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 dado | Descrição |
---|---|
DATE | Uma 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’ |
YEAR | Um 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 Dado | Descrição | Tamanho Máximo | Armazenamento |
---|---|---|---|
char(n) | Cadeia de caracteres de largura fixa | 8,000 caracteres | Largura definida |
varchar(n) | Cadeia de caracteres de largura variável | 8,000 caracteres | 2 bytes + número de caracteres |
varchar(max) | Cadeia de caracteres de largura variável | 1,073,741,824 caracteres | 2 bytes + número de caracteres |
text | Cadeia de caracteres de largura variável | 2 GB de dados de texto | 4 bytes + número de caracteres |
nchar | String Unicode de largura fixa | 4,000 caracteres | Largura definida x 2 |
nvarchar | String Unicode de largura variável | 4,000 caracteres | |
nvarchar(max) | String Unicode de largura variável | 536,870,912 caracteres | |
ntext | String Unicode de largura variável | 2 GB de dados de texto | |
binary(n) | String binária de largura fixa | 8,000 bytes | |
varbinary | String binária de largura variável | 8,000 bytes | |
varbinary(max) | String binária de largura variável | 2GB | |
image | String binária de largura variável | 2GB |
Tipos de dados numéricos:
Tipo de dado | Descrição | Armazenamento |
---|---|---|
bit | Inteiro que pode ser 0, 1 ou NULL | |
tinyint | Permite números inteiros de 0 a 255 | 1 byte |
smallint | Permite números inteiros entre -32,768 e 32,767 | 2 bytes |
int | Permite números inteiros entre -2,147,483,648 e 2,147,483,647 | 4 bytes |
bigint | Permite números inteiros entre -9.223.372.036.854.775.808 e 9.223.372.036.854.775.807 | 8 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 é 0 | 5-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 é 0 | 5-17 bytes |
smallmoney | Dados monetários de -214,748,3648 a 214,748,3647 | 4 bytes |
money | Dados monetários de -922,337,203,685,477,5808 a 922,337,203,685,477,5807 | 8 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 |
real | Dados de número de precisão flutuante de -3,40E + 38 a 3,40E + 38 | 4 bytes |
Tipos de dados de data e hora:
Tipo de dado | Descrição | Armazenamento |
---|---|---|
datetime | De 1º de janeiro de 1753 a 31 de dezembro de 9999 com uma precisão de 3,33 milissegundos | 8 bytes |
datetime2 | De 1º de janeiro de 0001 a 31 de dezembro de 9999 com uma precisão de 100 nanossegundos. | 6-8 bytes |
smalldatetime | De 1º de janeiro de 1900 a 6 de junho de 2079 com uma precisão de 1 minuto. | 4 bytes |
date | Armazene apenas uma data. De 1º de janeiro de 0001 a 31 de dezembro de 9999. | 3 bytes |
time | Armazene um tempo apenas com uma precisão de 100 nanossegundos | 3-5 bytes |
datetimeoffset | O mesmo que datetime2 com a adição de um deslocamento de fuso horário | 8-10 bytes |
timestamp | Armazena 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 dado | Descrição |
---|---|
sql_variant | Armazena até 8,000 bytes de dados de vários tipos de dados, exceto text, ntext e timestamp |
uniqueidentifier | Armazena um identificador globalmente exclusivo (GUID) |
xml | Armazena dados formatados em XML. 2 GB máximo |
cursor | Armazena uma referência a um cursor usado para operações de banco de dados. |
table | Armazena um conjunto de resultados para processamento posterior. |
Tipos de dados do Microsoft Access
Tipo de dado | Descrição | Armazenamento |
---|---|---|
Text | Use para texto ou combinações de texto e números. 255 caracteres no máximo | |
Memo | Memo é 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 | |
Byte | Permite números inteiros de 0 a 255 | 1 byte |
Integer | Permite números inteiros entre -32,768 e 32,767 | 2 bytes |
Long | Permite números inteiros entre -2,147,483,648 e 2,147,483,647 | 4 bytes |
Single | Ponto flutuante de precisão simples. Vai lidar com a maioria dos decimais. | 4 bytes |
Double | Ponto flutuante de dupla precisão. Vai lidar com a maioria dos decimais | 8 bytes |
Currency | Use 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 usada | 8 bytes |
AutoNumber | Os campos AutoNumeração fornecem automaticamente a cada registro seu próprio número, geralmente começando em 1 | 4 bytes |
Date/Time | Use para datas e horas | 8 bytes |
Yes/No | Um 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 Object | Pode armazenar imagens, áudio, vídeo ou outros BLOBs (objetos binários grandes). | até 1GB |
Hyperlink | Contém links para outros arquivos, incluindo páginas da web. | |
Lookup Wizard | Permite que você digite uma lista de opções, que podem ser escolhidas em uma lista suspensa. | 4 bytes |