English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
As seções a seguir descrevem os tipos de dados suportados pelo MySQL.
O MySQL suporta três tipos de tipos de dados:As strings,Os númerosEA data/O tempoOs tipos de dados.
Os tipos de dados de string são usados geralmente para armazenar nomes, endereços, descrições ou qualquer valor que contenha letras e números, incluindo dados binários, como imagens ou arquivos de áudio.
CHAR tipos de dados permitem armazenar até255caracteres de comprimento fixo. Enquanto o tipo de dados VARCHAR permite armazenar até65535caracteres de comprimento variável (em MySQL 5.0.3255
CHAR e VARCHAR tipos de dados declarados a comprimento representa o número máximo de caracteres a serem armazenados. Por exemplo, CHAR(55
A principal diferença entre os tipos de dados CHAR e VARCHAR é a forma como eles armazenam dados. Quando um valor é armazenado na coluna CHAR, ele é preenchido à direita com espaços em branco até a comprimento especificado, mas quando um valor é armazenado na coluna VARCHAR, ele não é preenchido. Isso significa que se o valor 'ab' CHAR(4) armazenado em VARCHAR(4) na coluna, o valor será armazenado como “ab”,e o mesmo valor será armazenado como “ab”.
Dica:Use o tipo de dados CHAR para armazenar valores com comprimento fixo, como país/código de região. Para valores de comprimento variável, como nomes ou títulos, VARCHAR pode economizar espaço.
Atenção:O comprimento máximo válido de VARCHAR é limitado pelo tamanho máximo da linha (65535bytes, compartilhados por todas as colunas) e os limites do conjunto de caracteres utilizado.
Os tipos BINARY e VARBINARY são semelhantes a CHAR e VARCHAR, mas a diferença é que eles contêm strings binárias em vez de strings não binárias. O comprimento máximo permitido para BINARY e VARBINARY é o mesmo que para CHAR e VARCHAR, mas a diferença é que o comprimento de BINARY e VARBINARY é expresso em bytes, não em caracteres.
Os tipos de dados TEXT e BLOB são especificamente usados para armazenar grandes quantidades de dados. O tipo de dados TEXT é usado para armazenar strings longas, como descrições, comentários de blogs, etc.
BLOB é um objeto grande binário que pode conter uma quantidade variável de dados. Quando você precisa armazenar arquivos de mídia binários no banco de dados (por exemplo, imagens ou arquivos de áudio), essa funcionalidade é especialmente útil.
Os quatro tipos de BLOB são TINYBLOB, BLOB, MEDIUMBLOB e LONGBLOB. A única diferença entre eles é o comprimento máximo dos valores que podem conter. Da mesma forma, esses quatro tipos de texto são TINYTEXT, TEXT, MEDIUMTEXT e LONGTEXT. Eles correspondem aos quatro tipos de BLOB, com o mesmo comprimento máximo e requisitos de armazenamento.
A tabela a seguir lista os tipos de dados de strings do MySQL que aparecem em pares. Independentemente do tipo ser binário ou não binário, o comprimento máximo é expresso em bytes.
Tipos de dados binários | Tipos de dados não binários | Comprimento máximo |
---|---|---|
BINARY | CHAR | 255 |
VARBINARY | VARCHAR | 65535 |
TINYBLOB | TINYTEXT | 255 |
BLOB | TEXT | 65535 |
MEDIUMBLOB | MEDIUMTEXT | 16777215 |
LONGBLOB | LONGTEXT | 4294967295 |
Atenção:Para tipos de dados de strings não binárias, o valor da comprimento da coluna geralmente é chamado de número de caracteres em vez de número de bytes. Isso significa que a string contendo caracteres de múltiplos bytes tem um número máximo menor de caracteres.
O tipo de dados ENUM permite que você especifique uma lista de valores possíveis que podem ser armazenados na coluna. Por exemplo, especificar ENUM de gênero ('masculino', 'feminino') NOT A coluna NULL pode ter os seguintes valores: '' (vazio), 'male' ou 'female'. Você pode especificar até65535valores diferentes. Se você inserir um valor inválido na coluna ENUM (ou seja, uma string que não existe na lista de valores permitidos), será inserido uma string vazia.
O tipo de dados SET permite especificar a lista de valores a serem inseridos na coluna, como ENUM. No entanto, diferentemente do tipo de dados ENUM, que permite a seleção de apenas um valor, o tipo de dados SET permite a seleção de múltiplos valores da lista especificada.
Por exemplo, uma coluna especificada como option SET('one', 'two') NOT NULL pode armazenar os seguintes valores: "one", 'two' ou 'one,two'. Múltiplos valores separados por vírgula (,). Para o tipo de dados SET, pode-se especificar64valores diferentes.
Os tipos de dados numéricos são geralmente usados para armazenar dados como preços, salários, etc.
O MySQL suporta os tipos de dados inteiros padrão do SQL INTEGER (ou INT) e SMALLINT. O MySQL também suporta os tipos de dados inteiros TINYINT, MEDIUMINT e BIGINT como extensão do padrão SQL. A tabela a seguir mostra o intervalo de cada tipo de dados inteiro.
tipos de dados | intervalo (assinado) | intervalo (sem sinal) |
---|---|---|
TINYINT | -128 até 127 | 0 até |
SMALLINT | -32768 até 32767 | 0 até |
MEDIUMINT | -8388608 até 8388607 | 0 até |
INT | -2147483648 até 2147483647 | 0 até |
BIGINT | -9223372036854775808 até 9223372036854775807 | 0 até |
Os tipos de dados numéricos têm os atributos adicionais SIGNED (símbolo) e UNSIGNED (sem sinal). Os tipos de dados numéricos são assinados por padrão, com um intervalo de valores de negativo a positivo. Adicionar o atributo UNSIGNED à coluna numérica não permite o uso de números negativos e move o intervalo, começando do zero em vez de um número negativo.
Os tipos de dados DECIMAL e NUMERIC são usados para armazenar valores numéricos precisos. Esses tipos de dados também são chamados de 'ponto flutuante' ou 'valor exato', e são geralmente usados quando é necessário manter a precisão, como armazenar dados monetários como preços de produtos. No MySQL, NUMERIC é implementado como DECIMAL.
Ao declarar colunas DECIMAL ou NUMERIC, pode-se especificar a precisão e o número de casas decimais, por exemplo DECIMAL(P, S) ou NUMERIC(P, S), onde P é a precisão e S é o número de casas decimais. a especificação de precisão pode determinar o número máximo de dígitos que podem ser armazenados na coluna (incluindo os dígitos após o ponto decimal), enquanto o número de casas decimais representa o número de dígitos que podem ser armazenados após o ponto decimal. Por exemplo, preço DECIMAL(62coluna pode armazenar qualquer valor com seis dígitos e duas casas decimais, ou seja-9999.99até9999.99entre os valores.
Os tipos FLOAT e DOUBLE representam valores de dados numéricos aproximados. Por isso, esses tipos de dados também são chamados de “ponto flutuante” ou “aproximados”.
A sintaxe suportada pelo MySQL é FLOAT(M, D) ou DOUBLE PRECISION(M, D). 73,-9999.999” O MySQL arredonda os valores ao armazenar, portanto, se converter9999.0009Inserir FLOAT (73“) coluna9999.001”
Atenção:A comparação de valores de ponto flutuante pode causar problemas, pois eles são valores aproximados, não valores exatos. Portanto, para armazenar valores que podem ser usados para comparação, como price, salary, etc., use o tipo de dados DECIMAL.
Os tipos de dados de data e hora (DATE e TIME) são usados para armazenar dados, como data de nascimento, data de contratação, data e hora de criação ou atualização de registros na tabela, etc.
O tipo DATE é usado para armazenar datas. O MySQL DATE armazena no formato 'YYYY-MM-DD” para armazenar e recuperar valores, onde YYYY, MM e DD são as partes de ano, mês e dia do tempo. O intervalo suportado é “ 1000-01-01” até “ 9999-12-31”
O tipo TIME pode ser usado para armazenar dias de tempo ou intervalos de tempo. O MySQL TIME armazena e recupera valores no formato 'HH:MM:SS', onde HH, MM e SS são as partes de hora, minuto e segundo do tempo (ou no formato 'HHH:MM:SS' para horas). O intervalo de valores suportados é '-838:59:59” até “838:59:59”.
A parte de hora pode ser muito grande, porque no MySQL, o tipo TIME pode ser usado não apenas para armazenar o tempo do dia (deve ser menor que24horas), e também pode ser usado para o tempo decorrido ou o intervalo entre dois eventos (pode ser muito maior que24horas, até mesmo negativas).
Atenção:Por padrão, valores válidos que excedem o intervalo de TIME serão truncados para o ponto mais próximo do intervalo. Por exemplo, “ 860:00:00” será convertido em “ 838:59:59”. Valores de TIME inválidos serão convertidos em “ 00:00:00”.
Os tipos de dados DATETIME e TIMESTAMP são usados para representar 'YYYY-MM-DD HH:MM:SS' para armazenar valores de data e hora combinados. Esses tipos de dados são geralmente usados para armazenar data e hora de distribuição de pedidos, data e hora de criação ou modificação de uma linha na tabela, etc.
Esses tipos de dados são semelhantes em muitos aspectos, mas há algumas diferenças. O DATETIME suporta o intervalo '1000-01-01 00:00:00' até '9999-12-31 23:59:59No entanto, o intervalo do timestamp é '1970-01-01 00:00:01' UTC para '2038-01-19 03:14:07UTC.
TIMESTAMP e DATETIME também têm propriedades de inicialização e atualização automáticas especiais, mas essas propriedades não se aplicam ao MySQL 5.6.5DATETIMEM anterior.
Atenção: O MySQL converte o valor TIMESTAMP do fuso horário atual para UTC para armazenamento, e depois converte de UTC para o fuso horário atual para recuperação.
O tipo de dados YEAR é usado para armazenar valores de ano em formato YYYY.
Pode ser declarado como YEAR ou YEAR(4) Os valores YEAR suportados variam de1901até2155. Valores YEAR inválidos serão convertidos para 0000.
Atenção:Versões mais antigas do MySQL ainda permitem usar para armazenar valores de ano de dois dígitos YEAR(2) agora está descontinuado e está disponível no MySQL 5.7.5Já foi removido o suporte para ele.