MySQL - SET: Das Verständnis und die Verwendung des SET-Datentyps - MySQL-DatenTypen (2025)

Einführung in MySQL SET

Hallo da, angehende Datenbankenthusiasten! Heute tauchen wir ein in die faszinierende Welt von MySQLs SET-Datentyp. Als dein freundlicher Nachbarschafts-Computerlehrer bin ich hier, um dich mit der gleichen Begeisterung durch dieses Thema zu führen, mit der ich eine neue Pizza topping-Kombination entdecke. Glaub mir, am Ende dieses Unterrichts wirst du mit SET so vertraut sein, wie ich mit meinen Lieblingscoding-Hausschuhen!

MySQL - SET: Das Verständnis und die Verwendung des SET-Datentyps - MySQL-DatenTypen (1)

Der MySQL SET-Datentyp

Was ist SET?

Der SET-Datentyp in MySQL ist wie eine Pizza mit mehreren Belägen - er ermöglicht es, mehrere Werte aus einer vordefinierten Liste von Optionen in einer einzigen Spalte zu speichern. Stell dir vor, du erstellst eine Datenbank für eine Buchhandlung und möchtest die Genres jedes Buches nachverfolgen. Ein Buch könnte mehreren Genres angehören, oder? Genau hier kommt SET zur Rettung!

Syntax und Verwendung

Sehen wir uns an, wie man eine SET-Spalte definiert:

CREATE TABLE books (id INT PRIMARY KEY,title VARCHAR(100),genres SET('Fiction', 'Non-Fiction', 'Mystery', 'Romance', 'Sci-Fi'));

In diesem Beispiel haben wir eine 'genres'-Spalte erstellt, die jede Kombination der angegebenen Werte enthalten kann. Es ist, als würde man jedem Buch eine individuelle Genre-Pizza geben!

Daten einfügen

Nun fügen wir einige Bücher in unsere Tabelle ein:

INSERT INTO books (id, title, genres) VALUES(1, 'The Mysterious Universe', 'Non-Fiction,Sci-Fi'),(2, 'Love in the Time of Algorithms', 'Fiction,Romance,Sci-Fi'),(3, 'The Art of Debugging', 'Non-Fiction');

Hier weisen wir jedem Buch mehrere Genres zu. Es ist so einfach wie das Trennen der Werte durch Kommas.

Speicherung des SET-Datentyps

Wie SET-Werte gespeichert werden

Hinter den Kulissen speichert MySQL SET-Werte als Bitvektoren. Jeder Option im SET wird eine Bitposition zugewiesen. Zum Beispiel:

WertBit-PositionNumerischer Wert
Fiction01
Non-Fiction12
Mystery24
Romance38
Sci-Fi416

Wenn du einen SET-Wert einfügst, berechnet MySQL die Summe der numerischen Werte für jede ausgewählte Option. Zum Beispiel würde 'Fiction,Sci-Fi' als 17 (1 + 16) gespeichert.

Speicher Efficiency

Diese Speichermethode ist unglaublich effizient. MySQL kann bis zu 64 verschiedene Werte in einem SET mit nur 8 Byte Speicher speichern. Es ist, als würde man eine ganze Bibliothek von Genres in ein kleines Bücherregal passen!

Aktualisierung der SET-Werte

Hinzufügen und Entfernen von Werten

Das Aktualisieren von SET-Werten ist so einfach wie das Ändern deiner Pizza-Bestellung. Du kannst Werte hinzufügen oder entfernen, indem du verschiedene MySQL-Funktionen verwendest:

-- Ein Genre hinzufügenUPDATE books SET genres = CONCAT(genres, ',Mystery') WHERE id = 1;-- Ein Genre entfernenUPDATE books SET genres = TRIM(BOTH ',' FROM REPLACE(CONCAT(',', genres, ','), ',Sci-Fi,', ',')) WHERE id = 1;

In der ersten Abfrage fügen wir 'Mystery' zu den Genres hinzu. In der zweiten entfernen wir 'Sci-Fi'. Es ist, als würde man seine Pizza nach der Bestellung anpassen!

Verwenden von SET-Operatoren

MySQL bietet einige nützliche Operatoren für die Arbeit mit SET-Werten:

-- Bücher finden, die sowohl Fiction als auch Sci-Fi sindSELECT * FROM books WHERE FIND_IN_SET('Fiction', genres) > 0 AND FIND_IN_SET('Sci-Fi', genres) > 0;-- Bücher finden, die entweder Romance oder Mystery sindSELECT * FROM books WHERE genres & (1 << 2 | 1 << 3);

Die zweite Abfrage verwendet bitweise Operationen, um Romance (Bit-Position 3) oder Mystery (Bit-Position 2) zu überprüfen. Es ist, als würde man eine geheime Code zur Suche deiner Lieblingsbuchgenres verwenden!

SET-Datentyp in einem.Client-Programm verwenden

Wenn du mit SET über ein Client-Programm arbeitest, hast du einige Möglichkeiten, die Daten zu handhaben:

Als String

Die meisten Client-Programme stellen SET-Werte als komma-getrennte Strings dar:

import mysql.connectordb = mysql.connector.connect(host="localhost", user="yourusername", password="yourpassword", database="bookstore")cursor = db.cursor()cursor.execute("SELECT * FROM books WHERE id = 2")result = cursor.fetchone()print(f"Genres for '{result[1]}': {result[2]}")# Ausgabe: Genres for 'Love in the Time of Algorithms': Fiction,Romance,Sci-Fi

Als Satz von Integer

Einige fortgeschrittene Anwendungen könnten mit der zugrunde liegenden Integer-Darstellung arbeiten:

cursor.execute("SELECT genres+0 FROM books WHERE id = 2")result = cursor.fetchone()print(f"Integer representation of genres: {result[0]}")# Ausgabe: Integer representation of genres: 25

Hier erzwingt genres+0, dass MySQL die numerische Darstellung zurückgibt.

Schlussfolgerung

Und genau das ist es, zukünftige Datenbank-Zauberer! Wir haben die Welt von MySQLs SET-Datentyp durchquert, von seiner pizzaartigen Flexibilität bis hin zu seinen geheimen numerischen Codes. Denke daran, genauso wie das Auswählen von Belägen für deine perfekte Pizza, ist die Auswahl der richtigen Datentypen für deine Datenbank entscheidend. SET gibt dir die Macht, mehrere Auswahlmöglichkeiten effizient und elegant zu handhaben.

Als wir uns abschließen, erinnere ich mich an einen Schüler, der einmal sagte, SET erinnere ihn an das Sammeln von Sammelkarten - man kann jede Kombination haben, aber nur aus einer vordefinierten Gruppe. Diese Analogie blieb bei mir hängen, genau wie Peperoni an die Oberseite deines Mundes klebt!

Weiter üben, bleib neugierig, und bevor du es weißt, wirst du Datenbanklösungen so einfach servieren können, wie ich schlechte Pizza-Witze mache. Bis zum nächsten Mal, mögen deine Abfragen schnell sein und deine Datenintegrität stark sein!

Credits: Image by storyset

MySQL - SET: Das Verständnis und die Verwendung des SET-Datentyps - MySQL-DatenTypen (2025)
Top Articles
Latest Posts
Recommended Articles
Article information

Author: Mr. See Jast

Last Updated:

Views: 5890

Rating: 4.4 / 5 (75 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Mr. See Jast

Birthday: 1999-07-30

Address: 8409 Megan Mountain, New Mathew, MT 44997-8193

Phone: +5023589614038

Job: Chief Executive

Hobby: Leather crafting, Flag Football, Candle making, Flying, Poi, Gunsmithing, Swimming

Introduction: My name is Mr. See Jast, I am a open, jolly, gorgeous, courageous, inexpensive, friendly, homely person who loves writing and wants to share my knowledge and understanding with you.