logo

MySQL ENUM

Az ENUM adattípus a MySQL-ben a string objektum . Lehetővé teszi számunkra, hogy korlátozzuk az engedélyezett értékek listájából kiválasztott értéket az oszlopspecifikációban a táblázat létrehozásakor. Ez a rövidítése felsorolás , ami azt jelenti, hogy minden oszlop tartalmazhat egyet a megadott lehetséges értékek közül. Használja numerikus indexek (1, 2, 3…) karakterláncértékek megjelenítéséhez.

MySQL Az ENUM adattípus a következő előnyöket tartalmazza:

  • Kompakt adattárolás, ahol az oszlop meghatározott lehetséges értékek korlátozott készletével rendelkezhet. Itt a karakterlánc-értékek automatikusan numerikus indexként kerülnek felhasználásra.
  • Lehetővé teszi az olvasható lekérdezéseket és a kimenetet, mert a számok újra lefordíthatók a megfelelő karakterláncra.
  • Számos adattípust képes elfogadni, például egész, lebegőpontos, decimális és karakterláncot.

Szintaxis

A következő szintaxis az ENUM adattípus meghatározásához használt oszlopban:

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

A fenti szintaxisban csak három ENUM értéket definiáltunk, de ez igény szerint növelhető. Itt ügyelnünk kell arra, hogy a felsorolási értékek mindig a számon belül maradjanak idézett karakterlánc literál .

A MySQL lehetővé teszi az ENUM adattípus meghatározását a következő attribútumokkal:

NEM NULLA: Alapértelmezés szerint az ENUM adattípus NULL. Ha nem akarjuk engedélyezni a NULL értékeket, akkor az ENUM oszlop megadásakor a NOT NULL tulajdonságot kell használni.

NULLA: Ez a DEFAULT NULL szinonimája, és az index értéke mindig NULL.

ALAPÉRTELMEZETT: Ha egy érték nincs megadva az oszlopban, az ENUM adattípus beszúrja az alapértelmezett értéket. Más szóval, ha az INSERT utasítás nem ad értéket ehhez az oszlophoz, akkor az alapértelmezett érték kerül beillesztésre. A DEFAULT kifejezés nem teszi lehetővé a függvény beszúrását. Az ENUM adattípus a My SQL-ben az ALAPÉRTELMEZETT értékeket NULLként vagy üres karakterláncként ('') tartalmazza.

MySQL ENUM példa

Az alábbi ábra segítségével megértsük, hogyan működik az ENUM adattípus a MySQL-ben. Itt egy táblát fogunk létrehozni ingek ', amely három oszlopot tartalmaz: azonosító, név és méret.

A méret oszlop az ENUM adattípust használja, és kis, közepes, nagy és x-nagy méretekkel rendelkezik. A MySQL leképezi ezeket a felsorolási tagokat egy numerikus indexre, ahol kicsi=1, közepes=2, nagy=3 és x-large=4. Táblázat létrehozásához hajtsa végre a következő lekérdezést:

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

Következő, nekünk kell betét az értékeket a táblázatba. A beszúrás során a felsorolási értékek akár karakterlánc-literálként, akár annak numerikus indexeiként beszúrhatók, és mindkettő azonos. Hajtsa végre a következő utasítást az értékek beszúrásához a táblázatba:

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

Most hajtsa végre a SELECT utasítást a táblázatba beszúrt értékek megtekintéséhez:

 mysql> SELECT * FROM shirts; 

A következő kép az összes fenti lekérdezési eredményt tartalmazza, amelyek csak karakterlánc-literálokban tartalmazzák a felsorolási értékeket:

MySQL ENUM

ENUM rendezés

A MySQL a felsorolási értékeket numerikus indexeik alapján rendezi, amely attól függ, hogy milyen sorrendben illesztjük be az adatokat az oszlopspecifikációba. Például , ha a felsorolást ENUM-ként határoztuk meg ('b', 'a', ', 'c'). Ekkor a b elé kerül a, az üres karakterlánc c (nem üres karakterlánc) elé, és a NULL érték a többi érték elé.

Tehát, ha nem akarunk váratlan eredményt kapni az ORDER BY záradékot használó ENUM adattípussal, kövesse az alábbi szabályokat:

  • Adja meg a felsorolási értékeket ábécé sorrendben.
  • Győződjön meg arról, hogy az oszlop neve lexikális sorrendben van, nem pedig indexszám.

A következő példa érthetőbben magyarázza el a felsorolások rendezését. Tehát, ha meghatározott sorrendben szeretné megkapni az ingek méretét, hajtsa végre az alábbi utasítást:

 mysql> SELECT * FROM shirts ORDER BY size DESC; 

Ez a lekérdezés az alábbi kimenetet adja, ahol láthatjuk, hogy az ingek mérete csökkenő sorrendben van:

MySQL ENUM

Az ENUM adattípus korlátai

Az alábbiakban felsoroljuk az ENUM adattípus hátrányait a MySQL-ben:

1. Ha módosítani szeretnénk a felsorolási értékeket/tagokat, akkor azt a teljes tábla újraépítésével tehetjük meg az ALTER TABLE paranccsal. Drágán kihasználja erőforrásainkat és időnket is.

2. Nem használhatunk felsorolási tagokat tartalmazó kifejezést. Például ez a CREATE utasítás nem hajtódik végre, mert a CONCAT() függvényt használja a felsorolási tagok létrehozásához.

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

3. A felhasználói változót nem használhatjuk felsorolási tagként. Az alábbi példán látható:

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

4. Javasoljuk, hogy ne használjuk a számértékeket felsorolási tagként.

5. Bonyolult egy teljes információs felsorolási lista beszerzése, mert el kell érnünk az információs_séma adatbázist.

6. Problémával szembesülhetünk az ENUM más RDBMS-ekre történő portolása során, mert sok adatbázis nem támogatja ezt az adattípust.

7. Nem tudunk több attribútumot hozzáadni a felsorolási listákhoz.