Odstranění dat
Stejně jako příkaz INSERT vždy přidává do tabulky celé řádky, příkaz DELETE vždy odebere celé řádky.
Použití delete k odebrání konkrétních řádků
DELETE pracuje se sadou řádků definovaných podmínkou v klauzuli WHERE nebo definovanou ve spojení. Klauzule WHERE v příkazu DELETE má stejnou strukturu jako klauzule WHERE v příkazu SELECT.
Poznámka:
Je důležité mít na paměti, že delete bez odpovídající klauzule WHERE odebere všechny řádky z tabulky. Příkaz DELETE používejte opatrně.
Následující kód ukazuje základní syntaxi příkazu DELETE:
DELETE [FROM] <TableName>
WHERE <search_conditions>;
Následující příklad používá příkaz DELETE k odebrání všech produktů ze zadané tabulky, které byly ukončeny. V tabulce je sloupec označovaný jako ukončený a pro produkty, které už nejsou k dispozici, má sloupec hodnotu 1.
DELETE FROM Production.Product
WHERE discontinued = 1;
Použití funkce TRUNCATE TABLE k odebrání všech řádků
DELETE bez klauzule WHERE odebere všechny řádky z tabulky. Z tohoto důvodu se funkce DELETE obvykle používá podmíněně s filtrem v klauzuli WHERE. Pokud opravdu chcete odebrat všechny řádky a nechat prázdnou tabulku, můžete použít příkaz TRUNCATE TABLE. Tento příkaz nepovoluje klauzuli WHERE a vždy odebere všechny řádky v jedné operaci. Tady je příklad:
TRUNCATE TABLE Sales.Sample;
Funkce TRUNCATE TABLE je efektivnější než DELETE, pokud chcete odebrat všechny řádky.