Disse er DML (Data Manipulation Language) kommandoer, der ændrer data: INSERT tilføjer rækker, ændrer eksisterende rækker, fjerner rækker. I modsætning til (som kun læser), ændrer disse databasen — så de kræver omhu, især -sætningen.
Disse er DML (Data Manipulation Language) kommandoer, der ændrer data: INSERT tilføjer rækker, ændrer eksisterende rækker, fjerner rækker. I modsætning til (som kun læser), ændrer disse databasen — så de kræver omhu, især -sætningen.
UPDATEDELETESELECTWHERE-- insert one row
INSERT INTO users (name, email, age)
VALUES ('Ann', '[email protected]', 30);
-- insert multiple rows at once (efficient)
INSERT INTO users (name, email)
VALUES ('Bob', '[email protected]'), ('Carol', '[email protected]');
-- insert from a query
INSERT INTO archived_users SELECT * FROM users WHERE inactive = true;
Du angiver kolonnerne og værdierne. Indsættelse af flere rækker i én sætning er mere effektivt end mange separate indsættelser.
UPDATE users
SET age = 31, updated_at = NOW() -- set one or more columns
WHERE id = 5; -- ❗ WHICH rows to update
-- ❌ DANGER — no WHERE clause updates EVERY row in the table!
UPDATE users SET active = false; -- sets ALL users inactive 😱
Afgørende: en UPDATE (eller DELETE) uden en WHERE-sætning påvirker hver eneste række i tabellen. At glemme WHERE er en katastrofal, almindelig fejl — kontroller den altid dobbelt.
DELETE FROM users WHERE id = 5; -- delete a specific row
DELETE FROM users WHERE inactive = true; -- delete matching rows
-- ❌ DANGER — no WHERE deletes the ENTIRE table's contents!
DELETE FROM users;
✓ ALWAYS include a WHERE clause (unless you truly mean to affect all rows)
✓ Test the WHERE first with SELECT (SELECT * WHERE ... → see what you'd affect)
✓ Use TRANSACTIONS (BEGIN ... COMMIT/ROLLBACK) so you can undo mistakes
✓ DELETE vs TRUNCATE: TRUNCATE quickly empties a whole table (faster, but not row-by-row,
can't be rolled back in some DBs, resets auto-increment)
INSERT, UPDATE og DELETE er, hvordan programmer ændrer data — fundamental for enhver applikation, der gemmer og ændrer information (oprettelse af poster, redigering, fjernelse), så forståelse af dem er væsentlig daglig viden sammen med SELECT.
At vide, hvordan man indsætter (enkelt, flere eller fra en forespørgsel), opdaterer (indstiller kolonner) og sletter rækker er nødvendigt for alle dataændrede operationer.
Det vigtigste punkt er faren ved en manglende WHERE-sætning: en UPDATE eller DELETE uden WHERE påvirker hver eneste række i tabellen — en katastrofal, overraskende almindelig fejl, der kan slette eller ødelægge alle data.
Forståelse af denne fare og sikkerhedspraksis (inkludér altid WHERE, test betingelsen med en SELECT først, brug transaktioner, så fejl kan rulles tilbage) er vital viden, der forhindrer alvorlige datatab-ulykker.
Viden om relaterede detaljer (effektiv indsættelse af flere rækker, DELETE vs TRUNCATE til tømning af tabeller) udfylder den praktiske viden.
Da ændring af data er fundamental for applikationer, og da fejlen med manglende WHERE er både katastrofal og almindelig (en hyppig årsag til virkelige produktionsdatatab), beherskelse af disse DML-kommandoer — og især den kritiske disciplin omkring WHERE-sætningen og transaktionel sikkerhed — er kernekendskab, som alle, der skriver dataændrede SQL, må kende, hvor indsatsen (uigenkaldeligt datatab) gør sikkerhedspraksis lige så vigtig som syntaksen.