Zurück zur Artikelliste Artikel
10 Leseminuten

SQL INSERT, SQL UPDATE, SQL DELETE - Oh je!

Müssen Sie SQL INSERT, UPDATE, oder DELETE verstehen? Wir bringen Sie mit einem umfassenden How-To und nützlichen Beispielen auf den neuesten Stand!

SQL INSERT, UPDATE oder DELETE

SQL INSERT, UPDATE und DELETE - was hat es damit auf sich? Wenn Sie ein Data-Engineer, ein Datenbankadministrator oder auch nur ein durchschnittlicher Datenfan sind, werden Sie eines Tages eine Datenbank haben, die Ihr "Baby" wird. Mit diesem besonderen Befehlen müssen Sie den kleinen Kerl füttern und wickeln. Ja, wir reden immer noch über Datenbanken! INSERT, UPDATE und DELETE sind allesamt Funktionen in SQL, mit denen Sie sicherstellen können, dass Ihre Daten auf dem neuesten Stand sind und keine unnötigen oder veralteten Informationen enthalten.

INSERT, UPDATE und DELETE sowie SELECT und MERGE sind so genannte DML-Anweisungen (Data Manipulation Language), mit denen SQL-Benutzer Daten anzeigen und verwalten können. Natürlich werden die Daten oft von der Anwendung selbst aktualisiert, aber sie müssen auch regelmäßig manuell eingegeben oder gepflegt werden, was nicht nur ein gutes Verständnis von SQL für Anfänger voraussetzt (dieser Artikel geht davon aus, dass Sie diese Grundkenntnisse in SQL haben - sehen Sie sich unseren SQL für Anfänger Kurs und unsere Reihe von SQL-Artikeln an, wenn Sie das noch nicht getan haben), sondern auch, wie man INSERT, UPDATE und DELETE in SQL verwendet.

Dieser Artikel bietet die Grundlagen von SQL INSERT, SQL UPDATE und SQL DELETE, aber wenn Sie eine umfassendere Anleitung wünschen, sehen Sie sich unseren Kurs Wie man Daten in einer Datenbank in SQL ändert an. Er enthält alles, was Sie brauchen, um DML-Anweisungen zum Kinderspiel zu machen.

Mickey Maus Kinderkrankenhaus - eine Datenbank-Fallstudie

Schauen wir uns diese SQL-Tripletts einzeln an, um zu verstehen, wie sie funktionieren.

Wir verwenden eine Beispieldatenbank, um jede der drei Möglichkeiten zu demonstrieren. Bleiben wir beim Thema Baby: Nehmen wir an, Sie sind Datenverwalter in einem Kinderkrankenhaus, genauer gesagt im "Mickey Maus Kinderkrankenhaus". Das Krankenhaus führt Aufzeichnungen über alle seine kleinen Patienten, einschließlich ihres Alters, ihres Gewichts, ihrer Bluttestergebnisse - Sie wissen schon, worum es geht.

Normalerweise geben die Ärzte diese Informationen jedes Mal, wenn sie ihre Patienten sehen, in das Krankenhaussystem ein und aktualisieren sie, und ein Großteil des Einfügens, Aktualisierens und Löschens von Datensätzen in der Datenbank wird vom System übernommen. Aber oft gibt es Dinge, die manuell korrigiert werden müssen, und als Datenbankadministrator haben Sie jetzt die Gelegenheit, zu glänzen!

Im folgenden Artikel verwenden wir drei verschiedene Tabellen, um die drei verschiedenen Anweisungen zu demonstrieren.

Beispieltabelle Nummer eins zeigt Patientendatensätze und ihre grundlegenden Informationen:

Patiententabelle

PatientenIDNachnameVornameGeburtsdatumGechlechtGewichtGroesseGeimpft
15223SmithDeniz12/31/2018W21.429.2J
15224AgarwalArjun08/29/2017M28.134.2J
15225AdamsPoppy02/14/2015W34.039.2N
15226JohnsonTierra08/15/2019W14.624.5J
15227KhouriMohammed03/30/2014M41.544.1J
15228JonesBen04/04/2011M70.152.2J
15229KowalczykAlexandra08/27/2019W15.223.9J

