logo

MySQL ENUM

Tipul de date ENUM în MySQL este a obiect șir . Ne permite să limităm valoarea aleasă dintr-o listă de valori permise în specificația coloanei la momentul creării tabelului. Este scurt pentru enumerare , ceea ce înseamnă că fiecare coloană poate avea una dintre valorile posibile specificate. Folosește indici numerici (1, 2, 3...) pentru a reprezenta valorile șirului.

MySQL Tipul de date ENUM conține următoarele avantaje:

  • Stocare compactă a datelor în care coloana poate avea un set limitat de valori posibile specificate. Aici, valorile șirului sunt folosite automat ca index numeric.
  • Permite interogări și rezultate lizibile, deoarece numerele pot fi traduse din nou în șirul corespunzător.
  • Poate accepta multe tipuri de date, cum ar fi întreg, virgulă mobilă, zecimală și șir.

Sintaxă

Următoarele sunt sintaxa utilizată pentru a defini tipul de date ENUM în coloană:

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

În sintaxa de mai sus, am definit doar trei valori ENUM, dar poate fi mărită în funcție de nevoile noastre. Aici, trebuie să ne asigurăm că valorile de enumerare ar trebui să rămână întotdeauna în interiorul literal șir citat .

MySQL ne permite să definim tipul de date ENUM cu următoarele atribute:

naţionalitatea lui pete davidson

NU NUL: În mod implicit, tipul de date ENUM este NULL. Dacă nu dorim să permitem valorile NULL, este necesar să folosim proprietatea NOT NULL în timp ce specificăm coloana ENUM.

NUL: Este un sinonim pentru DEFAULT NULL, iar valoarea sa index este întotdeauna NULL.

MOD IMPLICIT: Când o valoare nu este specificată în coloană, tipul de date ENUM inserează valoarea implicită. Cu alte cuvinte, dacă instrucțiunea INSERT nu furnizează o valoare pentru această coloană, atunci valoarea implicită va fi inserată. Expresia DEFAULT nu permite inserarea funcției. Tipul de date ENUM din My SQL include valorile DEFAULT ca NULL sau un șir gol ('').

Exemplu MySQL ENUM

Să înțelegem cum funcționează tipul de date ENUM în MySQL cu următoarea ilustrație. Aici, vom crea un tabel numit ' cămăși ' care conține trei coloane: id, nume și dimensiune.

o serie de obiecte java

Coloana dimensiune folosește tipul de date ENUM și are dimensiuni mici, medii, mari și x-mari. MySQL mapează acești membri de enumerare la un index numeric unde mic=1, mediu=2, mare=3 și, respectiv, x-mari=4. Executați următoarea interogare pentru a crea un tabel:

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

În continuare, trebuie introduce valorile din tabel. În timpul inserării, valorile de enumerare pot fi inserate fie ca șir literal, fie ca indicii numerici ai acestuia și ambele sunt la fel. Executați următoarea instrucțiune pentru a introduce valorile în tabel:

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

Acum, executați instrucțiunea SELECT pentru a vedea valorile inserate în tabel:

 mysql> SELECT * FROM shirts; 

Următoarea imagine conține toate rezultatele interogării de mai sus care conțin valorile de enumerare numai în literale șir:

MySQL ENUM

Sortare ENUM

MySQL sortează valorile de enumerare pe baza indicilor lor numerici care depind de ordinea în care am inserat datele în specificația coloanei. De exemplu , dacă am definit enumerarea ca ENUM ('b', 'a', '', 'c'). Apoi, b vine înaintea a, șirul gol înaintea c (șir nevid), iar valoarea NULL vine înaintea altor valori.

Deci, dacă nu dorim să obținem un rezultat neașteptat cu tipul de date ENUM folosind clauza ORDER BY, urmați aceste reguli:

  • Definiți valorile de enumerare în ordine alfabetică.
  • Este pentru a vă asigura că numele coloanei este în ordine lexicală, mai degrabă decât numărul de index.

Următorul exemplu explică mai clar sortarea enumerațiilor. Deci, dacă doriți să obțineți dimensiunea cămășilor într-o anumită ordine, executați instrucțiunea de mai jos:

 mysql> SELECT * FROM shirts ORDER BY size DESC; 

Această interogare va oferi rezultatul de mai jos, unde putem vedea că mărimea cămășilor este în ordine descrescătoare:

MySQL ENUM

Limitări ale tipului de date ENUM

Următoarele sunt dezavantajele tipului de date ENUM în MySQL:

1. Daca dorim sa modificam valorile/membrii enumerarii, se poate face prin reconstruirea intregului tabel folosind comanda ALTER TABLE. De asemenea, folosește costisitor resursele și timpul nostru.

e r exemple de model

2. Nu putem folosi o expresie cu membri de enumerare. De exemplu, această instrucțiune CREATE nu se execută deoarece folosește funcția CONCAT() pentru crearea membrilor enumerației.

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

3. Nu putem folosi variabila utilizator ca membru al enumerarii. Poate fi văzut în exemplul de mai jos:

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

4. Se recomandă să nu folosim valorile numerice ca membri de enumerare.

rekha indian

5. Este complex să obținem o listă completă de enumerare a informațiilor deoarece trebuie să accesăm baza de date information_schema.

6. Este posibil să ne confruntăm cu o problemă în timpul portarii ENUM către alte RDBMS, deoarece multe baze de date nu acceptă acest tip de date.

7. Nu putem adăuga mai multe atribute listelor de enumerare.