logo

MySQL ENUM

El tipus de dades ENUM a MySQL és a objecte de cadena . Ens permet limitar el valor escollit d'una llista de valors permesos a l'especificació de la columna en el moment de la creació de la taula. És curt per enumeració , el que significa que cada columna pot tenir un dels valors possibles especificats. S'utilitza índexs numèrics (1, 2, 3...) per representar valors de cadena.

MySQL El tipus de dades ENUM conté els avantatges següents:

  • Emmagatzematge compacte de dades on la columna pot tenir un conjunt limitat de valors possibles especificats. Aquí, els valors de cadena s'utilitzen automàticament com a índex numèric.
  • Permet consultes i sortida llegibles perquè els números es poden traduir de nou a la cadena corresponent.
  • Pot acceptar molts tipus de dades com ara nombre enter, coma flotant, decimal i cadena.

Sintaxi

Les següents són la sintaxi utilitzada per definir el tipus de dades ENUM a la columna:

 CREATE TABLE table_name ( Column1, Column2 ENUM ('value_1','value_2','value_3'), Column3… ); 

En la sintaxi anterior, hem definit només tres valors ENUM, però es pot augmentar segons les nostres necessitats. Aquí, ens hem d'assegurar que els valors d'enumeració sempre s'han de mantenir dins de literal de cadena entre cometes .

MySQL ens permet definir el tipus de dades ENUM amb els següents atributs:

NO NULL: Per defecte, el tipus de dades ENUM és NULL. Si no volem permetre els valors NULL, cal utilitzar la propietat NOT NULL mentre s'especifica la columna ENUM.

cadena comparable

NUL: És un sinònim de DEFAULT NULL i el seu valor d'índex sempre és NULL.

PER Defecte: Quan no s'especifica un valor a la columna, el tipus de dades ENUM insereix el valor predeterminat. En altres paraules, si la instrucció INSERT no proporciona un valor per a aquesta columna, s'inserirà el valor per defecte. L'expressió DEFAULT no permet inserir la funció. El tipus de dades ENUM a My SQL inclou els valors DEFAULT com a NULL o una cadena buida ('').

subratlla amb css

Exemple MySQL ENUM

Entendrem com funciona el tipus de dades ENUM a MySQL amb la il·lustració següent. Aquí, crearem una taula anomenada ' samarretes ' que conté tres columnes: id, nom i mida.

La columna de mida utilitza el tipus de dades ENUM i té mides petites, mitjanes, grans i x-grans. MySQL assigna aquests membres d'enumeració a un índex numèric on petit=1, mitjà=2, gran=3 i x-gran=4 respectivament. Executeu la consulta següent per crear una taula:

 CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', 'medium', 'large', 'x-large') ); 

A continuació, hem de fer-ho inserir els valors a la taula. Durant la inserció, els valors d'enumeració es poden inserir com a literal de cadena o els seus índexs numèrics, i tots dos són iguals. Executeu la instrucció següent per inserir els valors a la taula:

 INSERT INTO shirts(id, name, size) VALUES (1,'t-shirt', 'medium'), (2, 'casual-shirt', 3), (3, 'formal-shirt', 4), (4, 'polo-shirt', 'small'); 

Ara, executeu la instrucció SELECT per veure els valors inserits a la taula:

 mysql> SELECT * FROM shirts; 

La imatge següent conté tots els resultats de la consulta anteriors que contenen els valors d'enumeració només en literals de cadena:

MySQL ENUM

Classificació ENUM

MySQL ordena els valors d'enumeració en funció dels seus índexs numèrics que depenen de l'ordre en què hem inserit les dades a l'especificació de la columna. Per exemple , si hem definit l'enumeració com a ENUM ('b', 'a', '', 'c'). Aleshores, b va abans de a, la cadena buida abans de c (cadena no buida) i el valor NULL abans d'altres valors.

Per tant, si no volem obtenir un resultat inesperat amb el tipus de dades ENUM utilitzant la clàusula ORDER BY, seguiu aquestes regles:

c programes
  • Definiu els valors d'enumeració en ordre alfabètic.
  • Es tracta d'assegurar-se que el nom de la columna estigui en ordre lèxic en lloc del número d'índex.

L'exemple següent explica l'ordenació d'enumeració amb més claredat. Per tant, si voleu obtenir la mida de les samarretes en un ordre específic, executeu la declaració següent:

 mysql> SELECT * FROM shirts ORDER BY size DESC; 

Aquesta consulta donarà la sortida a continuació, on podem veure que la mida de les samarretes està en ordre descendent:

MySQL ENUM

Limitacions del tipus de dades ENUM

Els següents són els desavantatges del tipus de dades ENUM a MySQL:

1. Si volem modificar els valors/membres d'enumeració, es pot fer reconstruint tota la taula mitjançant l'ordre ALTER TABLE. També fa un ús car dels nostres recursos i temps.

2. No podem utilitzar una expressió amb membres d'enumeració. Per exemple, aquesta instrucció CREATE no s'executa perquè utilitza la funció CONCAT() per crear membres d'enumeració.

 CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', CONCAT('med','ium'), 'large', 'x-large') ); 

3. No podem utilitzar la variable d'usuari com a membre d'enumeració. Es pot veure a l'exemple següent:

pausa java
 SET @mysize = 'large'; CREATE TABLE shirts ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(35), size ENUM('small', 'medium', @mysize, 'x-large') ); 

4. Es recomana que no utilitzem els valors numèrics com a membres d'enumeració.

5. És complex obtenir una llista completa d'enumeració d'informació perquè necessitem accedir a la base de dades information_schema.

6. És possible que ens trobem amb un problema durant la portació d'ENUM a altres RDBMS perquè moltes bases de dades no admeten aquest tipus de dades.

7. No podem afegir més atributs a les llistes d'enumeració.