[+/-]
MySQL suporta um certo números de tipos de campos que podem ser agrupaos em três categorias: tipos numéricos, tipos de data e hora, e tipos string (caracteres). Esta seção primeiro lhe dá uma visão geral dos tipos disponíveis e resume as exigencias de armazenamento em cada tipo de coluna, também fornece uma descrição mais detalhada da propriedade dos tipos em cada categoria. A visão dada é propositalmente breve. As descrições mais detalhdas devem ser consultadas para informações adicionais sobre tipos de campo particulares como os formatos permitidos nos quais você pode especificar valores.
Os tipos de campos suportados pelo MySQL estão listados abaixo: As seguintes letras são usadas como código nas descrições:
          M
        
Indica o tamanho máximo do display. O tamanho máximo oficial do display é 255.
          D
        
          Aplica aos tipos de ponto flutuante e indica o número de
          digitos após o ponto decimal. O maior valor possível é 30,
          mas não pode ser maior que M-2.
        
      Colchetes (‘[’ and
      ‘]’) indicam partes de tipos
      específicos que são opicionais
    
      Note que se você especificar ZEROFILL para um
      campo MySQL automaticamente irá adicionar o atributo
      UNSIGNED ao campo.
    
      Aviso: você deve estar ciente de
      que quando fizer uma subtração entre valores inteiros, onde um
      deles é do tipo UNSIGNED, o resultado será
      sem sinal! See Secção 6.3.5, “Funções de Conversão”.
    
          TINYINT[(M)] [UNSIGNED] [ZEROFILL]
        
          Um inteiro muito pequeno. A faixa deste inteiro com sinal é
          de -128 até 127. A
          faixa sem sinal é de 0 até
          255.
        
          BIT, BOOL,
          BOOLEAN
        
          Estes são sinônimos para TINYINT(1).
        
          O sinônimo BOOLEAN foi adicionado na
          versão 4.1.0.
        
