MySQL DELETE Query: Jak usunąć wiersz z tabeli

⚡ Inteligentne podsumowanie

MySQL Zapytanie DELETE usuwa z tabeli wiersze, które nie są już potrzebne, i zwraca liczbę wierszy, których to dotyczy. Ten materiał wyjaśnia składnię polecenia DELETE, filtrowanie WHERE, usuwanie wielu wierszy za pomocą polecenia IN oraz bezpieczniejsze alternatywy: TRUNCATE i DROP.

  • 🗑️ Oświadczenie główne: DELETE FROM `table_name` [WHERE warunek] usuwa całe wiersze i zwraca liczbę usuniętych wierszy.
  • ⚠️ Pominięto GDZIE: Opuszczenie klauzuli WHERE powoduje usunięcie każdego wiersza w tabeli, dlatego zawsze należy przeprowadzić filtrowanie przed wykonaniem.
  • 🎯 TargetUsuwanie ed: WHERE `movie_id` = 18 usuwa jeden rekord, natomiast WHERE `movie_id` IN (20,21) usuwa kilka w jednym poleceniu.
  • 🔁 Działanie nieodwracalne: Usuniętych danych nie można odzyskać bez kopii zapasowej, dlatego przed uruchomieniem polecenia DELETE należy wykonać kopię zapasową bazy danych.
  • 📊 Zakres na poziomie wiersza: DELETE usuwa tylko całe wiersze; wyczyszczenie wartości pojedynczej kolumny wymaga UPDATE z wartością NULL.
  • ⚖️. USUŃ vs OBCNIJ vs USUŃ: DELETE filtruje wiersze, TRUNCATE natychmiast opróżnia tabelę, a DROP usuwa samą strukturę tabeli.

Co to jest zapytanie DELETE?

MySQL DELETE Instrukcja DELETE służy do usuwania wierszy, które nie są już potrzebne w tabeli bazy danych. Usuwa ona cały wiersz z tabeli i zwraca liczbę usuniętych wierszy. Instrukcja DELETE przydaje się, gdy trzeba usunąć tymczasowe lub nieaktualne dane z bazy danych.

Zapytanie DELETE w MySQL Można usunąć więcej niż jeden wiersz z tabeli za jednym razem. Jest to przydatne podczas usuwania dużej liczby wierszy z tabeli bazy danych.

Po usunięciu wiersza nie można go odzyskać. Zawsze przed usunięciem danych należy wykonać kopię zapasową bazy danych, aby w razie potrzeby móc ją później przywrócić i przejrzeć.

Jak usunąć wiersz w MySQL

Mając jasny cel polecenia, następnym krokiem jest składnia. Aby usunąć wiersz w MySQL, używana jest instrukcja DELETE FROM:

DELETE FROM `table_name` [WHERE condition];

TUTAJ:

  • USUŃ Z `table_name` mówi MySQL serwer usuwa wiersze z podanej tabeli.
  • [warunek GDZIE] jest opcjonalny i służy do zastosowania filtra ograniczającego liczbę wierszy objętych zapytaniem DELETE.

Jeśli klauzula GDZIE nie jest używany w MySQL Następnie zapytanie DELETE cała kolekcja wiersze w danej tabeli zostaną usunięte.

⚠️ Ostrzeżenie: Najpierw uruchom filtr jako SELECT. Jeśli zwróci on dokładnie te wiersze, które chcesz usunąć, pasujące polecenie DELETE jest bezpieczne. Pełna składnia jest udokumentowana w MySQL Instrukcja obsługi polecenia DELETE.

Przykład MySQL Usuń zapytanie

Następna sekcja tworzy mały zestaw danych, a następnie usuwa z niego dane.

Krok 1: Wprowadź przykładowe dane

Zanim przejdziemy do bardziej szczegółowego omówienia polecenia SQL DELETE, wstawmy do tabeli movies kilka przykładowych danych, z którymi będziemy mogli popracować.

INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('The Great Dictator', 'Charlie Chaplin', 1940, 7);
INSERT INTO `movies` (`title`, `director`, `category_id`) VALUES ('sample movie', 'Anonymous', 8);
INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('movie 3', 'John Brown', 1920, 8);

Wykonanie powyższego skryptu dodaje trzy (3) filmy do tabeli „Filmy”. Zanim przejdziemy dalej, wypiszmy wszystkie filmy w naszej tabeli.

SELECT * FROM `movies`;

Wykonanie powyższego skryptu daje nam następujące rezultaty. Trzy nowo wstawione wiersze są podświetlone.

identyfikator_filmu tytuł dyrektor rok_wydania identyfikator_kategorii
1 Piraci z Karaibów 4 Rob Marshall 2011 1
2 Zapominając o Sarah Marshal Nicholas Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Imię Czarny Edgara Jimza 2010 NULL
5 Małe dziewczynki tatusia NULL 2007 8
6 Anioły i demony NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey mooners Jana Schultza 2005 8
16 67% winnych NULL 2012 NULL
18 Dyktator Charlie Chaplin 1940 7
19 przykładowy film Anonimowy NULL 8
20 film 3 John Brown 1920 8

