Disse øvelser dækker oprettelse, ændring og test af Constraints i MariaDB/MySQL
Opgave:
Opret tabel Kunde med kolonner:
Test:
INSERT INTO Kunde (KundeID, Navn, Email) VALUES (1, 'Anna Hansen', 'anna@mail.dk'); INSERT INTO Kunde (KundeID, Navn, Email) VALUES (2, 'Peter Jensen', 'peter@mail.dk'); -- Forsøg på duplikat PK (skal fejle) INSERT INTO Kunde (KundeID, Navn, Email) VALUES (1, 'Ole Olsen', 'ole@mail.dk'); -- Fejl: Duplicate entry '1' for key 'PRIMARY'
Opgave:
Sørg for, at Email er unik, så ingen to kunder kan have samme email.
Løsning 1 (ved oprettelse af ny)
Løsning 2 (til eksisterende tabel):
Test:
INSERT INTO Kunde (KundeID, Navn, Email) VALUES (3, 'Lise Hansen', 'anna@mail.dk'); -- Fejl: Duplicate entry 'anna@mail.dk' for key 'unik_email'
Opgave:
Opret tabel Produkt med:
Test:
INSERT INTO Produkt (Navn, Pris) VALUES ('Mus', 199.95);
INSERT INTO Produkt (Navn, Pris) VALUES ('Tastatur', 349.50);
SELECT * FROM Produkt;
-- ProduktID | Navn | Pris
-- 1 | Mus | 199.95
-- 2 | Tastatur | 349.50
Opgave:
Opret tabel Ordre med:
Test:
-- Korrekt indsættelse INSERT INTO Ordre (KundeID, Dato) VALUES (1, '2026-01-25'); -- Forkert indsættelse (ikke eksisterende KundeID) INSERT INTO Ordre (KundeID, Dato) VALUES (99, '2026-01-25'); -- Fejl: Cannot add or update a child row: a foreign key constraint fails
Opgave:
Opret tabel OrdreLinje med:
Test:
-- Indsæt en ordrelinje (skal lykkes) INSERT INTO OrdreLinje (OrdreID, ProduktID, Antal) VALUES (101, 1, 2); -- Forsøg at indsætte samme kombination igen (skal fejle) INSERT INTO OrdreLinje (OrdreID, ProduktID, Antal) VALUES (101, 1, 5); -- Indsæt samme ProduktID med en anden OrdreID (skal lykkes) INSERT INTO OrdreLinje (OrdreID, ProduktID, Antal) VALUES (102, 1, 3);
Opgave:
I tabellen Kunde skal du ændre primærnøgle fra KundeID til Email (for eksperiment).
Test:
-- Indsæt kunde med unik Email (skal lykkes) INSERT INTO Kunde (KundeID, Navn, Email) VALUES (10, 'Mette Larsen', 'mette@mail.dk'); -- Indsæt kunde med eksisterende Email (skal fejle) INSERT INTO Kunde (KundeID, Navn, Email) VALUES (11, 'Ole Hansen', 'mette@mail.dk'); -- Kontroller primærnøglen DESCRIBE Kunde;
Opgave:
Antag at OrdreLinje allerede eksisterer uden FK.
Test
-- Indsæt gyldig ordrelinje (skal lykkes) INSERT INTO OrdreLinje (OrdreID, ProduktID, Antal) VALUES (101, 1, 2); -- Forsøg med ikke-eksisterende OrdreID (skal fejle) INSERT INTO OrdreLinje (OrdreID, ProduktID, Antal) VALUES (999, 1, 1); -- Forsøg med ikke-eksisterende ProduktID (skal fejle) INSERT INTO OrdreLinje (OrdreID, ProduktID, Antal) VALUES (101, 999, 1); -- Tjek strukturen SHOW CREATE TABLE OrdreLinje;