DELETE vaicājums ir datu apstrādes valodas apakšdaļa, ko izmanto rindu noņemšanai no tabulām. Kā izdzēst pievienošanos MySQL ir ļoti populārs jautājums interviju laikā. Nav viegls process izmantot pievienošanās dzēšanas paziņojumus pakalpojumā MySQL. Šajā sadaļā mēs aprakstīsim, kā varat dzēst ierakstus no vairākām tabulām, vaicājumā DELETE izmantojot INNER JOIN vai LEFT JOIN.
DZĒST PIEVIENOŠANOS, izmantojot IEKŠĒJO PIEVIENOŠANOS
Vaicājumu Inner Join var izmantot kopā ar vaicājumu Dzēst, lai noņemtu rindas no vienas tabulas un atbilstošās rindas no otras tabulas, kas atbilst norādītajam nosacījumam.
Sintakse
Tālāk ir norādīta sintakse, ko var izmantot, lai dzēstu rindas no vairāk nekā vienas tabulas, izmantojot iekšējo savienojumu.
DELETE target table FROM table1 INNER JOIN table2 ON table1.joining_column= table2.joining_column WHERE condition
Šeit mērķis ir tabulas nosaukums, no kuras mēs vēlamies dzēst rindas, atbilstot norādītajam nosacījumam. Pieņemsim, ka vēlaties dzēst rindas no tabulas T1 un T2 kur studenta_id = 2 , tad to var uzrakstīt kā šādu paziņojumu:
java savienojamība
DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.student_id=T2.student.id WHERE T1.student_id=2;
Iepriekš minētajā sintaksē mērķa tabula (T1 un T2) ir ierakstīta starp atslēgvārdiem DELETE un FROM. Ja mēs izlaidīsim jebkuru tabulas nosaukumu, tad dzēst paziņojumu tikai noņem rindas no vienas tabulas. Izteiciens rakstīts ar IESL atslēgvārds ir nosacījums, kas atbilst tabulu rindām, kurās vēlaties dzēst.
Piemērs
Pieņemsim, ka mums ir divas tabulas studenti un kontaktpersonas kas satur šādus datus:
Tabula: studenti
Tabula: kontakti
Izpildiet šo vaicājumu, lai saprastu Dzēst pievienošanos ar iekšējo pievienošanos. Šis paziņojums izdzēš rindu, kurai ir vienāds ID abās tabulās.
npm tīru kešatmiņu
DELETE students, contacts FROM students INNER JOIN contacts ON students.student_id=contacts.college_id WHERE students.student_id = 4;
Pēc veiksmīgas izpildes tiks parādīts šāds ziņojums:
Tagad palaidiet šo vaicājumu, lai pārbaudītu, vai rindas ir veiksmīgi izdzēstas.
mysql> SELECT * FROM students; mysql> SELECT * FROM contacts;
Var redzēt, ka rindas, kurās ir studenta_id=4 ir dzēsts.
DZĒST PIEVIENOTIES ar LEFT JOIN
Mēs jau esam iemācījušies LEFT JOIN klauzulu ar SELECT paziņojumu, kas atgriež visas rindas no kreisās (pirmās) tabulas un atbilstošās vai neatbilstošās rindas no citas tabulas. Līdzīgi mēs varam izmantot arī LEFT JOIN klauzulu ar atslēgvārdu DELETE, lai dzēstu rindas no kreisās (pirmās) tabulas, kurām nav atbilstošu rindu no labās (otrās) tabulas.
Šis vaicājums skaidrāk izskaidro, kur DELETE priekšraksts izmanto LEFT JOIN, lai dzēstu rindas no 1. tabula kam nav atbilstošu rindu 2. tabula :
DELETE Table1 FROM Table1 LEFT JOIN Table2 ON Table1.key = Table2.key WHERE Table2.key IS NULL;
Iepriekš minētajā vaicājumā ņemiet vērā, ka mēs izmantosim tikai Table1 ar atslēgvārdu DELETE, nevis abus, kā tas tika darīts priekšrakstā INNER JOIN.
Piemērs
Izveidosim tabulu kontaktpersonas ' un ' klientiem ' datubāzē, kurā ir šādi dati:
Tabula: kontakti
entītiju relāciju
Tabula: klienti
Izpildiet šo paziņojumu, kas noņem klientu, kuram nav a Mobilais telefons numurs:
DELETE customers FROM customers LEFT JOIN contacts ON customers.customer_id = contacts.contact_id WHERE cellphone IS NULL;
Pēc veiksmīgas izpildes tiks parādīts šāds ziņojums:
Tagad palaidiet šo vaicājumu, lai pārbaudītu, vai rindas ir veiksmīgi izdzēstas.
mysql> SELECT * FROM customers;
Var redzēt, ka tiek dzēstas rindas, kurās klientam nav mobilā tālruņa numura.