SQL - Delete
Szintaxis:
DELETE * FROM tábla
WHERE feltétel
Ha elhagyjuk a WHERE záradékot minden rekord törlésre kerül.
A DELETE utasítás két részből áll:
Tábla - A tábla neve, amelyből a rekordokat törölni kell
Feltétel - A törlendő rekordokat kijelölő kifejezés
Megjegyzés:
A DELETE különösen hasznos, ha sok rekordot szeretnénk törölni
Egész táblát a DROP TABLE utasítással töröljünk. Ha az egész táblát töröljük, akkor annak szerkezete is elvész. Ezzel szemben a DELETE használatakor csak az adatok törlődnek, a tábla szerkezete és minden jellemzője (például a mezőnevek, az indexek) érintetlen marad.
A DELETE segítségével olyan táblákból is törölhetünk rekordokat, amelyek más táblákkal egy-a-többhöz kapcsolatban állnak. Kaszkádolt törlésnél a kapcsolat "több" oldalán levő rekordok is törlődnek, ha a kapcsolat "egy" oldalán levő rekordot törli a lekérdezés. Például a Vevők és a Rendelések tábla esetében a Vevők vannak az "egy" oldalon, a Rendelések a "több" oldalon. Kaszkádolt törlés használatakor a Vevők táblából törölt rekordokkal együtt a hozzájuk tartozó Rendelések rekordok is törlődnek.
A törlő lekérdezés nem egyes mezők adatait törli, hanem a teljes rekordokat. Ha egyes mezők adatait szeretnénk törölni, használjunk frissítő lekérdezést, ami a mezők értékét Null értékre változtatja.
A törlő lekérdezés nem vonható vissza, a törölt rekordok elvesznek. Ha látni szeretnénk a törlendő rekordokat, akkor a törlés előtt először vizsgáljuk meg egy ugyanolyan feltételt használó választó lekérdezés eredményét.
Mindig legyen biztonsági mentés az adatokról. Így ha rossz rekordokat töröltünk, ezek visszanyerhetők.
|
Kód |
Vezetéknév |
Keresztnév |
Cím |
Város |
|
1 |
Szabó |
Péter |
Fő út 10. |
Budapest |
|
2 |
Kovács |
Áron |
Dózsa Gy. út 2. |
Debrecen |
|
3 |
Szalay |
Tünde |
Széchényi út 69. |
Budapest |
|
4 |
Orosz |
Gábor |
Virág út 38. |
Debrecen |
|
5 |
Zsólyomi |
László |
Nagykör út 44. |
Békéscsaba |
Most szeretnénk törölni a Zsólyomi László adatait a 'Személyek' táblából.
DELETE FROM Személyek
WHERE Vezetéknév='Zsólyomi' AND Keresztnév='László';
|
Kód |
Vezetéknév |
Keresztnév |
Cím |
Város |
|
1 |
Szabó |
Péter |
Fő út 10. |
Budapest |
|
2 |
Kovács |
Áron |
Dózsa Gy. út 2. |
Debrecen |
|
3 |
Szalay |
Tünde |
Széchényi út 69. |
Budapest |
|
4 |
Orosz |
Gábor |
Virág út 38. |
Debrecen |
Összes sor törlése
Lehetőség van törölni a sorokat a tábla törlése nélkül a táblázatban. Ez azt jelenti, hogy a táblázat szerkezete, tulajdonságai, és az indexek is éppek maradnak:
DELETE FROM táblanév
or
DELETE * FROM táblanév
Nagyon óvatosnak kell lenni ezzel az utasítással, ugyanis ezt nem lehet visszavonni!