O tipo de dados ENUM no MySQL é um objeto string . Permite limitar o valor escolhido em uma lista de valores permitidos na especificação da coluna no momento da criação da tabela. É curto para enumeração , o que significa que cada coluna pode ter um dos valores possíveis especificados. Ele usa índices numéricos (1, 2, 3…) para representar valores de string.
MySQL O tipo de dados ENUM contém as seguintes vantagens:
- Armazenamento de dados compacto onde a coluna pode ter um conjunto limitado de valores possíveis especificados. Aqui, os valores da string são usados automaticamente como um índice numérico.
- Ele permite consultas e saídas legíveis porque os números podem ser traduzidos novamente para a string correspondente.
- Ele pode aceitar muitos tipos de dados como inteiro, ponto flutuante, decimal e string.
Sintaxe
A seguir está a sintaxe usada para definir o tipo de dados ENUM na coluna:
CREATE TABLE table_name ( Column1, Column2 ENUM ('value_1','value_2','value_3'), Column3… );
Na sintaxe acima, definimos apenas três valores ENUM, mas podem ser aumentados de acordo com nossas necessidades. Aqui, temos que ter certeza de que os valores de enumeração devem sempre ficar dentro do literal de string citada .
MySQL nos permite definir o tipo de dados ENUM com os seguintes atributos:
jframe
NÃO NULO: Por padrão, o tipo de dados ENUM é NULL. Se não quisermos permitir valores NULL, é necessário usar a propriedade NOT NULL ao especificar a coluna ENUM.
NULO: É sinônimo de DEFAULT NULL e seu valor de índice é sempre NULL.
PADRÃO: Quando um valor não é especificado na coluna, o tipo de dados ENUM insere o valor padrão. Em outras palavras, se a instrução INSERT não fornecer um valor para esta coluna, o valor padrão será inserido. A expressão DEFAULT não permite inserir função. O tipo de dados ENUM em My SQL inclui os valores DEFAULT como NULL ou uma string vazia ('').
Exemplo de MySQL ENUM
Vamos entender como o tipo de dados ENUM funciona no MySQL com a ilustração a seguir. Aqui, vamos criar uma tabela chamada ' camisas 'que contém três colunas: id, nome e tamanho.
A coluna de tamanho usa o tipo de dados ENUM e tem tamanhos pequeno, médio, grande e x-grande. O MySQL mapeia esses membros da enumeração para um índice numérico onde pequeno=1, médio=2, grande=3 e x-grande=4 respectivamente. Execute a seguinte consulta para criar uma tabela:
CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', 'medium', 'large', 'x-large') );
A seguir, precisamos inserir os valores na tabela. Durante a inserção, os valores de enumeração podem ser inseridos como a string literal ou como seus índices numéricos, e ambos são iguais. Execute a seguinte instrução para inserir os valores na tabela:
lista de criação de java
INSERT INTO shirts(id, name, size) VALUES (1,'t-shirt', 'medium'), (2, 'casual-shirt', 3), (3, 'formal-shirt', 4), (4, 'polo-shirt', 'small');
Agora, execute a instrução SELECT para ver os valores inseridos na tabela:
mysql> SELECT * FROM shirts;
A imagem a seguir contém todos os resultados da consulta acima que contêm os valores de enumeração apenas em literais de string:
Classificação ENUM
O MySQL classifica os valores de enumeração com base em seus índices numéricos que dependem da ordem em que inserimos os dados na especificação da coluna. Por exemplo , se tivermos definido a enumeração como ENUM ('b', 'a', '', 'c'). Então, b vem antes de a, a string vazia vem antes de c (string não vazia) e o valor NULL vem antes de outros valores.
Portanto, se não quisermos obter resultados inesperados com o tipo de dados ENUM usando a cláusula ORDER BY, siga estas regras:
travessia em ordem
- Defina os valores de enumeração em ordem alfabética.
- É para garantir que o nome da coluna esteja em ordem lexical e não em número de índice.
O exemplo a seguir explica a classificação de enumeração com mais clareza. Então, se você deseja obter o tamanho das camisas em uma ordem específica, execute o comando abaixo:
mysql> SELECT * FROM shirts ORDER BY size DESC;
Esta consulta dará o resultado abaixo, onde podemos ver que o tamanho das camisas está em ordem decrescente:
Limitações do tipo de dados ENUM
A seguir estão as desvantagens do tipo de dados ENUM no MySQL:
1. Se quisermos modificar os valores/membros da enumeração, isso pode ser feito reconstruindo a tabela inteira usando o comando ALTER TABLE. Também faz uso caro de nossos recursos e tempo.
string substring java
2. Não podemos usar uma expressão com membros de enumeração. Por exemplo, esta instrução CREATE não é executada porque usa a função CONCAT() para criar membros de enumeração.
CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', CONCAT('med','ium'), 'large', 'x-large') );
3. Não podemos usar a variável de usuário como membro de enumeração. Isso pode ser visto no exemplo abaixo:
SET @mysize = 'large'; CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', 'medium', @mysize, 'x-large') );
4. Recomenda-se que não utilizemos valores numéricos como membros da enumeração.
5. É complexo obter uma lista completa de enumeração de informações porque precisamos acessar o banco de dados information_schema.
6. Podemos enfrentar um problema durante a portabilidade do ENUM para outro RDBMS porque muitos bancos de dados não suportam este tipo de dados.
7. Não podemos adicionar mais atributos às listas de enumeração.