MySQL - ENUM: Ein freundlicher Leitfaden für Anfänger

Hallo da draußen, zukünftige Datenbank-Zauberer! Heute machen wir uns auf eine aufregende Reise in die Welt von MySQLs ENUM-Datentyp. Machen Sie sich keine Sorgen, wenn Sie neu im Programmieren sind – ich werde Ihr freundlicher Guide sein, und wir werden dieses Thema Schritt für Schritt erkunden. Also holen Sie sich eine Tasse Kaffee (oder Tee, wenn das Ihr Ding ist) und tauchen wir ein!

MySQL - ENUM

Der MySQL ENUM-Datentyp

Stellen Sie sich vor, Sie erstellen eine Datenbank für ein Pizzarestaurant. Sie möchten die Größen der Pizzen speichern, aber Sie wissen, dass es nur bestimmte Optionen gibt: klein, medium und groß. Genau hier kommt ENUM ins Spiel!

ENUM, kurz für "Aufzählung", ist eine schicke Art zu sagen "eine Liste von vordefinierten Optionen". Es ist wie eine Multiple-Choice-Frage, bei der MySQL nur Antworten aus den von Ihnen gegebenen Möglichkeiten zulässt.

Lassen Sie uns eine einfache Tabelle erstellen, um dies zu demonstrieren:

CREATE TABLE pizza_orders (
id INT AUTO_INCREMENT PRIMARY KEY,
customer_name VARCHAR(50),
size ENUM('small', 'medium', 'large')
);

In diesem Beispiel ist size unsere ENUM-Spalte. Sie kann nur einen der drei von uns angegebenen Werte enthalten: 'small', 'medium' oder 'large'.

Eigenschaften von ENUM

Nun lassen Sie uns über einige coole Features von ENUM sprechen:

  1. Geordnete Liste: Die Reihenfolge, in der Sie die ENUM-Werte definieren, ist wichtig. MySQL weist jedem Wert eine Nummer zu, beginnend mit 1.

  2. Groß- und Kleinschreibung: 'SMALL', 'Small' und 'small' werden alle gleich behandelt.

  3. Speichereffizienz: ENUM ist sehr effizient in Bezug auf Speicher. MySQL speichert jeden Wert als eine Zahl (1, 2, 3, etc.)而不是完整字符串。

  4. Standardwert: Wenn Sie beim Einfügen eines Datensatzes keinen Wert angeben, verwendet MySQL den ersten Wert in der ENUM-Liste als Standard.

Einfügen von Datensätzen mit numerischen ENUM-Werten

Hier ist ein kleines Geheimnis: Sie können Zahlen verwenden, um ENUM-Werte einzufügen! Lassen Sie es uns ausprobieren:

INSERT INTO pizza_orders (customer_name, size) VALUES
('Alice', 1),
('Bob', 2),
('Charlie', 3);

In diesem Fall:

  • 1 steht für 'small'
  • 2 steht für 'medium'
  • 3 steht für 'large'

Überprüfen wir unsere Ergebnisse:

SELECT * FROM pizza_orders;

Sie werden sehen, dass MySQL die Zahlen korrekt als ihre entsprechenden ENUM-Werte interpretiert hat. quite neat, right?

Einfügen von ungültigen Datensätzen

Aber was passiert, wenn wir versuchen, einen ungültigen Wert einzufügen? Lassen Sie es uns herausfinden:

INSERT INTO pizza_orders (customer_name, size) VALUES ('David', 'extra-large');

Ups! MySQL gibt uns einen Fehler, weil 'extra-large' nicht in unserer vordefinierten Liste ist. Es ist wie das Auswählen von "D" bei einer true/false-Frage – es funktioniert einfach nicht!

Filtern von Datensätzen nach numerischem ENUM-Wert

Erinnern Sie sich daran, wie ich erwähnte, dass ENUM-Werte als Zahlen gespeichert werden? Wir können dies zu unserem Vorteil nutzen, wenn wir Datensätze filtern:

SELECT * FROM pizza_orders WHERE size = 2;

Diese Abfrage gibt alle Bestellungen für medium Pizzen zurück. Es ist wie ein geheimer Code – 2 bedeutet medium!

Filtern von Datensätzen nach menschenlesbarem ENUM-Wert

Natürlich können wir auch mit den tatsächlichen ENUM-Werten filtern:

SELECT * FROM pizza_orders WHERE size = 'large';

Diese Abfrage holt alle Bestellungen für große Pizzen. Viel intuitiver, oder?

Nachteile des ENUM-Datentyps

Nun, ich wäre kein guter Lehrer, wenn ich Sie nicht vor einigen möglichen Fallstricken warnen würde:

  1. Unflexibilität: Sobald Sie ein ENUM definieren, erfordert das Hinzufügen oder Entfernen von Werten die Änderung der Tabellenstruktur. Es ist wie das Ändern der Regeln mitten im Spiel!

  2. Datenbank-Abhängigkeit: Wenn Ihre Anwendungslogik von diesen ENUM-Werten abhängt, verknüpfen Sie Ihre Anwendung eng mit der Datenbankstruktur.

  3. Sortierbeschränkungen: ENUM-Werte werden basierend auf ihren internen numerischen Werten sortiert, was möglicherweise nicht immer das ist, was Sie wollen.

Enum-Datentypen in einem.Client-Programm

Wenn Sie mit ENUM über ein Client-Programm (wie ein PHP- oder Python-Skript) arbeiten, interagieren Sie typischerweise mit den menschenlesbaren Werten. Es ist jedoch gut, sich der zugrunde liegenden numerischen Darstellung bewusst zu sein.

Hier ist eine Tabelle, die die ENUM-Methoden zusammenfasst, die wir besprochen haben:

Methode Beispiel Beschreibung
Erstellen von ENUM ENUM('small', 'medium', 'large') Definiert die zulässigen Werte
Einfügen per String INSERT ... VALUES ('medium') Verwendet den tatsächlichen ENUM-Wert
Einfügen per Zahl INSERT ... VALUES (2) Verwendet die numerische Darstellung
Filtern per String WHERE size = 'large' Filtert nach dem ENUM-Wert
Filtern per Zahl WHERE size = 3 Filtert nach der numerischen Darstellung

Erinnern Sie sich daran, egal ob Sie ein Client-Programm verwenden oder direkt in MySQL arbeiten, diese Prinzipien bleiben gleich.

Und da haben Sie es, Leute! Wir haben die Welt der MySQL ENUMs bereist. Von der Erstellung bis zum Einfügen von Werten und sogar einen Blick auf ihre geheimen numerischen Identitäten, sind Sie nun gerüstet, um ENUMs in Ihrer Datenbank zu verwenden.

Denken Sie nur daran, wie das Wahl von Pizza-Zutaten, sind ENUMs großartig, wenn Sie eine feste Liste von Optionen haben. Aber wenn Sie ständig neue Geschmacksrichtungen hinzufügen möchten, könnte es an der Zeit sein, eine andere Methode in Betracht zu ziehen.

Weiter üben, neugierig bleiben und viel Spaß beim Programmieren! Wer weiß, vielleicht denken Sie beim nächsten Mal, wenn Sie eine Pizza bestellen, über Datenbankstrukturen nach. (Oder ist das nur ich? ?)

Credits: Image by storyset