Zapytanie DELETE jest podczęścią języka manipulacji danymi służącą do usuwania wierszy z tabel. Jak usunąć dołączenie MySQL-a to bardzo popularne pytanie podczas rozmów kwalifikacyjnych. Używanie instrukcji usuwania łączenia w MySQL nie jest łatwym procesem. W tej sekcji opiszemy, jak usunąć rekordy z wielu tabel za pomocą INNER JOIN lub LEFT JOIN w zapytaniu DELETE.
USUŃ POŁĄCZENIE Z DOŁĄCZENIEM WEWNĘTRZNYM
Zapytania Inner Join można używać z zapytaniem Delete w celu usunięcia wierszy z jednej tabeli i pasujących wierszy z drugiej tabeli, które spełniają określony warunek.
Składnia
Poniżej przedstawiono składnię, której można użyć do usuwania wierszy z więcej niż jednej tabeli za pomocą funkcji Inner Join.
DELETE target table FROM table1 INNER JOIN table2 ON table1.joining_column= table2.joining_column WHERE condition
Tutaj celem jest nazwa tabeli, z której chcemy usunąć wiersze, spełniając określony warunek. Załóżmy, że chcesz usunąć wiersze z tabeli T1 I T2 Gdzie id_ucznia = 2 , to można to zapisać jako następującą instrukcję:
wzór projektowy metody fabrycznej
DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.student_id=T2.student.id WHERE T1.student_id=2;
W powyższej składni tabela docelowa (T1 i T2) jest zapisywana pomiędzy słowami kluczowymi DELETE i FROM. Jeśli pominiemy w tym miejscu jakąkolwiek nazwę tabeli, wówczas plik usuń oświadczenie usuwa tylko wiersze z pojedynczej tabeli. Wyrażenie zapisane za pomocą NA słowo kluczowe to warunek pasujący do wierszy w tabelach, które chcesz usunąć.
Przykład
Załóżmy, że mamy dwie tabele studenci I Łączność który zawiera następujące dane:
Tabela: studenci
Tabela: kontakty
Wykonaj następujące zapytanie, aby zrozumieć Usuń Dołącz z połączeniem wewnętrznym. Ta instrukcja usuwa wiersz o tym samym identyfikatorze w obu tabelach.
DELETE students, contacts FROM students INNER JOIN contacts ON students.student_id=contacts.college_id WHERE students.student_id = 4;
Po pomyślnym wykonaniu wyświetli się następujący komunikat:
Teraz uruchom następujące zapytanie, aby sprawdzić, czy wiersze zostały pomyślnie usunięte.
lis kontra wilk
mysql> SELECT * FROM students; mysql> SELECT * FROM contacts;
Widać, że wiersze, w których znajduje się plik id_ucznia=4 jest usunięty.
USUŃ DOŁĄCZ za pomocą LEWEGO DOŁĄCZENIA
Nauczyliśmy się już klauzuli LEFT JOIN z instrukcją SELECT, która zwraca wszystkie wiersze z lewej (pierwszej) tabeli oraz pasujące lub niepasujące wiersze z innej tabeli. Podobnie możemy również użyć klauzuli LEFT JOIN ze słowem kluczowym DELETE, aby usunąć wiersze z lewej (pierwszej) tabeli, które nie mają pasujących wierszy z prawej (drugiej) tabeli.
Poniższe zapytanie wyjaśnia to jaśniej, gdzie instrukcja DELETE używa LEFT JOIN do usuwania wierszy Tabela 1 który nie ma pasujących wierszy w Tabela 2 :
DELETE Table1 FROM Table1 LEFT JOIN Table2 ON Table1.key = Table2.key WHERE Table2.key IS NULL;
Zwróć uwagę, że w powyższym zapytaniu użyjemy tylko tabeli Table1 ze słowem kluczowym DELETE, a nie obu, jak miało to miejsce w instrukcji INNER JOIN.
Przykład
Stwórzmy tabelę ' Łączność ' I ' klienci ' w bazie danych zawierającej następujące dane:
Tabela: kontakty
pełna forma pvr
Tabela: klienci
Wykonaj poniższą instrukcję, która usunie klienta, który nie ma komórka numer:
DELETE customers FROM customers LEFT JOIN contacts ON customers.customer_id = contacts.contact_id WHERE cellphone IS NULL;
Po pomyślnym wykonaniu wyświetli się następujący komunikat:
Teraz uruchom następujące zapytanie, aby sprawdzić, czy wiersze zostały pomyślnie usunięte.
mysql> SELECT * FROM customers;
Widać, że wiersze, w których klient nie posiada numeru telefonu komórkowego są usuwane.