26.12.2012, Vladimír Klaus, navštíveno 6580x
Tímto příkazem můžeme z tabulky odstranit jeden nebo více záznamů.
DELETE FROM Zakaznici WHERE Prijmeni = "Kolbaba"
Tento příklad odstraní všechny zákazníky s příjmením Kolbaba, pokud chceme odstranit jen nějakého konkrétního, musíme uvést podmínku přesněji, třeba do ní přidat ID. V takovém případě je ale už zase zbytečné uvádět podmínku na příjmení.
DELETE FROM Zakaznici WHERE ID = 23
Pokud žádnou podmínku neuvedeme, budou odstraněny všechny záznamy ze zadané tabulky. Takto tedy kompletně vyčistíme tabulku objednávek.
DELETE FROM Objednavky
Posledním příkladem bude pročištění tabulky objednávek, ze které odstraníme všechny objednávky, které byly učiněny již neexistujícími zákazníky nebo takové objednávky, které z nějakého důvodu nemají vyplněné ID zákazníka.
Protože příkaz maže záznamy, není možné ho opakovat vícekrát, proto si nejprve sestavíme obyčejný výběrový dotaz. A když bude vybírat opravdu to, co potřebujeme, upravíme ho do podoby pro odstraňování.
Nejprve spojíme tabulky pomocí LEFT JOIN, aby se do výsledku dostaly všechny objednávky, bez ohledu na to, zda mají vyplněného zákazníka.
SELECT * FROM Objednavky
LEFT JOIN Zakaznici ON Objednavky.IdZakaznika = Zakaznici.ID
Nyní už jen doplníme podmínku, ve které uvedeme, že Id zákazníka není vyplněno.
SELECT * FROM Objednavky
LEFT JOIN Zakaznici ON Objednavky.IdZakaznika = Zakaznici.ID
WHERE Zakaznici.ID IS NULL
Zdá se, že máme opravdu to, co jsme hledali. První záznam nemá v části objednávek vůbec uvedeno ID zákazníka a druhý ho sice má, ovšem zákazník s ID = 23 neexistuje.
Nyní už jen změníme výběrový dotaz na odstraňovací. A protože máme tabulky spojené, musíme lépe specifikovat, co a kde (z jaké tabulky) vlastně chceme odstraňovat, tedy všechny odpovídající objednávky.
DELETE Objednavky.* FROM Objednavky
LEFT JOIN Zakaznici ON Objednavky.IdZakaznika = Zakaznici.ID
WHERE Zakaznici.ID IS NULL
Pokud používáte MS Access, budete ještě upozorněni tímto dialogem.