logo

MySQL-ENUM

Der ENUM-Datentyp in MySQL ist a String-Objekt . Dadurch können wir den Wert begrenzen, der zum Zeitpunkt der Tabellenerstellung aus einer Liste zulässiger Werte in der Spaltenspezifikation ausgewählt wird. Es ist die Abkürzung für Aufzählung , was bedeutet, dass jede Spalte einen der angegebenen möglichen Werte haben kann. Es benutzt numerische Indizes (1, 2, 3…) zur Darstellung von Zeichenfolgenwerten.

Inorder-Durchquerung

MySQL Der ENUM-Datentyp bietet folgende Vorteile:

  • Kompakter Datenspeicher, bei dem die Spalte einen begrenzten Satz spezifizierter möglicher Werte enthalten kann. Dabei werden die Stringwerte automatisch als numerischer Index verwendet.
  • Es ermöglicht lesbare Abfragen und Ausgaben, da die Zahlen wieder in die entsprechende Zeichenfolge übersetzt werden können.
  • Es kann viele Datentypen wie Ganzzahl, Gleitkomma, Dezimalzahl und Zeichenfolge akzeptieren.

Syntax

Die folgende Syntax wird zum Definieren des ENUM-Datentyps in der Spalte verwendet:

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

In der obigen Syntax haben wir nur drei ENUM-Werte definiert, diese können jedoch je nach Bedarf erhöht werden. Hier müssen wir sicherstellen, dass die Aufzählungswerte immer innerhalb der liegen String-Literal in Anführungszeichen .

Mit MySQL können wir den ENUM-Datentyp mit den folgenden Attributen definieren:

NICHT NULL: Standardmäßig ist der ENUM-Datentyp NULL. Wenn wir die NULL-Werte nicht zulassen möchten, ist es erforderlich, bei der Angabe der ENUM-Spalte die Eigenschaft NOT NULL zu verwenden.

NULL: Es ist ein Synonym für DEFAULT NULL und sein Indexwert ist immer NULL.

STANDARD: Wenn in der Spalte kein Wert angegeben ist, fügt der ENUM-Datentyp den Standardwert ein. Mit anderen Worten: Wenn die INSERT-Anweisung keinen Wert für diese Spalte bereitstellt, wird der Standardwert eingefügt. Der DEFAULT-Ausdruck lässt das Einfügen einer Funktion nicht zu. Der ENUM-Datentyp in My SQL enthält die DEFAULT-Werte als NULL oder eine leere Zeichenfolge ('').

MySQL ENUM-Beispiel

Lassen Sie uns anhand der folgenden Abbildung verstehen, wie der ENUM-Datentyp in MySQL funktioniert. Hier erstellen wir eine Tabelle mit dem Namen „ Hemden ', das drei Spalten enthält: ID, Name und Größe.

Die Größenspalte verwendet den ENUM-Datentyp und hat die Größen klein, mittel, groß und x-groß. MySQL ordnet diese Aufzählungsmitglieder einem numerischen Index zu, wobei klein=1, mittel=2, groß=3 bzw. x-groß=4 ist. Führen Sie die folgende Abfrage aus, um eine Tabelle zu erstellen:

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

Als nächstes müssen wir einfügen Tragen Sie die Werte in die Tabelle ein. Beim Einfügen können die Aufzählungswerte entweder als String-Literal oder als numerische Indizes eingefügt werden, und beide sind gleich. Führen Sie die folgende Anweisung aus, um die Werte in die Tabelle einzufügen:

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

Führen Sie nun die SELECT-Anweisung aus, um die eingefügten Werte in der Tabelle anzuzeigen:

 mysql> SELECT * FROM shirts; 

Das folgende Bild enthält alle oben genannten Abfrageergebnisse, die die Aufzählungswerte nur in Zeichenfolgenliteralen enthalten:

MySQL-ENUM

ENUM-Sortierung

MySQL sortiert die Aufzählungswerte anhand ihrer numerischen Indizes, die von der Reihenfolge abhängen, in der wir die Daten in die Spaltenspezifikation eingefügt haben. Zum Beispiel , wenn wir die Enumeration als ENUM ('b', 'a', '', 'c') definiert haben. Dann steht b vor a, die leere Zeichenfolge vor c (nicht leere Zeichenfolge) und der NULL-Wert vor anderen Werten.

Wenn wir also mit der ORDER BY-Klausel kein unerwartetes Ergebnis mit dem ENUM-Datentyp erhalten möchten, befolgen Sie diese Regeln:

  • Definieren Sie die Aufzählungswerte in alphabetischer Reihenfolge.
  • Es soll sichergestellt werden, dass der Spaltenname in lexikalischer Reihenfolge und nicht in der Indexnummer vorliegt.

Das folgende Beispiel erklärt die Aufzählungssortierung deutlicher. Wenn Sie also die Größe der Hemden in einer bestimmten Reihenfolge ermitteln möchten, führen Sie die folgende Anweisung aus:

 mysql> SELECT * FROM shirts ORDER BY size DESC; 

Diese Abfrage liefert die folgende Ausgabe, wobei wir sehen können, dass die Größe der Hemden in absteigender Reihenfolge angegeben ist:

Java-Datum zum String
MySQL-ENUM

Einschränkungen des ENUM-Datentyps

Im Folgenden sind die Nachteile des ENUM-Datentyps in MySQL aufgeführt:

1. Wenn wir die Enumerationswerte/-mitglieder ändern möchten, können wir dies tun, indem wir die gesamte Tabelle mit dem Befehl ALTER TABLE neu erstellen. Es beansprucht auch unsere Ressourcen und Zeit teuer.

2. Wir können keinen Ausdruck mit Aufzählungsmitgliedern verwenden. Diese CREATE-Anweisung wird beispielsweise nicht ausgeführt, da sie die Funktion CONCAT() zum Erstellen von Aufzählungsmitgliedern verwendet.

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

3. Wir können die Benutzervariable nicht als Aufzählungselement verwenden. Es ist im folgenden Beispiel zu sehen:

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

4. Es wird empfohlen, die numerischen Werte nicht als Aufzählungselemente zu verwenden.

5. Es ist komplex, eine vollständige Informationsaufzählungsliste zu erhalten, da wir auf die Datenbank „information_schema“ zugreifen müssen.

6. Bei der Portierung von ENUM auf andere RDBMS kann es zu Problemen kommen, da viele Datenbanken diesen Datentyp nicht unterstützen.

7. Wir können den Aufzählungslisten keine weiteren Attribute hinzufügen.