# MariaDB INSERT INTO – So fügen Sie Daten in Tabellen ein

Mit MariaDB `INSERT INTO` schreiben Sie neue Datensätze in eine bestehende Tabelle. Er zählt zu den wichtigsten Grundbefehlen in SQL und kommt immer dann zur Anwendung, wenn Sie eine Datenbank mit neuen Inhalten versehen oder bestehende Informationen erweitern möchten.

## Was ist der MariaDB `INSERT`-Befehl?

Der `INSERT`-Befehl in [MariaDB](https://www.ionos.at/digitalguide/server/knowhow/was-ist-mariadb/) fügt neue Daten in eine Tabelle ein. Er **ergänzt bestehende Datenstrukturen** durch vollständige Zeilen. Immer wenn Nutzerinnen und Nutzer sich registrieren, ein Formular absenden oder ein Produkt anlegen, führt das System im Hintergrund ein `INSERT INTO` aus.

MariaDB prüft beim Einfügen, ob die Werte zu den **Spaltendatentypen** passen und ob alle erforderlichen Felder ausgefüllt sind. Verletzen die Werte Einschränkungen wie `NOT NULL`, `UNIQUE` oder `FOREIGN KEY`, lehnt die Datenbank den Vorgang ab. Daher spielen die Struktur der Zieltabelle und die korrekte Angabe der Spalten eine wichtige Rolle für den Einsatz von `INSERT`.

## Wie sieht der `INSERT INTO`-Befehl in MariaDB aus?

Die Standard-Syntax für `INSERT INTO` lautet:

```sql
INSERT INTO table_name (column1, column2, column3)
VALUES (value1, value2, value3);
```

- `table_name` gibt die Tabelle an, in die die Daten geschrieben werden.
- Die Spaltenliste (`column1, column2, ...`) ist optional, aber empfehlenswert.
- Der `VALUES`-Teil enthält die Werte, die Sie in die angegebenen Spalten einfügen.

MariaDB ergänzt die Werte in der Reihenfolge, in der die Spalten definiert sind. Stimmen Anzahl oder **Reihenfolge der Werte** nicht mit der Spaltenliste überein, führt das zu einem Fehler.

## Welche Parameter und Argumente für MariaDB `INSERT INTO` gibt es?

`INSERT INTO` lässt sich je nach Bedarf erweitern und anpassen. Hier sind die wichtigsten Parameter und Varianten:

### Spaltenliste

Sie können alle Spalten angeben oder nur bestimmte. Fehlt die Liste, erwartet MariaDB Werte für alle Spalten in der Tabellenstruktur.

```sql
INSERT INTO users VALUES (1, 'Anna', 'anna@example.com');
```

Wenn Sie nur spezifische Spalten füllen möchten, führen Sie den folgenden Befehl aus:

```sql
INSERT INTO users (name, email) VALUES ('Anna', 'anna@example.com');
```

Hier wählen wir die Spalten `name` und `email` aus.

### Mehrere Zeilen einfügen

Diese Variante ist effizienter als mehrere einzelne MariaDB `INSERT`-Befehle, besonders bei großen Datenmengen:

```sql
INSERT INTO products (name, price)
VALUES ('pen', 1.50),
    ('notepad', 2.00),
    ('bag', 9.90);
```

### `INSERT IGNORE`

Mit `IGNORE` überspringt MariaDB Zeilen, die gegen Einschränkungen verstoßen, und fährt mit den restlichen fort.

```sql
INSERT IGNORE INTO users (id, name) VALUES (1, 'Anna');
```

### `INSERT ... ON DUPLICATE KEY UPDATE`

Dieser Ausdruck aktualisiert bestehende Zeilen, wenn ein eindeutiger Schlüsselkonflikt entsteht.

```sql
INSERT INTO users (id, name)
VALUES (1, 'Anna')
ON DUPLICATE KEY UPDATE name = 'Anna';
```

Die Technik spart zusätzliche Abfragen und sorgt dafür, dass Sie Insert- und Update-Logik in einem einzigen Befehl kombinieren. Dies ist sehr praktisch bei Importen, synchronisierten Daten oder automatisierten Buchungsvorgängen.

### Einfügen mit `SELECT`

Mit `SELECT` kopieren Sie Datensätze von einer Tabelle in eine andere:

```sql
INSERT INTO archive_orders (id, status)
SELECT id, status FROM orders WHERE status = 'completed';
```

## Anwendungsbeispiele für MariaDB `INSERT INTO`

Im Folgenden stellen wir Ihnen häufige Einsatzszenarien für `INSERT INTO` vor.

### User registrieren

In dem nachfolgenden Beispiel fügt MariaDB eine neue Benutzerin in die Tabelle `users` ein. Die Werte für die Spalten `name` und `email` stammen aus einem Formular oder einer Anwendung. Der Wert `NOW()` ruft den aktuellen Zeitstempel ab, also den Zeitpunkt der Registrierung.

```sql
INSERT INTO users (name, email, created_at)
VALUES ('Lena', 'lena@example.com', NOW());
```

Diese Methode eignet sich für klassische Webformulare wie Anmeldemasken, bei denen jede Eintragung direkt in die Datenbank übernommen wird. Wichtig ist hier, dass `created_at` vom Typ `DATETIME` oder `TIMESTAMP` ist, damit `NOW()` korrekt gespeichert wird.

### Daten aus einer anderen Tabelle einfügen

Dieses Beispiel zeigt, wie Sie vorhandene Daten aus einer Tabelle (`orders`) in eine andere Tabelle (`archive_orders`) übernehmen. MariaDB wählt alle Bestellungen aus, die den Status `'completed'` besitzen, und überträgt die Spalten `id` und `status`.

```sql
INSERT INTO archive_orders (id, status)
SELECT id, status FROM orders WHERE status = 'completed';
```

Solche Befehle kommen bei Archivierungen, Datenbereinigungen oder Berichterstellungen zum Einsatz. Überprüfen Sie, dass die Struktur, wie zum Beispiel Spaltentypen, zwischen Quell- und Zieltabelle übereinstimmt, sonst führt MariaDB den Befehl nicht aus.


This is a markdown version of: [https://www.ionos.at/digitalguide/hosting/hosting-technik/mariadb-insert-into/](https://www.ionos.at/digitalguide/hosting/hosting-technik/mariadb-insert-into/) for AI/LLM consumption.