logo

MySQL DELETE PRISIJUNGTI

DELETE užklausa yra duomenų apdorojimo kalbos, naudojamos pašalinti eilutes iš lentelių, dalis. Kaip ištrinti prisijungimą MySQL yra labai populiarus klausimas interviu metu. Nėra lengvas procesas naudoti prisijungimo trynimo sakinius MySQL. Šiame skyriuje aprašome, kaip galite ištrinti įrašus iš kelių lentelių naudodami INNER JOIN arba LEFT JOIN užklausoje DELETE.

IŠTRINTI PRISIJUNGTI naudojant VIDINĮ PRISIJUNGIMĄ

Užklausą „Inner Join“ galima naudoti su užklausa „Ištrinti“, kad būtų pašalintos eilutės iš vienos lentelės ir atitinkamos eilutės iš kitos lentelės, kurios atitinka nurodytą sąlygą.

Sintaksė

Toliau pateikiama sintaksė, kurią galima naudoti norint ištrinti eilutes iš daugiau nei vienos lentelės naudojant vidinį sujungimą.

 DELETE target table FROM table1 INNER JOIN table2 ON table1.joining_column= table2.joining_column WHERE condition 

Čia tikslas yra lentelės pavadinimas, iš kurio norime ištrinti eilutes, atitikdami nurodytą sąlygą. Tarkime, kad norite ištrinti eilutes iš lentelės T1 ir T2 kur studento_id = 2 , tada jį galima parašyti tokiu teiginiu:

pakeičiant eilutę Java
 DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.student_id=T2.student.id WHERE T1.student_id=2; 

Aukščiau pateiktoje sintaksėje tikslinė lentelė (T1 ir T2) rašoma tarp raktinių žodžių DELETE ir FROM. Jei praleisime bet kurį lentelės pavadinimą, tada ištrinti pareiškimą pašalina eilutes tik iš vienos lentelės. Išraiška parašyta su ĮJUNGTA raktinis žodis yra sąlyga, atitinkanti lentelių, kuriose ketinate ištrinti, eilutes.

Pavyzdys

Tarkime, kad turime dvi lenteles studentai ir kontaktai kuriame yra šie duomenys:

Lentelė: mokiniai

MySQL DELETE PRISIJUNGTI

Lentelė: kontaktai

MySQL DELETE PRISIJUNGTI

Vykdykite šią užklausą, kad suprastumėte Ištrinti Prisijungti su vidine jungtimi. Šis teiginys ištrina eilutę, kurios ID abiejose lentelėse yra tas pats.

 DELETE students, contacts FROM students INNER JOIN contacts ON students.student_id=contacts.college_id WHERE students.student_id = 4; 

Sėkmingai įvykdžius, bus pateiktas toks pranešimas:

MySQL DELETE PRISIJUNGTI

Dabar paleiskite šią užklausą, kad patikrintumėte, ar eilutės buvo sėkmingai ištrintos.

 mysql> SELECT * FROM students; mysql> SELECT * FROM contacts; 

Matote, kad eilutės, kuriose yra studento_id=4 yra ištrintas.

tinklas ir tinklo tipai
MySQL DELETE PRISIJUNGTI MySQL DELETE PRISIJUNGTI

IŠTRINTI PRISIJUNGTI su LEFT JOIN

Mes jau išmokome LEFT JOIN sąlygą su SELECT sakiniu, kuris grąžina visas kairiosios (pirmosios) lentelės eilutes ir atitinkančias arba neatitinkančias eilutes iš kitos lentelės. Panašiai galime naudoti ir LEFT JOIN sąlygą su raktiniu žodžiu DELETE, norėdami ištrinti eilutes iš kairės (pirmosios) lentelės, kurioje nėra atitinkamų eilučių iš dešinės (antros) lentelės.

Ši užklausa aiškiau paaiškina, kur DELETE sakinys naudoja LEFT JOIN, kad ištrintų eilutes iš 1 lentelė kuri neturi atitinkančių eilučių 2 lentelė :

 DELETE Table1 FROM Table1 LEFT JOIN Table2 ON Table1.key = Table2.key WHERE Table2.key IS NULL; 

Aukščiau pateiktoje užklausoje atkreipkite dėmesį, kad naudosime tik lentelę 1 su raktiniu žodžiu DELETE, o ne abu, kaip tai buvo INNER JOIN sakinyje.

Pavyzdys

Sukurkime lentelę kontaktai 'ir' klientų “ duomenų bazėje, kurioje yra šie duomenys:

Lentelė: kontaktai

jei pagal rudyard kipling eilutė po eilutės paaiškinimas
MySQL DELETE PRISIJUNGTI

Lentelė: klientai

MySQL DELETE PRISIJUNGTI

Vykdykite šį teiginį, kuris pašalina klientą, kuris neturi a Mobilusis telefonas numeris:

 DELETE customers FROM customers LEFT JOIN contacts ON customers.customer_id = contacts.contact_id WHERE cellphone IS NULL; 

Sėkmingai įvykdžius, bus pateiktas toks pranešimas:

MySQL DELETE PRISIJUNGTI

Dabar paleiskite šią užklausą, kad patikrintumėte, ar eilutės buvo sėkmingai ištrintos.

 mysql> SELECT * FROM customers; 

Matote, kad eilutės, kuriose klientas neturi mobiliojo telefono numerio, ištrinamos.

MySQL DELETE PRISIJUNGTI