SQL Server Essentials: Ändern von Tabellendaten mit SQL Insert, SQL Update, SQL Delete und Truncate

Tabellen sind eine der Kernkomponenten jedes relationalen Datenbanksystems, und SQL Server ist da keine Ausnahme. Tabellen speichern die Daten, die der relationale Datenbankmotor für Abfragen, Berichte und andere Operationen verwendet. In diesem Artikel zeige ich Ihnen, wie Sie Daten aus einer SQL Server-Tabelle mithilfe von T-SQL INSERT, T-SQL UPDATE, T-SQL DELETE und TRUNCATE ändern.

In meinem vorherigen Artikel, Essential SQL Server: Erstellen von Datenbanken und Tabellen, habe ich gezeigt, wie Sie grundlegende SQL Server-Datenbanken und Tabellen erstellen können. In diesem Artikel werden wir uns ansehen, wie Sie diese Tabellen füllen, indem Sie Zeilen hinzufügen, aktualisieren und löschen.

Werbeanzeige

I created the following table in my previous article. The syntax from this simple example DDL command shows that the table has three columns and each of them uses a different data type:

CREATE TABLE dbo.myLogins
 (
     id INT NOT NULL PRIMARY KEY,
    name VARCHAR (20),
    login_date DATETIME
 );

In diesem Artikel werden wir uns damit befassen, Daten zu einer Tabelle hinzuzufügen, indem wir die INSERT-Anweisung verwenden, Daten in einer Tabelle mithilfe der UPDATE-Anweisung ändern und Daten mithilfe der DELETE-Anweisung löschen. Daten in einer Tabelle können auf verschiedene Arten gelöscht werden, daher werden wir auch den Unterschied zwischen der Verwendung der DELETE-Anweisung und der TRUNCATE-Anweisung behandeln.

Hinzufügen von Zeilen mit T-SQL INSERT

Sie können Daten auf verschiedene Arten zu einer SQL Server-Tabelle hinzufügen:

  • Sie können den interaktiven Abfrage-Designer von SQL Server Management Studio (SSMS) verwenden, um Zeilen zu einer Tabelle hinzuzufügen.
  • Sie können PowerShell
  • Sie können den SQL Server Import- und Export-Assistenten oder Integration Services verwenden, um Daten in eine Tabelle zu importieren
  • Sie können das Befehlszeilentool bcp-Dienstprogramm verwenden.

Davon abgesehen ist die häufigste Methode, Daten zu einer SQL Server-Tabelle hinzuzufügen, die Verwendung des SQL INSERT-Statements. Das T-SQL INSERT-Statement fügt eine oder mehrere Zeilen in eine SQL Server-Tabelle ein.

Werbung

Das folgende Beispiel zeigt, wie eine Zeile zur Beispiel-Tabelle hinzugefügt wird, die Sie zuvor gesehen haben:

INSERT INTO myLogins (id, name, login_date) VALUES (2, 'John Smith', '3-12-2023')

Hier identifiziert die INSERT INTO-Anweisung die Tabelle, die die eingefügten Zeilen enthält. Als Nächstes sehen Sie innerhalb der Klammern eine Liste der verwendeten Spalten. Diese Liste verwendet alle Spalten in der Tabelle, aber das ist nicht zwingend erforderlich.

Zum Schluss enthält die VALUES-Klausel die tatsächlichen Werte, die in die Tabelle eingefügt werden. Als Abkürzung können Sie die Spaltenliste in einer INSERT-Anweisung weglassen. Zum Beispiel führt die folgende INSERT-Anweisung genau die gleiche Funktion aus wie das vorherige Beispiel:

INSERT INTO myLogins VALUES (2, 'John Smith', '3-12-2023')
As a shortcut, you can omit the column list in an INSERT statement (Image credit: Petri/Michael Otey)

Sofern die Spalte nicht mit den Schlüsselwörtern NOT NULL definiert ist, können Sie in der Werteliste einer INSERT-Anweisung auch explizit NULL angeben. Alternativ können Sie eine Spalte, für die Sie keinen Wert angeben möchten, aus Ihrer Spalten- und Werteliste lassen, was dazu führt, dass sie einen NULL-Wert enthält.

Werbung

Einfügen von Tabellenzeilen aus den Ergebnissen einer Abfrage

Zusätzlich zur Verwendung einer standardmäßigen T-SQL INSERT-Anweisung mit einer VALUES-Klausel können Sie auch Zeilen zu einer Tabelle hinzufügen, indem Sie eine SQL-Abfrage verwenden. Die Abfrage kann einfach oder komplex sein und die Ergebnisse können in die Zieltabelle eingefügt werden.

Zum Beispiel können Sie mit einer Abfrage wie der unten gezeigten Zeilen aus der Tabelle myLogins2 in die Tabelle myLogins kopieren:

INSERT INTO myLogins (id, name, login_date) SELECT id, name, login_date FROM myLogins2 where id > 50.

In diesem Beispiel werden die Ergebnisse der Unterabfrage aus der Tabelle myLogins2 verwendet, um Zeilen in die Tabelle myLogins einzufügen. Die INSERT-Anweisung fügt Daten in die drei Spalten der Tabelle ein. Die Unterabfrage verwendet eine SELECT-Anweisung, um dieselben drei Spalten aus einer zweiten Tabelle mit dem Namen myLogins2 auszuwählen.

Allerdings werden in diesem Beispiel nur die Zeilen mit einem id-Wert größer als 50 zurückgegeben und in die myLogins-Tabelle eingefügt. In diesem einfachen Beispiel sind die Spaltennamen gleich, aber das ist kein Anforderungsmerkmal. Um dies zu funktionieren, müssen Sie in der myLogins2-Tabelle eine oder mehrere Zeilen mit einem id-Wert größer als 50 haben, die in der myLogins-Tabelle nicht vorhanden sind.

Aktualisierung von Zeilen mit T-SQL UPDATE

Wie die Hinzufügung von Zeilen zu einer Tabelle, gibt es verschiedene Möglichkeiten, um Zeilen in einer Tabelle zu ändern. SSMSs Abfrage-Designer ermöglicht Ihnen die interaktive Aktualisierung von Zeilen, aber Sie können auch PowerShell oder Integration Services verwenden.

Allerdings ist der am häufigste verwendete Weg, um existierende Zeilen in einer Datenbanktabelle zu ändern, die SQL UPDATE-Anweisung zu verwenden. Der T-SQL UPDATE-Ausdruck ändert die Werte in einer oder mehreren Zeilen in einer SQL Server-Tabelle.

Typischerweise möchten Sie die UPDATE-Anweisung zusammen mit einer WHERE-Klausel verwenden, um anzugeben, welche Zeilen aktualisiert werden sollen. Wenn Sie die WHERE-Klausel nicht verwenden, werden alle Zeilen in der Tabelle aktualisiert. Das folgende Listing zeigt ein einfaches Beispiel für die Verwendung der T-SQL UPDATE-Anweisung zur Änderung der Werte in einer Zeile der Tabelle myLogins.

UPDATE myLogins SET name = ‘John Smith’ WHERE id = 1

Wie bereits erwähnt, wenn Sie die WHERE-Klausel auslassen würden, würde die name-Spalte jeder Zeile auf den neuen Wert gesetzt. Ebenso würden bei einer WHERE-Klausel, die mehrere Zeilen einschließt, wie es bei der Verwendung der < oder > Operatoren der Fall sein könnte, mehrere übereinstimmende Zeilen aktualisiert.

Aktualisieren von Tabellenzeilen für die Ergebnisse einer Abfrage

Ähnlich wie bei der INSERT-Anweisung können Sie auch Zeilen in einer Tabelle mit Werten aus einer anderen Tabelle aktualisieren. Im folgenden Listing sehen Sie, wie Sie ein SQL-Update von einer anderen Tabelle verwenden können.

UPDATE myLogins SET myLogins.name = myLogins2.name FROM myLogins2 WHERE myLogins.id = myLogins2.id

Hier sehen Sie, dass die UPDATE-Anweisung auf der Tabelle myLogins ausgeführt wird und dass die name-Spalte mit den Werten aus der Tabelle myLogins2 aktualisiert wird, wenn der Wert in den id-Spalten der beiden Tabellen übereinstimmt.

The UPDATE statement lets you update rows in one table using values from another table (Image credit: Petri/Michael Otey)

Wie Sie vielleicht vermuten, gibt es viele weitere Optionen für die Verwendung des UPDATE-Statements. Ihre Abfrage kann mehrere Zeilen aktualisieren, sie kann komplexer sein und Joins verwenden, und Sie können die TOP-Klausel, die ORDER BY-Klausel, Common Table Expressions (CTEs) und mehr verwenden, um Ihre Update-Abfragen zu erstellen.

Löschen von Zeilen mit T-SQL DELETE und TRUNCATE

Wie Sie erwarten würden, können Sie Zeilen aus einer Tabelle mithilfe des interaktiven SSMS-Abfrage-Designers, PowerShell oder Integration Services löschen. Die häufigste Methode ist jedoch die Verwendung des SQL DELETE-Statements.

Der T-SQL DELETE-Ausdruck entfernt eine oder mehrere Zeilen aus einer SQL Server-Tabelle. Es ist selbstverständlich, dass Sie den SQL DELETE-Ausdruck sorgfältig verwenden sollten, da er Daten aus Ihren Tabellen dauerhaft löscht. Wenn Sie einen Fehler machen, müssen Sie die Daten möglicherweise von einem Snapshot, dem Transaktionslog oder einem Backup wiederherstellen.

Der folgende Beispiel zeigt, wie Sie eine Zeile aus der Tabelle myLogins löschen:

DELETE FROM myLogins WHERE id = 1

Hier können Sie sehen, dass eine Zeile in der Tabelle myLogins gelöscht wird, wobei der Wert der Spalte id gleich 1 ist. Sie können auch mehrere Zeilen löschen, indem Sie den WHERE-Ausdruck ändern, wie in dem folgenden Beispiel, das alle Zeilen mit einem id-Wert größer als 50 löscht.

DELETE FROM myLogins WHERE id &gt; 50
You can delete multiple rows by changing the WHERE clause (Image credit: Petri/Michael Otey)

Wie beim UPDATE-Status kann der WHERE-Ausdruck weggelassen werden, was bedeutet, dass alle Zeilen in der Tabelle gelöscht werden. Zum Beispiel löscht das folgende Beispiel alle Zeilen in der Tabelle myLogins:

DELETE FROM myLogins

Zeilen aus den Ergebnissen einer Abfrage löschen

Wie die INSERT und UPDATE-Ausdrücke ist der DELETE-Ausdruck auch in der Lage, von den Ergebnissen einer Abfrage auszuführen. Der folgende Beispiel zeigt Ihnen, wie Sie auf Basis einer Abfrage Zeilen löschen können:

DELETE FROM myLogins WHERE login_date &lt; '12-31-2022'

Hier werden alle Zeilen in der Tabelle myLogins gelöscht, die einen Wert in der Spalte login_date, der vor 12/31/22 liegt.

I’ve been using simple examples throughout this article, but like the INSERT and UPDATE statements, your queries can be much more complex. You could use JOINs and multiple tables in the DELETE statement’s subquery, use clauses like TOP and ORDER BY, and more.

DELETE vs TRUNCATE

Der T-SQL DELETE-Befehl ist in der Lage, eine oder mehrere Zeilen aus einer Tabelle zu entfernen. Es ist jedoch nicht der einzige Weg, um Zeilen aus einer Tabelle zu löschen. Sie können alle Zeilen in einer SQL Server-Tabelle mit dem T-SQL TRUNCATE TABLE-Befehl löschen.

Der DELETE-Befehl ist eine vollständig protokollierte Aktion. Andererseits ist der TRUNCATE TABLE-Befehl eine minimal protokollierte Aktion. Dies bedeutet, dass der TRUNCATE-Befehl etwas besser funktioniert und weniger Einträge im Transaktionsprotokoll hinzugefügt werden. Sie können ein Beispiel für die Verwendung von TRUNCATE im folgenden Listing sehen.

TRUNCATE TABLE myLogins

Dadurch werden alle Daten in der Tabelle myLogins gelöscht.

Zusammenfassung

In diesem Tutorial haben Sie gesehen, wie Sie Zeilen in einer SQL Server-Tabelle mithilfe der T-SQL INSERT-, UPDATE- und DELETE-Anweisungen hinzufügen, ändern und löschen können. In jedem Fall habe ich erklärt, wie man mit Einzelwertzeilen und wie man mit mehreren Zeilen als Ergebnis einer Unterabfrage arbeitet. Darüber hinaus haben Sie gesehen, wie sich die DELETE- und TRUNCATE-Anweisungen unterscheiden, obwohl sie im Grunde genommen beide Zeilen aus einer Tabelle löschen können.

Verwandter Artikel:

Source:
https://petri.com/sql-insert-update-delete-truncate/