logo

MySQL USUŃ DOŁĄCZ

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

MySQL USUŃ DOŁĄCZ

Tabela: kontakty

MySQL USUŃ DOŁĄCZ

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:

MySQL USUŃ DOŁĄCZ

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.

MySQL USUŃ DOŁĄCZ MySQL USUŃ DOŁĄCZ

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
MySQL USUŃ DOŁĄCZ

Tabela: klienci

MySQL USUŃ DOŁĄCZ

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:

MySQL USUŃ DOŁĄCZ

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.

MySQL USUŃ DOŁĄCZ