Was sind für MySQL Datentyp "enum" und "set" die Unterschiede sowie Vor- und Nachteile der Verwendung eines gegenüber dem anderen?
Beispieldatentyp:
- Aufzählung ('A', 'B', 'C')
- set ('A', 'B', 'C')
Der einzige mir bekannte Unterschied besteht darin, dass mit ENUM nur ein Wert ausgewählt werden kann und mit SET mehrere Werte ausgewählt werden können.
Antworten:
In der MySQL-Dokumentation heißt es:
quelle
(a, b, c, d)
wird nicht abgelehnt. Nur dasd
wird abgelehnt, was zum Wert führt(a, b, c)
.Analogie:
ENUM = Radiofelder (nur akzeptierte Werte sind die aufgelisteten, darf nur eines auswählen)
SET = Kontrollkästchenfelder (nur akzeptierte Werte sind die aufgelisteten, können mehrere auswählen)
quelle
Enum und Set hängen vollständig von den Anforderungen ab. Wenn Sie beispielsweise eine Liste mit Optionsfeldern haben, in denen jeweils nur eines ausgewählt werden kann, verwenden Sie Enum. Wenn Sie eine Liste mit Kontrollkästchen haben, in der jeweils mehr als ein Element ausgewählt werden kann, verwenden Sie set.
quelle
Sie können den obigen Code kopieren und in MySQL einfügen, und Sie werden feststellen, dass SET tatsächlich eine Sammlung ist. Sie können jede von Ihnen deklarierte Kombination von Attributen speichern.
Sie können den obigen Code auch kopieren. Und Sie werden feststellen, dass jede ENUM tatsächlich nur einmal gespeichert werden kann. Und Sie werden feststellen, dass die Ergebnisse der letzten beiden Zeilen beide leer sind.
quelle
Eigentlich ist es ziemlich einfach:
Wenn Sie eine ENUM definieren ('Ja', 'Nein', 'Vielleicht') , müssen Sie nur einen dieser Werte (oder deren Positionsindexnummer) EINFÜGEN.
Wenn Sie ein SET ('R', 'W', 'X') definieren , können Sie eine leere Zeichenfolge oder einen oder mehrere dieser Werte einfügen. Wenn Sie etwas einfügen, das nicht in der vordefinierten Menge enthalten ist, wird stattdessen eine leere Zeichenfolge eingefügt. Beachten Sie, dass vor dem Einfügen alle doppelten Werte verworfen werden, sodass nur eine Instanz jedes zulässigen Werts eingefügt wird.
Hoffe das klärt es auf.
Bitte beachten Sie, dass die Antwort von Winbobob falsch ist und fehlerhafte Beispiele enthält. Beim Einfügen mehrerer Werte müssen die Werte Zeichenfolgen sein, die durch Kommas getrennt sind. Alle seine Einfügungen fügen tatsächlich nur einen einzigen Wert ein (und die letzten beiden sind nicht in der definierten Menge enthalten).
quelle