Der Datentyp ENUM ist ein String-Objekt mit
        einem Wert, der aus einer Liste zulässiger Werte ausgewählt
        wird, die beim Erstellen der Tabelle explizit in der
        Spaltendefinition aufgelistet werden.
      
        Als Werte kommen unter bestimmten Umständen auch der
        Leer-String ('') oder NULL
        in Frage:
      
            Wenn Sie einen ungültigen Wert (d. h. einen String, der
            nicht in der Liste zulässiger Werte vorhanden ist) in eine
            ENUM-Spalte einzufügen versuchen, dann
            wird stattdessen als spezieller Fehlerwert der Leer-String
            eingefügt. Dieser String lässt sich von einem
            „normalen“ leeren String dadurch unterscheiden,
            dass er den numerischen Wert 0 hat. Weitere Informationen
            hierzu folgen weiter unten.
          
            Wenn der strikte SQL-Modus aktiviert ist, führen Versuche,
            ungültige ENUM-Werte einzufügen, zu
            einer Fehlermeldung.
          
            Wird für eine ENUM-Spalte die
            Zulässigkeit von NULL deklariert, dann
            ist der NULL-Wert für die Spalte
            erlaubt. Ferner ist in diesem Fall auch der Standardwert
            NULL. Wenn eine
            ENUM-Spalte als NOT
            NULL deklariert wird, dann wird als Vorgabe das
            erste Element der Liste zulässiger Werte verwendet.
          
Jeder Wert in der Auflistung hat einen Index:
Werte aus der Liste zulässiger Elemente in der Spaltenspezifikation werden beginnend mit 1 nummeriert.
            Der Indexwert des als Fehlerwert verwendeten Leer-Strings
            ist 0. Sie können also folgende
            SELECT-Anweisung verwenden, um
            Datensätze zu ermitteln, bei denen ungültige
            ENUM-Werte zugewiesen wurden:
          
mysql> SELECT * FROM tbl_name WHERE enum_col=0;
            Der Indexwert des NULL-Werts ist
            NULL.
          
Der Begriff „Index“ bezeichnet in diesem Kontext nur die Position innerhalb der Auflistung möglicher Werte. Es gibt keine Verbindung zu Tabellenindizes.
        Eine Spalte, die als ENUM('one', 'two',
        'three') definiert ist, kann jeden der nachfolgend
        angegebenen Werte annehmen. Auch die Indizes der einzelnen Werte
        werden angezeigt:
      
| Wert | Index | 
| NULL | NULL | 
| '' | 0 | 
| 'one' | 1 | 
| 'two' | 2 | 
| 'three' | 3 | 
Eine Auflistung darf maximal 65.535 Elemente enthalten.
        Beim Erstellen der Tabelle werden bei
        ENUM-Mitgliedswerten am Ende stehende
        Leerzeichen in der Tabellendefinition automatisch entfernt.
      
        Beim Abrufen werden Werte, die in einer
        ENUM-Spalte gespeichert sind, in der
        Groß-/Kleinschreibung angezeigt, die bei der Spaltendefinition
        verwendet wurde. Beachten Sie, dass
        ENUM-Spalten ein Zeichensatz und eine
        Sortierung zugewiesen werden können. Bei binären Sortierungen
        oder solchen, bei denen die Groß-/Kleinschreibung unterschieden
        wird, wird die Schreibweise beim Zuweisen von Werten zur Spalte
        berücksichtigt.
      
        Wenn Sie einen ENUM-Wert in einem numerischen
        Kontext abrufen, wird der Index des Spaltenwerts zurückgegeben.
        So können Sie beispielsweise numerische Werte wie folgt aus
        einer ENUM-Spalte abrufen:
      
mysql> SELECT enum_col+0 FROM tbl_name;
        Wenn Sie eine Zahl in einer ENUM-Spalte
        ablegen, wird diese als Index behandelt, und der mit diesem
        Index verknüpfte Mitgliedswert wird in der Spalte gespeichert.
        (Allerdings funktioniert dies nicht bei LOAD
        DATA, weil diese Anweisung alle Eingaben als Strings
        behandelt.) Es ist nicht ratsam, eine
        ENUM-Spalte mit Auflistungswerten zu
        definieren, die wie Zahlen aussehen, da dies schnell zu
        Verwirrung führen kann. So hat beispielsweise die folgende
        Spalte Auflistungswerte mit den String-Werten
        '0', '1' und
        '2', aber die numerischen Indexwerte
        1, 2 und
        3:
      
numbers ENUM('0','1','2')
        ENUM-Werte werden entsprechend der
        Reihenfolge sortiert, in der sie in der Spaltendefinition
        aufgeführt wurden. (Anders gesagt:
        ENUM-Werte werden nach ihren Indexzahlen
        sortiert.) So wird beispielsweise bei ENUM('a',
        'b') 'a' vor 'b'
        einsortiert, bei ENUM('b', 'a') hingegen wird
        'b' vor 'a' einsortiert.
        Der Leer-String wird immer vor nichtleeren Strings einsortiert,
        und NULL-Werte werden vor allen anderen
        Auflistungswerten einsortiert. Um unerwünschte Ergebnisse zu
        vermeiden, geben Sie die ENUM-Liste am besten
        in alphabetischer Reihenfolge an. Sie können auch mit
        GROUP BY CAST(col AS CHAR) oder
        GROUP BY CONCAT(col) sicherstellen, dass die
        Spalte lexikalisch statt nach Indexnummer sortiert wird.
      
        Wenn Sie alle möglichen Werte für eine
        ENUM-Spalte bestimmen wollen, verwenden Sie
        SHOW COLUMNS FROM  und
        verarbeiten die tbl_name
        LIKE enum_colENUM-Definition in der Spalte
        Type der Ausgabe.
      
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.

