Direkt zum Inhalt
Urkunden
JSON-FunktionenTabellen & Schema ManagementMathe-FunktionenDatenbankenString-FunktionenAuslöserIndizesDatum FunktionenBasic Syntax

PostgreSQL INSERT

Die Anweisung `INSERT` in PostgreSQL wird verwendet, um neue Datenzeilen in eine bestimmte Tabelle einzufügen. Es ist ein grundlegender Vorgang, um Datenbanken mit neuen Informationen zu füllen und zu aktualisieren.

Verwendung

Die grundlegende Syntax der `INSERT`-Anweisung wird verwendet, wenn du einer Tabelle neue Datensätze hinzufügen musst. Sie gibt den Tabellennamen, die Spalten, in die Daten eingefügt werden sollen, und die entsprechenden Werte an.

sql
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

In dieser Syntax ist `Tabellenname` die Zieltabelle, `Spalte1, Spalte2, ...` sind die Spalten, die die Daten erhalten sollen, und `Wert1, Wert2, ...` sind die eigentlichen Datenwerte, die eingefügt werden sollen.

Beispiele

1. Basic Insert

sql
INSERT INTO employees (first_name, last_name, email)
VALUES ('John', 'Doe', 'john.doe@example.com');

Dieses Beispiel fügt eine einzelne Zeile in die Tabelle "Mitarbeiter" mit den Werten für "Vorname", "Nachname" und "E-Mail" ein.

2. Mehrere Zeilen einfügen

sql
INSERT INTO products (product_name, price)
VALUES 
('Product A', 10.99),
('Product B', 15.49);

Hier werden in einer Anweisung zwei Zeilen in die Tabelle "Produkte" eingefügt, jeweils mit einem "Produktnamen" und einem "Preis".

3. Einfügen mit Unterabfrage

sql
INSERT INTO sales (product_id, quantity)
SELECT product_id, 5
FROM products
WHERE product_name = 'Product C';

In diesem Beispiel werden Daten in die Tabelle `Verkauf` eingefügt, indem die `Produkt_id` aus der Tabelle `Produkte` ausgewählt wird, wobei der `Produktname` 'Produkt C' ist und die `Menge` auf 5 gesetzt wird.

4. Behandlung von Duplikaten mit ON CONFLICT

sql
INSERT INTO users (username, email)
VALUES ('jane_doe', 'jane.doe@example.com')
ON CONFLICT (username) DO UPDATE 
SET email = EXCLUDED.email;

Dieses Beispiel zeigt, wie mögliche Duplikate behandelt werden, indem die "E-Mail" aktualisiert wird, wenn der "Benutzername" bereits in der Tabelle "Benutzer" existiert.

5. RETURNING-Klausel verwenden

sql
INSERT INTO orders (customer_id, order_date)
VALUES (123, '2023-10-11')
RETURNING order_id;

Die Klausel `RETURNING` wird verwendet, um die `Order_id` der neu eingefügten Zeile zurückzugeben, was besonders bei Feldern mit automatischer Erhöhung nützlich ist.

Tipps und bewährte Praktiken

  • Gib die Spalten explizit an. Listen Sie immer die Spalten in einer `INSERT`-Anweisung auf, um die Übersichtlichkeit zu gewährleisten und die Kompatibilität zu erhalten, wenn sich die Struktur der Tabelle ändert.
  • Datentypen validieren. Stelle sicher, dass die eingefügten Werte mit den Datentypen der Spalten übereinstimmen.
  • Verwende Transaktionen für Masseneinlagen. Wickle mehrere "INSERT"-Operationen in eine Transaktion ein, um Atomarität zu gewährleisten und die Leistung zu verbessern. Zum Beispiel:
    sql
            BEGIN;
            INSERT INTO products (product_name, price) VALUES ('Product C', 12.99);
            INSERT INTO products (product_name, price) VALUES ('Product D', 18.49);
            COMMIT;
            
  • Behandle Duplikate. Verwende `ON CONFLICT` für den Umgang mit möglichen Schlüsselkonflikten, nicht `INSERT ... ON DUPLICATE KEY UPDATE`, was der MySQL-Syntax entspricht.
  • Setze Unterabfragen klug ein. Nutze Unterabfragen für das dynamische Einfügen von Daten aus anderen Tabellen, um die Datenintegrität und -konsistenz zu wahren.