MS Access - Příkaz DELETE

26. 12. 2012, Vladimír Klaus, přečteno 3503x

MS Access
SQL

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

SQL obrázek

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

SQL obrázek

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.

SQL obrázek