Beispieltabelle Nummer zwei enthält die verschiedenen Abteilungen des Krankenhauses und die Gruppen und Kategorien, unter die diese Abteilungen fallen:

Abteilungstabelle

AbteilungsIDAbteilungsnameGruppennameKategoriename
1KardiologieHerzzentrumKlinisch
2Zentrale IntensivstationNotfallKlinisch
3NotaufnahmeNotfallKlinisch
4KommunikationAdministrationBetrieb
5OnkologieInterne MedizinKlinisch
6NeurologieInterne MedizinKlinisch
7PersonalabteilungAdministrationBetrieb
8PathologieServiceTechnisch
9RadiologieServiceTechnisch
10ApothekeServiceTechnisch
11LeitungAdministrationBetrieb
12UrologieChirurgieKlinisch
13HematologieInterne MedizinKlinisch
14Montana AbteilungStationBetrieb
15Chicago AbteilungStationBetrieb
16Lincoln AbteilungStationBetrieb
17Yellowstone AbteilungStationBetrieb
18Brooklyn AbteilungStationBetrieb

Beispieltabelle Nummer drei erfasst die Besuche der Patienten im Laufe der Jahre:

Tabelle PatientenAufnahme

PatientenIDZuletztAufgenommenZuletztEntlassen
3312/29/195201/05/1953
34--
3508/01/200408/04/2004
3607/28/201107/30/2011
3705/27/195005/30/1950
38--
3910/11/197010/20/1970

Mit diesen Beispieltabellen bewaffnet, wollen wir uns nun den Feinheiten von INSERT, UPDATE und DELETE zuwenden.

Einfügen von Daten mit SQL

Genau wie bei Babys werden jede Minute neue Daten geboren. Mit vielen intelligenten Systemen werden diese Daten oft nahtlos in die vorgesehenen Datenbanken eingefügt. In vielen Fällen werden Sie jedoch feststellen, dass Sie sie manuell hinzufügen müssen, und hier kommt die INSERT Anweisung in SQL ins Spiel.

INSERT ist das Mittel der Wahl, um einzelne oder mehrere Zeilen zu einer Tabelle hinzuzufügen. INSERT kann auch beim Hinzufügen von Zeilen aus einer Tabelle in eine andere Tabelle helfen.

Schauen wir uns die Grundstruktur einer SQL-Anweisung INSERT an:

INSERT INTO Tabellenname
(Spalte1, Spalte2, ...)
VALUES (Wert1, Wert2, ...)

Zuerst müssen wir die Tabelle identifizieren, in die wir Zeilen einfügen wollen. Dann geben wir die Spalten an, die wir füllen wollen. Schließlich legen wir die Werte fest, die wir hinzufügen müssen. Dies ist die Grundform der Funktion INSERT, und sie ist ziemlich intuitiv.

Um diese Struktur in der Praxis zu verdeutlichen, hier ein Beispiel aus unserer Fallstudie.

Einer der Ärzte im Mickey Maus Kinderkrankenhaus hat eine neugeborene Patientin, die noch keinen Namen hat. Der Arzt muss das Baby sofort in die Datenbank aufnehmen, um Zugang zu einer Medikamentenstudie für das kranke Kind zu erhalten, aber das System lässt nicht zu, dass die Akte der Kleinen ohne Namen übermittelt wird. Der Arzt möchte, dass die Patientin unter ihrer Patientennummer eingetragen wird, während ihr Name erst zu einem späteren Zeitpunkt hinzugefügt werden soll. Als Administrator müssen Sie die Patientin manuell in die Datenbank eingeben.

So würde die Anweisung INSERT aussehen:

INSERT INTO dbo.Patient
            (Nachname, Vorname, Geburtsdatum, Gechlecht, [Gewicht], Groesse, Geimpft)
VALUES      (NULL, NULL,'2019-11-19', 'W', 14.0, 23.1, 'N')

Wie Sie sehen, geben wir nicht nur den Namen der Tabelle an, in die wir einfügen wollen, sondern auch die Namen der Spalten und Werte, die wir hinzufügen wollen. Wir geben die PatientenID in der Spaltenliste nicht an, da sie als Identitätsspalte automatisch ausgefüllt wird.