Krok 2: Usuń pojedynczy wiersz

Załóżmy, że biblioteka filmów Myflix nie chce już wypożyczać filmu „Wielki Dyktator” i chce go usunąć z bazy danych. Identyfikator filmu to 18, więc poniższy skrypt usuwa ten wiersz.

DELETE FROM `movies` WHERE `movie_id` = 18;

Wykonanie powyższego skryptu w MySQL Stoł warsztatowy w bazie danych Myflix usuwa film o identyfikatorze 18 z tabeli.

Sprawdźmy teraz aktualny stan tabeli filmów.

SELECT * FROM `movies`;
identyfikator_filmu tytuł dyrektor rok_wydania identyfikator_kategorii
1 Piraci z Karaibów 4 Rob Marshall 2011 1
2 Zapominając o Sarah Marshal Nicholas Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Imię Czarny Edgara Jimza 2010 NULL
5 Małe dziewczynki tatusia NULL 2007 8
6 Anioły i demony NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey mooners Jana Schultza 2005 8
16 67% winnych NULL 2012 NULL
19 przykładowy film Anonimowy NULL 8
20 film 3 John Brown 1920 8

UWAGA:

  • Film o identyfikatorze 18 nie jest już zwracany w zestawie wyników zapytania.
  • Nie można usunąć pojedynczej kolumny z tabeli za pomocą polecenia DELETE. Polecenie usuwa cały wiersz. Aby wyczyścić jedno pole, użyj Zapytanie UPDATE która ustawia kolumnę na NULL.

Krok 3: Usuń wiele wierszy za pomocą IN

Załóżmy, że mamy listę filmów, które chcemy usunąć. Zamiast uruchamiać po jednym poleceniu dla każdego wiersza, możemy połączyć klauzulę WHERE z operatorem IN.

DELETE FROM `movies` WHERE `movie_id` IN (20,21);

Wykonanie powyższego skryptu spowoduje usunięcie filmów o identyfikatorach 20 i 21 z naszej tabeli filmów za jednym razem.

USUŃ vs OBCNIJ vs DROP w MySQL

DELETE nie jest jedynym sposobem usuwania danych z MySQLPoczątkujący często sięgają po nią, gdy lepsze byłoby szybsze polecenie, dlatego w poniższej tabeli porównano trzy polecenia usuwania.

Cecha DELETE ŚCIĘTY DROP
Typ polecenia DML DDL DDL
klauzula GDZIE Utrzymany Nie jest obsługiwany Nie jest obsługiwany
Co jest usuwane Wybrane wiersze Wszystkie rzędy Wiersze i struktura tabeli
Wycofywanie Możliwe w ramach transakcji Niemożliwe (zatwierdzenie niejawne) Niemożliwe (zatwierdzenie niejawne)
AUTO_INCREMENT Licznik jest zachowany Licznik resetuje się do wartości początkowej Licznik jest usuwany wraz ze stołem
Prędkość na dużych stołach Powoli (rząd po rzędzie) Bardzo szybka Bardzo szybka

Użyj DELETE, gdy potrzebujesz filtra lub możliwości wycofania zmian. OBCIĄĆ TABELĘ Gdy chcesz szybko opróżnić tabelę i zresetować jej licznik AUTO_INCREMENT. Użyj DROP tylko wtedy, gdy sama tabela nie jest już potrzebna, ponieważ usuwa ona definicję wraz z danymi.

FAQ

Tylko w obrębie otwartej transakcji. Uruchom START TRANSACTION, wykonaj DELETE, a następnie ROLLBACK, aby ją cofnąć. Po COMMIT lub z włączonym autozatwierdzaniem wiersze znikają i można je przywrócić tylko z kopii zapasowej.

Użyj wielotabelowego polecenia DELETE z DOŁĄCZ, nadając obu tabelom nazwy przed słowem kluczowym FROM. Alternatywnie, zdefiniuj klucz obcy za pomocą ON DELETE CASCADE, aby wiersze podrzędne były automatycznie usuwane po usunięciu wiersza nadrzędnego.

Tryb bezpiecznej aktualizacji jest domyślnie włączony w MySQL WorkbenchOdrzuca każde polecenie DELETE, którego klauzula WHERE nie używa kolumny klucza, zapobiegając przypadkowemu usunięciu całej tabeli. Można je wyłączyć w Edycja > Preferencje > Edytor SQL.

Tak. Asystenci AI tłumaczą żądanie w języku potocznym na składnię DELETE i potrafią wyjaśnić klauzulę WHERE. Zawsze najpierw sprawdź wygenerowany filtr pod kątem SELECT, ponieważ model AI nie widzi Twoich danych na żywo.

Nie. Pozwól sztucznej inteligencji stworzyć instrukcję, ale najpierw wykonaj ją samodzielnie na kopii zapasowej lub tymczasowej. Brak klauzuli WHERE usuwa każdy wiersz, a żadne narzędzie sztucznej inteligencji nie jest w stanie tego cofnąć po zatwierdzeniu transakcji.

Podsumuj ten post następująco: