MySQL - Tipos de dados
Definir adequadamente os campos em uma tabela é importante para a otimização geral do seu banco de dados. Você deve usar apenas o tipo e tamanho de campo que realmente precisa usar. Por exemplo, não defina um campo de 10 caracteres de largura, se você sabe que usará apenas 2 caracteres. Esses tipos de campos (ou colunas) também são chamados de tipos de dados, após otype of data você estará armazenando nesses campos.
O MySQL usa muitos tipos de dados diferentes divididos em três categorias -
- Numeric
- Data e hora
- Tipos de string.
Vamos agora discuti-los em detalhes.
Tipos de dados numéricos
O MySQL usa todos os tipos de dados numéricos ANSI SQL padrão, portanto, se você estiver chegando ao MySQL de um sistema de banco de dados diferente, essas definições parecerão familiares para você.
A lista a seguir mostra os tipos de dados numéricos comuns e suas descrições -
INT- Um inteiro de tamanho normal que pode ser assinado ou não assinado. Se assinado, o intervalo permitido é de -2147483648 a 2147483647. Se não assinado, o intervalo permitido é de 0 a 4294967295. Você pode especificar uma largura de até 11 dígitos.
TINYINT- Um número inteiro muito pequeno que pode ser assinado ou não assinado. Se assinado, o intervalo permitido é de -128 a 127. Se não assinado, o intervalo permitido é de 0 a 255. Você pode especificar uma largura de até 4 dígitos.
SMALLINT- Um pequeno número inteiro que pode ser assinado ou não assinado. Se assinado, o intervalo permitido é de -32768 a 32767. Se não assinado, o intervalo permitido é de 0 a 65535. Você pode especificar uma largura de até 5 dígitos.
MEDIUMINT- Um inteiro de tamanho médio que pode ser assinado ou não assinado. Se assinado, o intervalo permitido é de -8388608 a 8388607. Se não assinado, o intervalo permitido é de 0 a 16777215. Você pode especificar uma largura de até 9 dígitos.
BIGINT- Um grande número inteiro que pode ser assinado ou não assinado. Se assinado, o intervalo permitido é de -9223372036854775808 a 9223372036854775807. Se não assinado, o intervalo permitido é de 0 a 18446744073709551615. Você pode especificar uma largura de até 20 dígitos.
FLOAT(M,D)- Um número de ponto flutuante que não pode ser sem sinal. Você pode definir o comprimento de exibição (M) e o número de decimais (D). Isso não é obrigatório e o padrão é 10,2, onde 2 é o número de decimais e 10 é o número total de dígitos (incluindo decimais). A precisão decimal pode chegar a 24 casas para um FLOAT.
DOUBLE(M,D)- Um número de ponto flutuante de precisão dupla que não pode ser sem sinal. Você pode definir o comprimento de exibição (M) e o número de decimais (D). Isso não é obrigatório e o padrão é 16,4, onde 4 é o número de decimais. A precisão decimal pode chegar a 53 casas para um DOUBLE. REAL é sinônimo de DOUBLE.
DECIMAL(M,D)- Um número de ponto flutuante descompactado que não pode ser sem sinal. Nos decimais não compactados, cada decimal corresponde a um byte. É necessário definir o comprimento de exibição (M) e o número de decimais (D). NUMERIC é sinônimo de DECIMAL.
Tipos de data e hora
Os tipos de dados de data e hora do MySQL são os seguintes -
DATE- Uma data no formato AAAA-MM-DD, entre 1000-01-01 e 9999-12-31. Por exemplo, 30 de Dezembro th de 1973 seria armazenado como 1973/12/30.
DATETIME- Uma combinação de data e hora no formato AAAA-MM-DD HH: MM: SS, entre 1000-01-01 00:00:00 e 9999-12-31 23:59:59. Por exemplo, 3:30 da tarde de 30 de dezembro th de 1973 seria armazenado como 1973/12/30 15:30:00.
TIMESTAMP- Um timestamp entre meia-noite, 01 de janeiro st , 1970 e em algum momento de 2037. Isto parece o formato DATETIME anterior, só que sem os hífens entre números; 3:30 da tarde de 30 de dezembro th de 1973 seria armazenado como 19731230153000 (YYYYMMDDHHMMSS).
TIME - Armazena a hora no formato HH: MM: SS.
YEAR(M)- Armazena um ano em um formato de 2 ou 4 dígitos. Se o comprimento for especificado como 2 (por exemplo, ANO (2)), ANO pode ser entre 1970 a 2069 (70 a 69). Se o comprimento for especificado como 4, YEAR pode ser de 1901 a 2155. O comprimento padrão é 4.
Tipos de String
Embora os tipos numéricos e de data sejam divertidos, a maioria dos dados que você armazenará estarão em formato de string. Esta lista descreve os tipos de dados de string comuns no MySQL.
CHAR(M)- Uma string de comprimento fixo entre 1 e 255 caracteres (por exemplo CHAR (5)), preenchida à direita com espaços para o comprimento especificado quando armazenado. Definir um comprimento não é obrigatório, mas o padrão é 1.
VARCHAR(M)- Uma string de comprimento variável entre 1 e 255 caracteres. Por exemplo, VARCHAR (25). Você deve definir um comprimento ao criar um campo VARCHAR.
BLOB or TEXT- Um campo com comprimento máximo de 65535 caracteres. BLOBs são "Objetos Binários Grandes" e são usados para armazenar grandes quantidades de dados binários, como imagens ou outros tipos de arquivos. Os campos definidos como TEXTO também contêm grandes quantidades de dados. A diferença entre os dois é que as classificações e comparações nos dados armazenados sãocase sensitive em BLOBs e são not case sensitivenos campos TEXT. Você não especifica um comprimento com BLOB ou TEXT.
TINYBLOB or TINYTEXT- Uma coluna BLOB ou TEXT com comprimento máximo de 255 caracteres. Você não especifica um comprimento com TINYBLOB ou TINYTEXT.
MEDIUMBLOB or MEDIUMTEXT- Uma coluna BLOB ou TEXT com comprimento máximo de 16777215 caracteres. Você não especifica um comprimento com MEDIUMBLOB ou MEDIUMTEXT.
LONGBLOB or LONGTEXT- Uma coluna BLOB ou TEXT com comprimento máximo de 4294967295 caracteres. Você não especifica um comprimento com LONGBLOB ou LONGTEXT.
ENUM- Uma enumeração, que é um termo sofisticado para lista. Ao definir um ENUM, você está criando uma lista de itens a partir dos quais o valor deve ser selecionado (ou pode ser NULL). Por exemplo, se você quiser que seu campo contenha "A" ou "B" ou "C", você deve definir seu ENUM como ENUM ('A', 'B', 'C') e apenas esses valores (ou NULL) jamais poderia preencher esse campo.
No próximo capítulo, discutiremos como criar tabelas no MySQL.