Da wir den Namen des Patienten vorerst leer lassen wollen, schreiben wir NULL für die Namensspalten.

Sobald wir diesen Befehl ausführen, wird die folgende Ergänzung zur Datenbank erstellt:

Daten mit SQL einfügen

Mehrere Zeilen einfügen

Um mehr als eine Datenzeile mit nur einer Anweisung einzufügen, verwenden Sie Klammern und Kommas, um die einzelnen neuen Zeilen anzugeben.

INSERT INTO dbo.Patient
            (Nachname, Vorname, Geburtsdatum, Gechlecht, [Gewicht], Groesse, Geimpft)
VALUES      ('Hitson', 'George','2019-11-19', 'M', 13.9, 22.5, 'N'),
VALUES      ('Hitson', 'Jenny','2019-11-19', 'W', 13.7, 22.3, 'N')

Tipp! Verwenden Sie eine Transaktion, um Ihre Einfügung zu testen, ohne sie zu bestätigen und Ihre Tabelle dauerhaft zu verändern. Beginnen Sie diese mit BEGIN TRANSACTION und beenden Sie die Transaktion entweder mit COMMIT, wenn Sie die Änderungen beibehalten wollen, oder mit ROLLBACK, wenn Sie die Änderungen rückgängig machen wollen. Nachfolgend sehen Sie, wie wir eine Transaktion zu dem obigen Beispiel hinzufügen würden:

BEGIN TRANSACTION

BEGIN TRANSACTION
INSERT INTO dbo.Patient
            (Nachname, Vorname, Geburtsdatum, Gechlecht, [Gewicht], Groesse, Geimpft)
VALUES      ('Hitson', 'George','2019-11-19', 'M', 13.9, 22.5, 'N'),
	        ('Hitson', 'Jenny','2019-11-19', 'W', 13.7, 22.3, 'N')

ROLLBACK
--COMMIT

Einfügen aus einer Tabelle in eine andere

Sie möchten eine oder mehrere Datenzeilen aus einer Tabelle in eine andere Tabelle einfügen? Sie können die Anweisung INSERT INTO SELECT verwenden.

Nehmen wir an, mehrere unserer jungen Patienten nehmen an einer neuen Medikamentenstudie teil, und Sie richten eine neue Tabelle ein, um ihre Teilnahme zu erfassen. Die Grundstruktur dieser Anweisung ist wie folgt:

INSERT INTO Zieltabelle (Spalte1, Spalte2, ...)
SELECT      (Spalte1, Spalte2, ...)
FROM        Quelltabelle

Die Bescheinigung für unser Beispiel einer Medikamentenstudie würde wie folgt aussehen:

INSERT INTO [dbo].[MedikamentenstudieAlpha]
           (Nachname, Vorname, Geburtsdatum, Gechlecht, MedikamentOderPlacebo, Notizen)
SELECT 
	p.Nachname, p.Vorname, p.Geburtsdatum, p.Gechlecht, 'Medikament', NULL 
FROM dbo.Patient AS p
WHERE 
	p.PatientenID IN (15226, 15229, 15230)
UNION
SELECT 
	p.Nachname, p.Vorname, p.Geburtsdatum, p.Gechlecht, 'Placebo', NULL 
FROM dbo.Patient AS p
WHERE 
	p.PatientenID IN (15231)

Sie könnten das Beispiel auch als "Common Table Expression" (CTE) schreiben. CTE kann unter anderem dazu verwendet werden, eine temporäre Ergebnismenge zu erstellen, die während der Abfrage wiederverwendet werden kann. So würde der gleiche Befehl als CTE geschrieben aussehen:

WITH MedikamentenStudiePatienten (Nachname, Vorname, Geburtsdatum, Gechlecht, MedikamentOderPlacebo, Notizen)
AS (
	SELECT 
		p.Nachname, p.Vorname, p.Geburtsdatum, p.Gechlecht, 'Medikament', NULL 
	FROM dbo.Patient AS p
	WHERE 
		p.PatientenID IN (15226, 15229, 15230)
	UNION
	SELECT 
		p.Nachnamename, p.Vorname, p.Geburtsdatum, p.Gechlecht, 'Placebo', NULL 
	FROM dbo.Patient AS p
	WHERE 
		p.PatientenID IN (15231)
	)
