Problem:
Du vill ta bort en rad/rader från en tabell.
Exempel 1:
I exam
tabell, det finns namn på eleverna och resultatet av tentamen.
namn | resultat |
---|---|
Janet Morgen | 9 |
Taya Bain | 11 |
Anne Johnson | 11 |
Josh Kaur | 10 |
Ellen Thornton | 8 |
Du vill ta bort raden för Ellen Thornton.
Lösning 1:
DELETE FROM exam WHERE name = 'Ellen Thornton';
Tabellen exam
ser nu ut så här:
namn | resultat |
---|---|
Janet Morgen | 9 |
Taya Bain | 11 |
Anne Johnson | 11 |
Josh Kaur | 10 |
Diskussion:
Använd DELETE FROM
med namnet på tabellen som du vill ta bort en rad från. I WHERE
, skriv villkoret som anger raden. Om du har en specifik rad i åtanke är det bäst att skriva villkoret med hjälp av kolumnen som innehåller unika värden. Här är den unika kolumnen name
.
Om det finns många rader vars namn är lika med 'Ellen Thornton
', kommer alla att tas bort. Om det inte finns något sådant namn tas inga rader bort.
Exempel 2:
I exam
tabell, det finns namn på eleverna och resultatet av tentamen, precis som i föregående exempel.
namn | resultat |
---|---|
Janet Morgen | 9 |
Taya Bain | 11 |
Anne Johnson | 11 |
Josh Kaur | 10 |
Ellen Thornton | 8 |
Du vill ta bort alla rader som result
för är större än 10
.
Lösning 2:
DELETE FROM exam WHERE result > 10;
exam
Tabellen ser nu ut så här:
namn | resultat |
---|---|
Janet Morgen | 9 |
Josh Kaur | 10 |
Ellen Thornton | 8 |
Diskussion:
Ibland vet du inte exakt vilka rader du behöver ta bort eller ens hur många rader du behöver ta bort. Du kan skriva villkoret för vilket raderna ska tas bort. Det kan finnas många rader som uppfyller villkoret, det kan bara vara en rad eller inga rader alls.
Naturligtvis kan du skriva flera villkor i WHERE
, förenar dem med AND
eller OR
, till exempel:
DELETE FROM exam WHERE result > 10 AND name LIKE 'J%';