MySQL - Insert Into Select: Ein umfassender 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 MySQL, speziell konzentriert auf die mächtige "Insert Into Select"-Anweisung. Keine Sorge, wenn du neu im Programmieren bist – ich werde dein freundlicher Führer sein und alles Schritt für Schritt erklären. Also hole dir eine Tasse Kaffee und tauchen wir ein!
Die MySQL Insert Into Select Anweisung
Stell dir vor, du organisierst dein Bücherregal. Du hast eine pile von neuen Büchern (das nennen wir unsere Quelldaten) und möchtest sie in dein bereits organisiertes Regal (unser Zieltable) einfügen. Genau das macht die "Insert Into Select"-Anweisung in MySQL – sie ermöglicht es uns, Daten von einer Tabelle zu kopieren und in eine andere einzufügen.
Die grundlegende Syntax sieht so aus:
INSERT INTO ziel_tabelle (spalte1, spalte2, spalte3, ...)
SELECT spalte1, spalte2, spalte3, ...
FROM quelle_tabelle
WHERE bedingung;
Lassen wir das auseinanderbrechen:
-
INSERT INTO ziel_tabelle
: Dort platzieren wir unsere neuen Daten. -
(spalte1, spalte2, ...)
: Diese sind die Spalten in unserer Zieltable, die wir füllen. -
SELECT ...
: Dort holen wir unsere Daten her. -
FROM quelle_tabelle
: Das ist die Tabelle, die wir kopieren. -
WHERE bedingung
: Das ist optional, aber es ermöglicht uns, zu filtern, was wir kopieren.
Einfügen erforderlicher Daten von einer Tabelle in eine andere Tabelle
Nun, lassen wir uns mit ein wenig richtigen Code beschäftigen! Angenommen, wir haben zwei Tabellen: alte_bücher
und neue_zugänge
. Wir möchten alle Fantasy-Bücher von alte_bücher
nach neue_zugänge
verschieben.
INSERT INTO neue_zugänge (titel, autor, genre)
SELECT titel, autor, genre
FROM alte_bücher
WHERE genre = 'Fantasy';
In diesem Beispiel:
- Fügen wir in
neue_zugänge
ein, indem wir die Spalten angeben, die wir füllen möchten. - Selektieren wir die gleichen Spalten aus
alte_bücher
. - Wir selektieren nur Bücher, deren Genre 'Fantasy' ist.
Dieser Query wird alle Fantasy-Bücher von alte_bücher
nach neue_zugänge
kopieren. Es ist, als ob du alle deine Fantasy-Bücher zauberhaft auf ein neues Regal teleportierst!
Einfügen von Zeilen mit LIMIT
Manchmal möchten wir nicht alles auf einmal verschieben. Vielleicht testen wir Dinge aus, oder wir haben nur Platz für einige Bücher. Da kommt LIMIT
sehr gelegen.
INSERT INTO bestseller (titel, autor, verkäufe)
SELECT titel, autor, verkäufe
FROM alle_bücher
WHERE verkäufe > 1000000
ORDER BY verkäufe DESC
LIMIT 10;
Dieser Query:
- Fügt in unsere
bestseller
-Tabelle ein. - Selektiert von
alle_bücher
, wo die Verkäufe über einer Million liegen. - Sortiert sie nach Verkäufen in absteigender Reihenfolge.
- Nimmt nur die Top 10.
Es ist, als ob du nur die Sahne des Erntes – nur die Top 10 Bestseller – auf dein spezielles Regal picks.
Einfügen aller Spalten von einer Tabelle in eine andere Tabelle
Manchmal möchten wir alles kopieren – jeden einzelnen Detail. Das können wir auch! Nehmen wir an, wir archivieren unsere gesamten Verkaufsdaten von 2022:
INSERT INTO verkaufs_archive_2022
SELECT *
FROM aktuelle_verkäufe
WHERE YEAR(verkaufsdatum) = 2022;
Hier ist, was passiert:
- Wir geben keine Spalten in der
INSERT INTO
-Teil an. - Wir verwenden
SELECT *
, um alle Spalten zu selektieren. - Wir filtern, um nur Verkäufe aus dem Jahr 2022 einzuschließen.
Das ist, als ob du ein Abbild deines gesamten 2022er Bücherregals nimmst und es exakt an einem neuen Ort recreatest.
INSERT INTO SELECT mit einem.Client-Programm
Nun, lassen uns darüber sprechen, wie wir das außerhalb von MySQL, mit einem Client-Programm, machen können. Ich zeige dir ein Beispiel mit Python, das eine beliebte Sprache für Datenbankoperationen ist.
import mysql.connector
# Verbinde zur Datenbank
mydb = mysql.connector.connect(
host="localhost",
user="deinbenutzername",
password="deinpasswort",
database="deinedatenbank"
)
mycursor = mydb.cursor()
# Unser INSERT INTO SELECT Query
sql = """
INSERT INTO neue_zugänge (titel, autor, genre)
SELECT titel, autor, genre
FROM alte_bücher
WHERE genre = 'Fantasy'
"""
# Führe den Query aus
mycursor.execute(sql)
# Bestätige die Änderungen
mydb.commit()
print(mycursor.rowcount, "Datensätze eingefügt.")
Dieses Skript:
- Verbindet sich mit deiner MySQL-Datenbank.
- Erstellt ein Cursor-Objekt, um mit der Datenbank zu interagieren.
- Definiert unser INSERT INTO SELECT Query.
- Führt den Query aus.
- Bestätigt die Änderungen (sehr wichtig!).
- Gibt die Anzahl der eingefügten Datensätze aus.
Es ist, als hättest du einen Roboter-Assistenten, der deine Bücherregale für dich umorganisieren kann!
Schlussfolgerung
Und das war's, Leute! Wir haben die Reise durch das Land von "Insert Into Select" in MySQL unternommen. Von grundlegenden Konzepten bis hin zu praktischen Anwendungen haben wir alles abgedeckt. Denke daran, Übung macht den Meister, also habe keine Angst, diese Queries auszuprobieren.
Hier ist eine schnelle Referenztabelle der Methoden, die wir besprochen haben:
Methode | Beschreibung | Beispiel |
---|---|---|
Basic Insert Into Select | Kopiert Daten von einer Tabelle in eine andere | INSERT INTO ziel SELECT * FROM quelle |
Einfügen spezifischer Spalten | Kopiert nur bestimmte Spalten | INSERT INTO ziel (spalte1, spalte2) SELECT spalte1, spalte2 FROM quelle |
Einfügen mit Bedingung | Kopiert Daten, die bestimmten Kriterien entsprechen | INSERT INTO ziel SELECT * FROM quelle WHERE bedingung |
Einfügen mit LIMIT | Kopiert eine begrenzte Anzahl von Zeilen | INSERT INTO ziel SELECT * FROM quelle LIMIT 10 |
Einfügen aller Spalten | Kopiert alle Spalten ohne Angabe | INSERT INTO ziel SELECT * FROM quelle |
Verwendung eines Client-Programms | Führt Insert Into Select außerhalb von MySQL aus | Siehe Python-Beispiel oben |
Frohes Abfragen und möge deine Datenbanken stets organisiert und effizient sein!
Credits: Image by storyset