Mein Wissen über relationale Datenbanken ist begrenzter, aber gibt es einen SQL-Befehl, der verwendet werden kann, um eine Spalte zu erstellen, die eine Menge in jeder Zeile enthält?
Ich versuche eine Tabelle mit zwei Spalten zu erstellen. 1 für spezifische IDs und eine zweite für Sätze, die diesen IDs entsprechen.
Ich lese über
Der festgelegte Datentyp erfordert jedoch, dass Sie wissen, welche Elemente in Ihrem Set enthalten sein können. Ich möchte jedoch nur, dass es eine Liste mit variablen Nummern gibt, die sich nicht wiederholen.
Es wäre viel besser, diese Liste von Elementen als mehrere Zeilen in einer zweiten Tabelle zu erstellen. Dann könnten Sie so viele Elemente in der Liste haben, die Sie möchten, Sie könnten sie sortieren, nach einem bestimmten Element suchen, sicherstellen, dass sie eindeutig sind usw.
Siehe auch meine Antwort auf Ist das Speichern einer begrenzten Liste in einer Datenbankspalte wirklich so schlimm?
Nein, für beliebige Mengen gibt es keinen MySQL-Datentyp. Sie können eine Zeichenfolge verwenden, die eine durch Kommas getrennte Liste enthält. Es gibt Funktionen wie FIND_IN_SET()
, die mit solchen Werten arbeiten.
Aber das ist ein schlechtes Datenbankdesign. Wenn Sie eine offene Liste haben, sollten Sie sie in einer Tabelle mit einer Zeile pro Wert speichern. Dadurch können sie indiziert werden, wodurch die Suche schneller wird.
MySQL unterstützt keine Arrays, Listen oder andere Datenstrukturen wie diese. Es unterstützt jedoch Zeichenketten, also benutze das und FIND_IN_SET()
function:
Ссылка
Der Datentyp "SET" ist hier keine gute Wahl.
Sie können den "VARCHAR" verwenden und die Werte im CSV-Format speichern. Sie behandeln sie auf Anwendungsebene.
Beispiel: INSERT in my_table (id, myset) Werte (1, "3,4,7");
Tags und Links mysql