Um tipo boolean verdadeiro será introduzido de acordo com o SQL-99.
          SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
        
          Um inteiro pequeno. A faixa do inteiro com sinal é de
          -32768 até 32767. A
          faixa sem sinal é de 0 a
          65535.
        
          MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
        
          Um inteiro de tamanho médio. A faica com sinal é de
          -8388608 a 8388607. A
          faixa sem sinal é de 0 to
          16777215.
        
          INT[(M)] [UNSIGNED] [ZEROFILL]
        
          Um inteiro de tamanho normal. A faixa com sinal é de
          -2147483648 a
          2147483647. A faixa sem sinal é de
          0 a 4294967295.
        
          INTEGER[(M)] [UNSIGNED] [ZEROFILL]
        
          Este é um sinônimo para INT.
        
          BIGINT[(M)] [UNSIGNED] [ZEROFILL]
        
          Um inteiro grande. A faixa com sinal é de
          -9223372036854775808 a
          9223372036854775807. A faixa sem sinal é
          de 0 a
          18446744073709551615.
        
          Existem algumas coisas sobre campos BIGINT
          sobre as quias você deve estar ciente:
        
                
                Todas as operações aritiméticas são feitas usando
                valores BIGINT ou
                DOUBLE com sinal, não devemos
                utilçizar inteiros sem sinal maiores que
                9223372036854775807 (63 bits) exceto
                com funções ded bit! Se você fizer isto, alguns dos
                últimos digitos no resultado podem estar errados por
                causa de erros de arredondamento na conversão de
                BIGINT para
                DOUBLE.
              
                O MySQL 4.0 pode tratar BIGINT nos
                seguintes casos:
              
                    Usar inteiros para armazenar grandes valores sem
                    sinais em uma coluna BIGINT.
                  
                    Em MIN(big_int_column) e
                    MAX(big_int_column).
                  
                    Quando usar operadores (+,
                    -, *, etc.)
                    onde ambos os operandos são inteiros.
                  
                Você pode armazenar valores inteiro exatos em um campo
                BIGINT aramzenando-os como string,
                como ocorre nestes casos não haverá nenhuma
                representação intermediaria dupla.
              
                ‘-’,
                ‘+’, e
                ‘*’ serão utilizados em
                cálculos aritiméticos BIGINT quando
                ambos os argumentos forem valores do tipo
                INTEGER! Isto significa que se você
                multilicar dois inteiros grandes (ou obter resultados de
                funções que retornam inteiros) você pode obter
                resultados inesperados quando o resultado for maior que
                9223372036854775807.
              
          FLOAT(precisão) [UNSIGNED] [ZEROFILL]
        
          Um número de ponto flutuante. Não pode ser sem sinal.
          precisão pode ser
          <=24 para um número de ponto flutuante
          de precisão simples e entre 25 e 53 para um número de ponto
          flutuante de dupla-precisão. Estes tipos são como os tipos
          FLOAT e DOUBLE descritos
          logo abaixo. FLOAT(X) tem o mesma faixa que
          os tipos correspondentes FLOAT e
          DOUBLE, mas o tamanho do display e número
          de casas decimais é indefinido.
        
          Na versão 3.23 do MySQL, este é um verdadeiro valor de ponto
          flutuante. Em versões anteriores ,
          FLOAT(precisão) sempre tem 2 casas
          decimais.
        
          Note que o uso de FLOAT pode trazer alguns
          problemas inesperados como nos cálculos já que em MySQL
          todos são feitos com dupla-precisão. See
          Secção A.5.6, “Resolvendo Problemas Com Registros Não Encontrados”.
        
          FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
        
          Um número de ponto flutuante pequeno (precisão simples). Os
          valores permitidos estão entre
          -3.402823466E+38 e
          -1.175494351E-38, 0 e
          entre 1.175494351E-38 e
          3.402823466E+38. Se
          UNSIGNED for especificado, valores
          negativos não são permitidos O M é a
          largura do display e o D é o número de
          casas decimais. FLOAT sem um argumento ou
          FLOAT(X) onde X <=24
          tende a um número de ponto flutuante de precisão simples.
        
          DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
        
          Um número de ponto flutuante de tamanho normal
          (dupla-precisão). Valores permitidos estão entre
          -1.7976931348623157E+308 e
          -2.2250738585072014E-308,
          0 e entre
          2.2250738585072014E-308 e
          1.7976931348623157E+308. Se
          UNSIGNED for especificado, valores
          negativos não são permitidos. O M é a
          largura do display e o D é número de casa
          decimais. DOUBLE sem argumento ou
          FLOAT(X) onde 25 <= X <= 53 são
          números de ponto flutuante de dupla-precisão.
        
          DOUBLE PRECISION[(M,D)] [UNSIGNED]
          [ZEROFILL], REAL[(M,D)] [UNSIGNED]
          [ZEROFILL]
        
          Estes são sinônimos para DOUBLE.
        
          DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]
        
          Um número de ponto flutuante não empacotado. Se comporta
          como um campo CHAR: ``não empacotado''
          significa que o número é armazenado como uma string, usando
          um caracter para cada digito do valor. O ponto decimal e, para
          números negativos, o sinal de menos
          (‘-’), não são contados em M
          (mas é reservado espaço para isto). Se D
          for 0, os valores não terão ponto decimal ou parte
          fracionária. A faixa máxima do valor
          DECIMAL é a mesma do
          DOUBLE, mas a faixa atual para um campo
          DECIMAL dado pode ser limitado pela escolha
          de M e D. Se
          UNSIGNED é especificado, valores negativos
          não são permitidos.
        
          Se D não for definido será considerado
          como 0. Se M não for definido é
          considerado como 10.
        
          Note que antes da versão 3.23 do MySQL o argumento
          M deve incluir o espaço necessário para o
          sinal é o ponto decimal.
        
          DEC[(M[,D])] [UNSIGNED] [ZEROFILL],
          NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL],
          FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]
        
          Este é um sinônimo para DECIMAL.
        
          O alias FIXED foi adicionado na versão
          4.1.0 para compatibilidade com outros servidores.
        
          DATE
        
          Uma data. A faixa suportada é entre
          '1000-01-01' e
          '9999-12-31'. MySQL mostra valores
          DATE no formato
          'AAAA-MM-DD', mas permite a você a
          atribuir valores a campos DATE utilizando
          tanto strings quanto números. See Secção 6.2.2.2, “Os Tipos DATETIME, DATE e
          TIMESTAMP”.
        
          DATETIME
        
          Um combinação de hora e data. A faixa suportada é entre
          '1000-01-01 00:00:00' e
          '9999-12-31 23:59:59'. MySQL mostra valores
          DATETIME no formato 'AAAA-MM-DD
          HH:MM:SS', mas permite a você que atribuir valores
          a campos DATETIME utilizado strings ou
          números. See Secção 6.2.2.2, “Os Tipos DATETIME, DATE e
          TIMESTAMP”.
        
          TIMESTAMP[(M)]
        
          Um timestamp. A faixa é entre '1970-01-01
          00:00:00' e algum momento no ano
          2037.
        
          No MySQL 4.0 ou anteriores, os valores
          TIMESTAMP são exibidos nos formatos
          YYYYMMDDHHMMSS,
          YYMMDDHHMMSS, YYYYMMDD,
          ou YYMMDD, dependendo se
          M é 14 (ou não
          definido), 12, 8 ou
          6, mas permite a você atribuir valores ao
          campo TIMESTAMP usando strings ou números.
        
          Um campo TIMESTAMP é util para gravar a
          data e a hora em uma operação de INSERT
          or UPDATE porque é automaticamente
          definido a data e a hora da operação mais recente se você
          próprio não especificar um valor. Você também pode definir
          a data e a hora atual atribuindo ao campo um valor
          NULL. See
          Secção 6.2.2, “Tipos de Data e Hora”.
        
          Desde o MySQL 4.1, TIMESTAMP é retornado
          com um string com o formato 'YYYY-MM-DD
          HH:MM:SS'. Se você deseja tê-lo como um número
          você deve adcionar +0 a coluna timestamp. Teimestamp de
          tamanhos diferentes não são supoortados. Desde a versão
          4.0.12, a opção --new pode ser usada para
          fazer o servidor se comportar como na versào 4.1.
        
          Um TIMESTAMP sempre é armazenado em 4
          bytes. O argumento M só afeta como a
          coluna TIMESTAMP é exibida.
        
          Note que colunas do tipo TIMESTAMP(M)
          columns onde M é 8 ou 14 são apresentadas como números
          enquanto as outras colunas TIMESTAMP(M)
          são strings. Isto é apenas para assegurar que podemos
          eliminar e restaurar com segurança tabelas com estes tipos!
          See Secção 6.2.2.2, “Os Tipos DATETIME, DATE e
          TIMESTAMP”.
        
          TIME
        
          Uma hora. A faixa é entre '-838:59:59' e
          '838:59:59'. MySQL mostra valores
          TIME no formato
          'HH:MM:SS', mas permite a você atribuir
          valores para as colunas TIME usando strings
          ou números. See Secção 6.2.2.3, “O Tipo TIME”.
        
          YEAR[(2|4)]
        
          Um ano no formato de 2 ou 4 digitos (padrão são 4 digitos).
          Os valores permitidos estão entre 1901 e
          2155, 0000 no formato de
          4 digitos, e 1970-2069 se você estiver usando o formato de 2
          digitos (70-69). MySQL mostra valores YEAR
          no formato YYYY, mas permie atribuir
          valores aos campos do tipo YEAR usando
          strings ou números. (O tipo YEAR é novo
          na versão 3.22 do MySL). See Secção 6.2.2.4, “O Tipo YEAR”.
        
          [NATIONAL] CHAR(M) [BINARY | ASCII |
          UNICODE]
        
          Uma string de tamanho fixo que é sempre preenchida a direita
          com espaços até o tamanho especificado quando armazenado. A
          faixa de M é de 1 a 255 caracteres.
          Espaços extras são removidos quando o valor é recuperado.
          Valores CHAR são ordenados e comparados no
          modo caso insensitivo de acordo com o conjunto de caracteres
          padrão, a menos que a palavra chave BINARY
          seja utilizada.
        
          A partir da versão 4.1.0, se o valor M
          especificado é maio que 255, o tipo de coluna é convertido
          para TEXT. Este é um recurso de
          compatibilidade.
        
          NATIONAL CHAR (ou em sua forma reduzida
          NCHAR) é o modo SQL-99 de definir que um
          campo CHAR deve usar o conjunto CHARACTER
          padrão. Este é o padrão no MySQL.
        
          CHAR é uma simplificação para
          CHARACTER.
        
          A partir da versão 4.1.0, o atributo ASCII
          pode ser especificado o que atribui o conjunto de caracteres
          latin1 a coluna CHAR.
        
          A partir da versão 4.1.1, o atributo
          UNICODE pode ser especificado o que atribui
          o conjunto de caracteres ucs2 a coluna
          CHAR.
        
          O MySQL lhe permite criar um campo do tipo
          CHAR(0).Isto é muito útil quando você
          precisa de comptibilidade com aplicativos antigos que dependem
          da existência de uma coluna, mas que, na verdade, não
          utiliza um valor. Isto também é muito bom quando você
          precisa de uma coluna que só pode receber 2 valores. Um
          CHAR(0), que não é definido como um
          NOT NULL, só irá ocupar um bit e pode
          assumir 2 valores: NULL or
          "". See Secção 6.2.3.1, “Os Tipos CHAR e VARCHAR”.
        
          BIT, BOOL,
          CHAR
        
          This is a synonym for CHAR(1).
        
          [NATIONAL] VARCHAR(M) [BINARY]
        
          Uma string de tamanho variável.
          NOTA: Espaços extras são
          removidos quando o caracter é armazenado (o que difere da
          especificação ANSI SQL). A faixa de M é
          de 1 a 255 characters. Valores VARCHAR são
          ordenados e comparados no modo caso insensitivo a menos que a
          palavra chave BINARY seja utilizada. See
          Secção 6.5.3.1, “Alteração de Especificações de Colunas”.
        
          A partir da versão 4.1.0, se o valor M
          especificado é maio que 255, o tipo de coluna é convertido
          para TEXT. Este é um recurso de
          compatibilidade.
        
          VARCHAR é uma simplificação para
          CHARACTER VARYING. See
          Secção 6.2.3.1, “Os Tipos CHAR e VARCHAR”.
        
          TINYBLOB, TINYTEXT
        
          Um campo BLOB ou TEXT
          com tamanho máximo de 255 (2^8 - 1) caracteres. See
          Secção 6.5.3.1, “Alteração de Especificações de Colunas”. See
          Secção 6.2.3.2, “Os Tipos BLOB e TEXT”.
        
          BLOB, TEXT
        
          Um campo BLOB ou TEXT
          com tamanho máximo de 65535 (2^16 - 1) caracteres. See
          Secção 6.5.3.1, “Alteração de Especificações de Colunas”. See
          Secção 6.2.3.2, “Os Tipos BLOB e TEXT”.
        
          MEDIUMBLOB, MEDIUMTEXT
        
          Um campo BLOB ou TEXT
          com tamanho máximo de 16777215 (2^24 - 1) caracteres. See
          Secção 6.5.3.1, “Alteração de Especificações de Colunas”. See
          Secção 6.2.3.2, “Os Tipos BLOB e TEXT”.
        
          LONGBLOB, LONGTEXT
        
          Um campo BLOB ou TEXT
          com tamanho máximo de 4294967295 ou 4G (2^32 - 1) caracteres.
          See Secção 6.5.3.1, “Alteração de Especificações de Colunas”. See
          Secção 6.2.3.2, “Os Tipos BLOB e TEXT”. Até a versão 3.23 o protocolo
          cliente/servidor e tabelas MyISAM tinham um limite de 16M por
          pacote de transmissão/registro de tabela, a partir da versão
          4.x o tamanho máximo permitido das colunas
          LONGTEXT ou LONGBLOB
          depende do tamanho máximo configurado para o pacote no
          protocolo cliente/servidor e da memória disponível. See
          Secção 6.2.3.2, “Os Tipos BLOB e TEXT”.
        
          ENUM('valor1','valor2',...)
        
          Uma enumeração. Um objeto string que só pode ter um valor,
          selecionado da lista de valores 'valor1',
          'valor2', ...,
          NULL ou valor especial de erro
          "". Um ENUM pode ter um
          máximo de 65535 valores diferentes. See
          Secção 6.2.3.3, “O Tipo ENUM”.
        
          SET('valor1','valor2',...)
        
          Um conjunto. Um objeto string que pode ter zero ou mais
          valores, cada um deve ser selecionado da lista de valores
          'valor1', 'valor2',
          .... Um SET pode ter
          até 64 membros. See Secção 6.2.3.4, “O Tipo SET”.
        
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