INSERT INTO [dbo].[MedikamentenstudieAlpha]
           (Nachname, Vorname, Geburtsdatum, Geschlecht, MedikamentOderPlacebo, Notizen)
SELECT Nachname, Vorname, Geburtsdatum, Geschlecht, MedikamentOderPlacebo, Notizen
FROM MedikamentenStudiePatienten
Einfügen aus einer Tabelle in eine andere

Tipp! Wenn Sie SELECT verwenden, um Daten aus einer Tabelle in eine andere einzufügen, ist es eine gute Idee, zunächst die Anweisung SELECT allein auszuführen - nur um sicherzustellen, dass die richtigen Zeilen zurückgegeben werden und Sie mit dem Ergebnis zufrieden sind!

UPDATE-Daten mit SQL

Die SQL-Anweisung UPDATE ist eine weitere Aufgabe, die von Data-Engineers und Datenbankadministratoren häufig verwendet wird. Mit ihr können Sie einen Spaltenwert für eine oder mehrere Zeilen ändern.

Eine SQL UPDATE-Anweisung ist im Allgemeinen wie folgt aufgebaut:

UPDATE Tabellenname
SET Spalte1=Wert1, Spalte2=Wert2,...
WHERE filterSpalte=filterWert

Genau wie bei der SQL INSERT-Anweisung müssen wir zunächst die Tabelle identifizieren, die wir aktualisieren wollen. Dann verwenden wir die SET-Klausel, in der die zu aktualisierenden Spalten aufgeführt sind. Schließlich wird mit der WHERE-Klausel festgelegt, welche Zeilen in die Aktualisierung einbezogen werden sollen.

Tipp! Da sich ein neuer Spaltenwert auf mehr als eine Zeile auswirken kann, sollten Sie sich vor dem Bestätigen vergewissern, dass Sie mit dem Umfang der Aktualisierung einverstanden sind! Genau wie INSERT kann eine SQL UPDATE-Anweisung als Transaktion geschrieben werden, d.h. Sie können nach der Aktualisierung entweder COMMIT oder ROLLBACK durchführen, je nachdem, ob Sie mit den Änderungen zufrieden sind oder nicht.

Hier ein Beispiel anhand unserer Fallstudie. Unsere Notaufnahme wird in die Abteilung "Trauma und Notfallchirurgie" umbenannt, so dass ihr Name in der Datenbank geändert werden muss. Um diesen Namen zu aktualisieren, können Sie diese Anweisung ausführen:

UPDATE dbo.Abteilung
   SET Abteilungsname = 'Trauma and Notfallchirurgie'
WHERE AbteilungsID = 3
SELECT * FROM dbo.Abteilung WHERE Abteilungsname = 'Notaufnahme'
Daten mit SQL aktualisieren

So würde der aktualisierte Abteilungsname in unserer Tabelle aussehen:

Daten mit SQL aktualisieren

Wenn Sie die SQL-Anweisung UPDATE verwenden, stellen Sie sicher, dass Ihre WHERE-Klausel genau angibt, welche Zeilen Sie aktualisieren möchten. Im Zweifelsfall schreiben Sie die Anweisung als Transaktion, die Sie dann rückgängig machen können, wenn Sie mit der Änderung nicht zufrieden sind - das schadet nicht!

Um zu überprüfen, ob Sie überhaupt die richtigen Daten für die Aktualisierung auswählen, können Sie mit SELECT einen Test durchführen, um sicherzustellen, dass Sie die richtigen Zeilen auswählen.

Mehrere Zeilen aktualisieren

Wenn Sie mehrere Datenzeilen aktualisieren müssen, ist das mit der Anweisung UPDATE ganz einfach. Die WHERE-Klausel ist hier Ihr Freund.

Stellen Sie sich vor, Sie möchten alle stationären Stationen in der Gruppenspalte von "Station" auf "Zimmer" umkategorisieren.

UPDATE dbo.Abteilung
   SET Gruppenname = 'Zimmer'
WHERE Gruppenname = 'Station' 

Dann würde die Tabelle wie folgt aussehen:

Mehrere Zeilen aktualisieren Mehrere Zeilen aktualisieren

DELETE-Daten mit SQL

Strampler

SQL DELETE ist der Windelwechsler in der SQL-Welt. Gibt es dort etwas, das Sie nicht haben wollen? Löschen Sie es!

DELETE entfernt eine oder mehrere Zeilen aus einer Tabelle, aber seien Sie vorsichtig! Sie müssen sicherstellen, dass Sie wissen, was Sie löschen, bevor Sie die Anweisung bestätigen!

So sieht eine normale SQL DELETE-Anweisung aus:

DELETE Tabellenname
WHERE  filterSpalte=filterWert;

Sie besteht nur aus zwei Teilen: Der Angabe der Tabelle und der Angabe WHERE: Welche Zeilen Sie löschen wollen.

Wenn Sie den Primärschlüssel einer Zeile kennen, die Sie löschen wollen, ist Ihre Aufgabe einfach. Möchten Sie "Lincoln Abteilung" aus Ihrer Tabelle löschen? Das ist einfach:

DELETE FROM dbo.Abteilung
WHERE AbteilungsID = 16
Daten mit SQL löschen

Mehrere Zeilen löschen

Zurück zum Mickey Maus Kinderkrankenhaus. Nehmen wir an, der Datenmanager des Krankenhauses möchte alle Patientendatensätze derjenigen löschen, die das Krankenhaus seit 1969 nicht mehr besucht haben. So könnten Sie die Anweisung DELETE schreiben:

DELETE FROM dbo.PatientenAufnahme 
WHERE ZuletztEntlassen < '1969-01-01' 

Das Ergebnis? Das ist die Tabelle davor...

Mehrere Zeilen löschen

... und so sieht sie aus, nachdem wir das Skript ausgeführt haben:

Mehrere Zeilen löschen

Bevor Sie diese DELETE Anweisung ausführen, testen Sie das Ergebnis am besten mit SELECT. Damit erhalten Sie alle Zeilen zurück, die Sie gerade löschen wollten, und können so überprüfen, ob Sie die richtigen Zeilen entfernen!

Um diesen Test auszuführen, geben Sie ein:

SELECT * FROM dbo.PatientenAufnahme 
WHERE ZuletztEntlassen < '1969-01-01'

Warnung! Wenn Sie DELETE verwenden, ohne eine WHERE Klausel hinzuzufügen, löschen Sie jede Zeile aus Ihrer Tabelle.

Schlussfolgerung

Wenn Sie die SQL für Anfänger beherrschen, sind die SQL-Anweisungen INSERT, UPDATE und DELETE Ihr nächster Schritt zum Ruhm der Datenbanken! Wenn dieser Artikel Ihren Appetit geweckt hat, mehr zu lernen, schauen Sie sich unseren einsteigerfreundlichen Kurs an: Wie man Daten in einer Datenbank in SQL ändert. Darin werden nicht nur diese grundlegenden Informationen im Detail behandelt, sondern Sie lernen auch mehr:

  • Wie man mit automatisch ausfüllenden Werten umgeht und wie man SQL-Datenmanipulationsbefehle mit IDENTITY, SEQUENCE und NEWID() kombiniert.
  • Wie Sie SQL-DML-Befehle mit NULLS kombinieren können.
  • Wie Sie SQL DML-Befehle mit JOINS kombinieren.
  • Wie man Daten unter Verwendung von Standardwerten von Spalten ändert.
  • Wie man CRUD-Operationen durchführt - die wichtigsten der DML-Operationen.

Mit 52 interaktiven Übungen, lebenslangem Zugriff auf den Kurs, einem Abschlusszertifikat und einer 30-tägigen Geld-zurück-Garantie haben Sie nicht viel zu verlieren, wenn Sie den Kurs ausprobieren!

Also, worauf warten Sie noch? INSERT bringen Sie jetzt neues Wissen in Ihr Leben, UPDATE Ihre SQL-Ausbildung und DELETE alle Ausreden! Wir sehen uns bei den Datenbanken.