Co to jest zapytanie DELETE?
Polecenie MySQL DELETE służy do usuwania niepotrzebnych już wierszy z tabel bazy danych. Usuwa cały wiersz z tabeli i zwraca liczbę usuniętych wierszy. Polecenie Usuń jest przydatne do usuwania tymczasowych lub nieaktualnych danych z bazy danych.
Zapytanie usuwające w MySQL może usunąć więcej niż jeden wiersz z tabeli w jednym zapytaniu. Okazuje się to zaletą podczas usuwania dużej liczby wierszy z tabeli bazy danych.
Po usunięciu wiersza Usuń w wierszu MySQL nie można go odzyskać. Dlatego zdecydowanie zaleca się wykonanie kopii zapasowych bazy danych przed usunięciem jakichkolwiek danych z bazy danych. Może to umożliwić przywrócenie bazy danych i późniejsze przeglądanie danych, jeśli będzie to wymagane.
Jak usunąć wiersz w MySQL
Do usunięcia wiersza w MySQL służy instrukcja DELETE FROM:
DELETE FROM `table_name` [WHERE condition];
TUTAJ
- DELETE FROM `nazwa_tabeli` mówi serwerowi MySQL, aby usunąć wiersze z tabeli…
- [WHERE warunek] jest opcjonalny i służy do umieszczania filtru ograniczającego liczbę wierszy, na które ma wpływ zapytanie dotyczące wiersza MySQL DELETE.
Jeśli klauzula WHERE nie zostanie użyta w zapytaniu MySQL DELETE, to wszystkie wiersze w danej tabeli zostaną usunięte.
Przykład zapytania o usunięcie MySQL
Zanim przejdziemy do bardziej szczegółowego omówienia polecenia DELETE, wstawmy kilka przykładowych danych do tabeli filmów, z którymi będziemy pracować.
INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('The Great Dictator', 'Chalie Chaplie', 1920, 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 filmów. Zanim przejdziemy dalej do naszej lekcji, zbierzmy wszystkie filmy w naszej tabeli. Robi to pokazany poniżej skrypt.
SELECT * FROM `movies`;
Wykonanie powyższego skryptu daje nam następujące wyniki.
movie_id | itle | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
3 | X-Men | NULL | 2008 | NULL |
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
5 | Daddy's Little Girls | NULL | 2007 | 8 |
6 | Angels and Demons | NULL | 2007 | 6 |
7 | Davinci Code | NULL | 2007 | 6 |
9 | Honey mooners | John Schultz | 2005 | 8 |
16 | 67% Guilty | NULL | 2012 | NULL |
18 | The Great Dictator | Chalie Chaplie | 1920 | 7 |
19 | sample movie | Anonymous | NULL | 8 |
20 | movie 3 | John Brown | 1920 | 8 |
Załóżmy, że biblioteka wideo Myflix nie chce już wypożyczać „Wielkiego Dyktatora” swoim członkom i chce, aby została usunięta z bazy danych. Jego identyfikator filmu to 18, możemy użyć poniższego skryptu, aby usunąć jego wiersz z tabeli filmów.
DELETE FROM `movies` WHERE `movie_id` = 18;
Wykonanie powyższego skryptu w MySQL WorkBench na Myflix usuwa film o identyfikatorze 18 z tabeli bazy danych.
Zobaczmy aktualny stan tabeli filmów.
SELECT * FROM `movies`;
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
3 | X-Men | NULL | 2008 | NULL |
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
5 | Daddy's Little Girls | NULL | 2007 | 8 |
6 | Angels and Demons | NULL | 2007 | 6 |
7 | Davinci Code | NULL | 2007 | 6 |
9 | Honey mooners | John Schultz | 2005 | 8 |
16 | 67% Guilty | NULL | 2012 | NULL |
19 | sample movie | Anonymous | NULL | 8 |
20 | movie 3 | John Brown | 1920 | 8 |
UWAGA:
- film o identyfikatorze 18 nie został zwrócony w zestawie wyników zapytania.
- nie możesz usunąć pojedynczej kolumny z tabeli. Możesz usunąć cały wiersz.
Powiedzmy, że mamy listę filmów, które chcemy usunąć. Możemy użyć klauzuli WHERE razem z IN.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
Wykonanie powyższego skryptu usuwa filmy o identyfikatorach 20 i 21 z naszej tabeli filmów.
Podsumowanie
- Polecenie delete służy do usuwania danych, które nie są już potrzebne z tabeli.
- Klauzula „WHERE” służy do ograniczania liczby wierszy, na które ma wpływ zapytanie DELETE.
- Po usunięciu danych nie można ich odzyskać, dlatego zdecydowanie zaleca się wykonanie kopii zapasowych przed usunięciem danych.