SQL Server Essentials: Wijzigen van tabelgegevens met SQL Insert, SQL Update, SQL Delete en Truncate

Tabellen zijn een van de kerncomponenten van elk relationeel databasesysteem en SQL Server is hierop geen uitzondering. Tabellen slaan de gegevens op die de relationele database-engine gebruikt voor vragen, rapporten en andere bewerkingen. In dit artikel zal ik je laten zien hoe je gegevens kunt wijzigen in een SQL Server-tabel met behulp van T-SQL INSERT, T-SQL UPDATE, T-SQL DELETE en TRUNCATE.

In mijn vorige artikel, Essential SQL Server: Databases en Tabellen Maken, heb ik laten zien hoe je basis SQL Server databases en tabellen kunt maken. In dit artikel zullen we bekijken hoe je die tabellen kunt vullen door rijen toe te voegen, bij te werken en te verwijderen.

Advertentie

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 dit artikel zullen we kijken naar het toevoegen van gegevens aan een tabel met behulp van de INSERT-instructie, het wijzigen van gegevens in een tabel met behulp van de UPDATE-instructie, en het verwijderen van gegevens met behulp van de DELETE-instructie. Gegevens in een tabel kunnen op verschillende manieren worden verwijderd, dus we zullen ook het verschil behandelen tussen het gebruik van de DELETE-instructie en de TRUNCATE-instructie.

Rijen toevoegen met T-SQL INSERT

Je kunt gegevens toevoegen aan een SQL Server-tabel op verschillende manieren:

  • Je kunt de interactieve Query Designer van SQL Server Management Studio (SSMS) gebruiken om rijen aan een tabel toe te voegen
  • Je kunt PowerShell
  • gebruiken. Je kunt de SQL Server Import and Export Wizard of Integration Services gebruiken om gegevens in een tabel te importeren
  • Je kunt de opdrachtregeltool bcp utility gebruiken.

Dat gezegd hebbende, de meest voorkomende manier om gegevens toe te voegen aan een SQL Server-tabel is door de SQL INSERT-opdracht te gebruiken. De T-SQL INSERT-verklaring voegt één of meer rijen toe aan een SQL Server-tabel.

Advertentie

Het volgende voorbeeld laat zien hoe je een rij aan de voorbeeldtabel toevoegt die je eerder hebt gezien:

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

Hier identificeert de INSERT INTO-verklaring de tabel die de ingevoegde rijen zal bevatten. Vervolgens kunt u binnen de haakjes een lijst zien van de gebruikte kolommen. Deze lijst gebruikt alle kolommen in de tabel, maar dat hoeft u niet te doen.

Ten slotte geeft de VALUES-clausule de daadwerkelijke waarden die in de tabel zullen worden ingevoegd. Als snelkoppeling kunt u de kolommenlijst weglaten in een INSERT-verklaring. Bijvoorbeeld, de volgende INSERT-verklaring voert precies dezelfde functie uit als het vorige voorbeeld:

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)

Tenzij de kolom is gedefinieerd met behulp van de NOT NULL trefwoorden, kunt u ook expliciet NULL specificeren in de waardenlijst van een INSERT-instructie. Als alternatief, wanneer u geen waarde wilt opgeven voor een kolom, kunt u die kolom weglaten uit uw kolom- en waardenlijsten, waardoor deze een NULL-waarde bevat.

Advertentie

Rijen toevoegen aan een tabel vanuit de resultaten van een query

Naast het gebruik van een standaard T-SQL INSERT-instructie met een VALUES-clausule, kunt u ook rijen aan een tabel toevoegen als gevolg van een SQL-query. De query kan eenvoudig of complex zijn, en de resultaten kunnen worden ingevoegd in de doeltabel.

Bijvoorbeeld, om rijen van de myLogins2-tabel naar de myLogins-tabel te kopiëren, kunt u een query zoals degene hieronder gebruiken:

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

Deze voorbeeld maakt gebruik van de resultaten van de subquery van de myLogins2-tabel om rijen in te voegen in de myLogins-tabel. De INSERT-instructie voegt gegevens toe aan de drie kolommen in de tabel. De subquery gebruikt een SELECT-instructie om dezelfde drie kolommen te selecteren uit een tweede tabel met de naam myLogins2.

Hier worden echter alleen die rijen teruggegeven met een id-waarde groter dan 50, die worden toegevoegd aan de tabel myLogins. In dit eenvoudige voorbeeld hebben de kolomnamen dezelfde naam, maar dat is niet verplicht. Om dit te laten werken, moet er in de tabel myLogins2 minstens één of meer rijen zijn met een id-waarde groter dan 50 die niet in de tabel myLogins voorkomen.

Wijzigen van rijen met T-SQL UPDATE

Net zoals het toevoegen van rijen aan een tabel, zijn er verschillende manieren om rijen in een tabel te wijzigen. SSMS’s Query Designer maakt het mogelijk om interactief rijen te wijzigen, maar u kunt ook PowerShell of Integration Services gebruiken.

Hoewel de meest algemene manier om bestaande rijen in een database-tabel te wijzigen het gebruik van de SQL UPDATE-instructie is, de T-SQL UPDATE-instructie wijzigt de waarden in één of meer rijen in een SQL Server-tabel.

Gewoonlijk zou je de `UPDATE`-instructie gebruiken samen met een `WHERE`-clausule om te specificeren welke rijen moeten worden bijgewerkt. Als je de `WHERE`-clausule niet gebruikt, zullen alle rijen in de tabel worden bijgewerkt. Het volgende overzicht toont een eenvoudig voorbeeld van het gebruik van de T-SQL `UPDATE`-instructie om de waarden in één rij van de tabel `myLogins` te wijzigen.

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

Zoals ik eerder gezegd heb, zou het resultaat zijn dat de `name`-kolom van elke rij de nieuwe waarde zou krijgen. Ook als de `WHERE`-clausule meerdere rijen bevat, bijvoorbeeld als je de `<` of `>`-operatorn gebruikt, zullen dan ook meerdere matching rijen worden bijgewerkt.

Bijwerken van tabelrijen voor de resultaten van een query

Net zoals met de `INSERT`-instructie, kun je ook rijen in één tabel bijwerken met waarden uit een andere tabel. In het volgende overzicht zie je hoe je een SQL-update uit een andere tabel kunt gebruiken.

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

Hier zie je dat de `UPDATE`-instructie zal werken op de tabel `myLogins` en dat de `name`-kolom zal worden bijgewerkt met behulp van de waarden uit de tabel `myLogins2` waar de waarden in de `id`-kolommen van beide tabellen overeenkomen.

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

Zeker, er zijn veel meer mogelijkheden voor het gebruik van de UPDATE-instructie. Uw query kan meerdere rijen bijwerken, het kan complexer zijn met joins, en u kunt de TOP-clausule, de ORDER BY-clausule, Common Table Expressions (CTEs) en nog veel meer gebruiken om uw update-query’s te bouwen.

Verwijderen van rijen met T-SQL DELETE en TRUNCATE

U kunt rijen uit een tabel verwijderen met behulp van de interactieve SSMS Query Designer, PowerShell of Integration Services. De meest gebruikte methode is echter de SQL DELETE-instructie.

De T-SQL DELETE-verklaring verwijdert één of meer rijen uit een SQL Server-tabel. Het spreekt voor zich, maar u moet de SQL DELETE-verklaring voorzichtig gebruiken, aangezien deze gegevens permanent uit uw tabellen verwijdert. Als u een fout maakt, moet u mogelijk de gegevens herstellen vanuit een momentopname, het transactielogboek of een back-up.

Het volgende voorbeeld toont hoe u één rij uit de myLogins-tabel verwijdert:

DELETE FROM myLogins WHERE id = 1

Hier kunt u zien dat één rij in de myLogins-tabel zal worden verwijderd waar de waarde van de id-kolom gelijk is aan 1. U kunt ook meerdere rijen verwijderen door de WHERE-clausule te wijzigen, zoals in de volgende verklaring, die alle rijen verwijdert waar de id-waarde groter is dan 50.

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

Net als bij de UPDATE-verklaring, als u de WHERE-clausule weglaat, worden alle rijen in de tabel verwijderd. Bijvoorbeeld, het volgende voorbeeld verwijdert alle rijen in de myLogins-tabel:

DELETE FROM myLogins

Het verwijderen van rijen uit de resultaten van een query

Net als de INSERT- en UPDATE-verklaringen is de DELETE-verklaring ook in staat om te handelen vanuit de resultaten van een query. Het volgende voorbeeld toont hoe u rijen kunt verwijderen op basis van een query:

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

Hier worden alle rijen in de myLogins-tabel verwijderd die een datum hebben die kleiner is dan 31-12-22 in de login_date-kolom.

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

De T-SQL DELETE-opdracht is in staat om één of meer rijen uit een tabel te verwijderen. Het is echter niet de enige manier om rijen uit een tabel te verwijderen. U kunt alle rijen in een SQL Server-tabel verwijderen door de T-SQL TRUNCATE TABLE-instructie te gebruiken.

De DELETE-instructie is een volledig geregistreerde handeling. Aan de andere kant is de TRUNCATE TABLE-instructie een minimaal geregistreerde handeling. Dit betekent dat de TRUNCATE-opdracht iets beter zal presteren en minder entries aan het transactiegegevensbestand toegevoegd zullen worden. U kunt een voorbeeld zien van het gebruik van TRUNCATE in het volgende overzicht.

TRUNCATE TABLE myLogins

Dit zal alle gegevens in de myLogins-tabel verwijderen.

Samenvatting

In deze handleiding zag u hoe u rijen in een SQL Server-tabel kunt toevoegen, wijzigen en verwijderen met behulp van T-SQL INSERT, UPDATE en DELETE-instructies. In elk geval heb ik uitgelegd hoe u werkt met single-row waarden en hoe u werkt met meerdere rijen als een resultaat van een subquery. Bovendien heeft u gezien hoe de DELETE- en TRUNCATE-instructies verschillen, hoewel ze beide in essentie rijen uit een tabel kunnen verwijderen.

Gerelateerde artikel:

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