Poizvedba DELETE je poddel jezika za obdelavo podatkov, ki se uporablja za odstranjevanje vrstic iz tabel. Kako izbrisati pridružitev MySQL je zelo priljubljeno vprašanje med intervjuji. Uporaba stavkov za združevanje brisanja v MySQL ni preprosta. V tem razdelku bomo opisali, kako lahko izbrišete zapise iz več tabel z uporabo INNER JOIN ali LEFT JOIN v poizvedbi DELETE.
DELETE JOIN z INNER JOIN
Poizvedbo Inner Join lahko uporabite s poizvedbo Delete za odstranjevanje vrstic iz ene tabele in ujemajočih se vrstic iz druge tabele, ki izpolnjujejo podani pogoj.
Sintaksa
Sledi sintaksa, ki jo lahko uporabite za brisanje vrstic iz več kot ene tabele z uporabo notranjega združevanja.
DELETE target table FROM table1 INNER JOIN table2 ON table1.joining_column= table2.joining_column WHERE condition
Tu je cilj ime tabele, iz katere želimo izbrisati vrstice, tako da ustreza podanemu pogoju. Recimo, da želite izbrisati vrstice iz tabele T1 in T2 kje študent_id = 2 , potem ga lahko zapišemo kot naslednjo izjavo:
java ubežni znaki
DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.student_id=T2.student.id WHERE T1.student_id=2;
V zgornji sintaksi je ciljna tabela (T1 in T2) zapisana med ključnima besedama DELETE in FROM. Če tam izpustimo katero koli ime tabele, potem je izbrisati izjavo odstrani samo vrstice iz ene tabele. Izraz, zapisan z VKLOP ključna beseda je pogoj, ki se ujema z vrsticami v tabelah, ki jih boste izbrisali.
Primer
Recimo, da imamo dve mizi študenti in kontakti ki vsebuje naslednje podatke:
Tabela: učenci
Tabela: kontakti
java sort arraylist
Izvedite naslednjo poizvedbo, da razumete Izbriši Pridružite se z notranjim združevanjem. Ta stavek izbriše vrstico z enakim ID-jem v obeh tabelah.
DELETE students, contacts FROM students INNER JOIN contacts ON students.student_id=contacts.college_id WHERE students.student_id = 4;
Po uspešni izvedbi bo izdal naslednje sporočilo:
Zdaj zaženite naslednjo poizvedbo, da preverite uspešno izbrisane vrstice.
mysql> SELECT * FROM students; mysql> SELECT * FROM contacts;
Vidite lahko, da vrstice, kjer je student_id=4 se izbriše.
DELETE JOIN z LEFT JOIN
Naučili smo se že klavzule LEFT JOIN s stavkom SELECT, ki vrne vse vrstice iz leve (prve) tabele in ujemajoče ali neujemajoče se vrstice iz druge tabele. Podobno lahko uporabimo tudi stavek LEFT JOIN s ključno besedo DELETE za brisanje vrstic iz leve (prve) tabele, ki nima ujemajočih se vrstic iz desne (druge) tabele.
Naslednja poizvedba bolj jasno pojasnjuje, kje stavek DELETE uporablja LEFT JOIN za brisanje vrstic iz Tabela1 ki nima ujemajočih se vrstic v tabela 2 :
DELETE Table1 FROM Table1 LEFT JOIN Table2 ON Table1.key = Table2.key WHERE Table2.key IS NULL;
Upoštevajte, da bomo v zgornji poizvedbi uporabili samo tabelo1 s ključno besedo DELETE, ne obojega, kot je bilo v stavku INNER JOIN.
Primer
Ustvarimo tabelo ' kontakti ' in ' stranke ' v bazi podatkov, ki vsebuje naslednje podatke:
Tabela: kontakti
plsql
Tabela: stranke
Izvedite naslednji stavek, ki odstrani stranko, ki nima a mobitel številka:
DELETE customers FROM customers LEFT JOIN contacts ON customers.customer_id = contacts.contact_id WHERE cellphone IS NULL;
Po uspešni izvedbi bo izdal naslednje sporočilo:
Zdaj zaženite naslednjo poizvedbo, da preverite uspešno izbrisane vrstice.
mysql> SELECT * FROM customers;
Vidite lahko, da so vrstice, kjer stranka nima številke mobilnega telefona, izbrisane.