Heim >Datenbank >MySQL-Tutorial >Wie kann ich mithilfe mehrerer Tabellen Datenarrays in MySQL effizient speichern und abrufen?

Wie kann ich mithilfe mehrerer Tabellen Datenarrays in MySQL effizient speichern und abrufen?

Susan Sarandon
Susan SarandonOriginal
2024-12-05 19:54:11475Durchsuche

How Can I Efficiently Store and Retrieve Arrays of Data in MySQL Using Multiple Tables?

Speichern von Arrays in MySQL: Eine Lösung mit mehreren Tabellen

In MySQL ist das direkte Speichern von Arrays aufgrund des Fehlens eines Arrays nicht einfach Datentyp. Um Arrays von Zeichenfolgen zu speichern, die auf Werte aus einer anderen Tabelle verweisen, wird häufig ein Designansatz mit mehreren Tabellen verwendet.

Tabellendesign

Erstellen Sie zwei Tabellen: Person und Fruit. Person enthält den Namen und eine Fruchtspalte, in der Array-Daten gespeichert werden. Obst enthält den Fruchtnamen, die Farbe und den Preis.

CREATE TABLE Person (
    `id` INT NOT NULL PRIMARY KEY,
    `name` VARCHAR(50),
    `fruits` VARCHAR(255)
);

CREATE TABLE Fruit (
    `fruit_name` VARCHAR(20) NOT NULL PRIMARY KEY,
    `color` VARCHAR(20),
    `price` INT
);

Array-Daten speichern

Um ein Array von Fruchtnamen in der Fruchtspalte zu speichern, können Sie a verwenden durch Kommas getrennte Liste. Zum Beispiel:

INSERT INTO Person (`name`, `fruits`) VALUES ('John Doe', 'apple,banana,orange');

Abrufen von Array-Daten

Um das Array von Fruchtnamen für eine Person abzurufen, verwenden Sie eine JOIN-Abfrage, um die Personen- und Fruchttabellen basierend zu verknüpfen auf den Fruit_Name-Werten.

SELECT p.name, f.fruit_name
FROM Person p
INNER JOIN Person_Fruit pf
ON pf.person_id = p.id
INNER JOIN Fruit f
ON f.fruit_name = pf.fruit_name;

Diese Abfrage gibt den Namen der Person und die mit ihr verbundenen Fruchtnamen zurück.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe mehrerer Tabellen Datenarrays in MySQL effizient speichern und abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn