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
Lentelė: kontaktai
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:
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
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
Lentelė: klientai
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:
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.