Przejdź do treści

Centrum Kształcenia Zawodowego i Ustawicznego w Mrągowie

SQL: Usuwanie rekordów

wtorek,

SQL: Usuwanie rekordów

W języku SQL usuwanie rekordów z tabeli realizowane jest przy użyciu polecenia DELETE. W dalszej części materiału znajdziesz zgodne z dialektem SQL stosowanym w MySQL przykłady zapytań z wykorzystaniem tej instrukcji. Pamiętaj, że DELETE usuwa dane bezpowrotnie, więc należy używać tego polecenia z ostrożnością. Warto również zauważyć, że niektóre systemy zarządzania bazami danych wymagają użycia DELETE z klauzulą WHERE, w przeciwnym wypadku operacja może nie zostać wykonana. Polecenie DELETE w MySQL może być używane w połączeniu z opcjami LOW_PRIORITY, QUICK, i IGNORE w celu modyfikacji zachowania operacji usuwania.

Przykłady zapytań

Usuwanie wszystkich danych z tabeli

DELETE FROM pracownicy;

To zapytanie usunie wszystkie wiersze z tabeli pracownicy.

Usuwanie wierszy spełniających określone kryterium

DELETE FROM pracownicy WHERE dzial = 'Księgowość';

Tutaj usunięte zostaną wszystkie wiersze, w których kolumna dzial ma wartość 'Księgowość'.

Usuwanie wierszy z określonym zakresem dat

DELETE FROM zamowienia WHERE data_zamowienia < '2021-01-01';

To zapytanie usunie wszystkie zamówienia złożone przed 1 stycznia 2021.

Kilka warunków

DELETE FROM produkty WHERE cena < 100 AND ilosc_na_stanie < 50;

Usunięte zostaną produkty, których cena jest niższa niż 100 oraz mają mniej niż 50 sztuk na stanie.

Usuwanie wierszy na podstawie innej tabeli

DELETE FROM pracownicy WHERE id IN (SELECT id_pracownika 
FROM umowy WHERE data_zakonczenia < '2022-12-31');

Usunięci zostaną pracownicy, których umowy zakończyły się przed końcem 2022 roku.

Opcje LOW_PRIORITY, QUICK, i IGNORE

LOW_PRIORITY

DELETE LOW_PRIORITY FROM tabela WHERE warunek;

Zapytanie LOW_PRIORITY opóźni usuwanie do czasu, aż nie będzie żadnych oczekujących odczytów z tabeli. Pozwala to uniknąć zakłócania zapytań odczytujących dane z tej samej tabeli.

QUICK

DELETE QUICK FROM tabela WHERE warunek;

Opcja QUICK powoduje, że MySQL nie będzie łączył indeksów w trakcie usuwania, co może przyspieszyć operację usuwania w niektórych przypadkach, zwłaszcza w tabelach z dużą ilością wierszy. Warto jednak pamiętać, że może to spowodować fragmentację indeksów.

IGNORE

DELETE IGNORE FROM tabela WHERE warunek;

Użycie IGNORE sprawi, że MySQL zignoruje błędy podczas operacji usuwania, takie jak próby usunięcia wierszy, które nie istnieją, lub naruszenia ograniczeń klucza obcego. Zamiast zatrzymać operację, MySQL kontynuuje i usuwa wszystkie wiersze spełniające warunek.

Artykuł: Marc Andreessen

Marc Andreessen

Artykuł: Zakończenie staży

Zakończenie staży

Artykuł: Brendan Eich

Brendan Eich

Artykuł: Nvidia GeForce 200

Nvidia GeForce 200

Artykuł: Pierwszy dzień w Splicie

Pierwszy dzień w Splicie

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły