A DELETE lekérdezés az adatkezelési nyelv egyik alrésze, amelyet a sorok táblázatokból való eltávolítására használnak. Hogyan lehet törölni a csatlakozást MySQL nagyon népszerű kérdés az interjúk során. Nem egyszerű folyamat a delete join utasítások használata a MySQL-ben. Ebben a részben leírjuk, hogyan törölhet rekordokat több táblából az INNER JOIN vagy LEFT JOIN használatával a DELETE lekérdezésben.
CSATLAKOZÁS TÖRLÉSE a BELSŐ CSATLAKOZÁSSAL
Az Inner Join lekérdezés a Delete lekérdezéssel együtt használható a megadott feltételnek megfelelő sorok eltávolítására az egyik táblából és a megfelelő sorok eltávolítására a másik táblából.
Szintaxis
A következő szintaxis használható egynél több tábla sorainak törlésére az Inner Join használatával.
DELETE target table FROM table1 INNER JOIN table2 ON table1.joining_column= table2.joining_column WHERE condition
Itt a cél egy táblanév, ahonnan a megadott feltételnek megfelelve sorokat szeretnénk törölni. Tegyük fel, hogy sorokat szeretne törölni a táblázatból T1 és T2 ahol diákazonosító = 2 , akkor a következő állításként írható fel:
nginx
DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.student_id=T2.student.id WHERE T1.student_id=2;
A fenti szintaxisban a céltábla (T1 és T2) a DELETE és a FROM kulcsszavak közé van írva. Ha bármelyik táblanevet kihagyjuk onnan, akkor a nyilatkozat törlése csak egyetlen táblázatból távolítja el a sorokat. -vel írt kifejezés TOVÁBB A kulcsszó az a feltétel, amely megegyezik a törölni kívánt táblázatok soraival.
Példa
Tegyük fel, hogy két asztalunk van hallgatók és kapcsolatokat amely a következő adatokat tartalmazza:
Táblázat: tanulók
Táblázat: elérhetőségek
Hajtsa végre a következő lekérdezést, hogy megértse a Csatlakozás törlése belső csatlakozással. Ez az utasítás törli azt a sort, amelynek mindkét táblájában ugyanaz az azonosítója.
DELETE students, contacts FROM students INNER JOIN contacts ON students.student_id=contacts.college_id WHERE students.student_id = 4;
Sikeres végrehajtás után a következő üzenetet adja:
szórt fák
Most futtassa a következő lekérdezést a sorok sikeres törlésének ellenőrzéséhez.
mysql> SELECT * FROM students; mysql> SELECT * FROM contacts;
Látható, hogy azok a sorok, ahol a tanulói_azonosító=4 törlésre kerül.
A CSATLAKOZÁS TÖRLÉSE a LEFT JOIN funkcióval
Már megtanultuk a LEFT JOIN záradékot a SELECT utasítással, amely visszaadja az összes sort a bal (első) táblából és a megfelelő vagy nem egyező sorokat egy másik táblából. Hasonlóképpen használhatjuk a LEFT JOIN záradékot a DELETE kulcsszóval olyan sorok törlésére a bal oldali (első) táblából, amelyek nem rendelkeznek megfelelő sorokkal egy jobb oldali (második) táblából.
A következő lekérdezés érthetőbben magyarázza el, hogy a DELETE utasítás hol használja a LEFT JOIN parancsot a sorok törléséhez Asztal 1 amelynek nincsenek egyező sorai a 2. táblázat :
DELETE Table1 FROM Table1 LEFT JOIN Table2 ON Table1.key = Table2.key WHERE Table2.key IS NULL;
A fenti lekérdezésben vegye figyelembe, hogy csak a Table1-et használjuk a DELETE kulcsszóval, nem mindkettőt, mint az INNER JOIN utasításban.
Példa
Hozzunk létre egy táblázatot kapcsolatokat ' és ' vásárlók ' egy olyan adatbázisban, amely a következő adatokat tartalmazza:
Táblázat: elérhetőségek
a korai mukerek
Táblázat: vásárlók
Hajtsa végre a következő utasítást, amely eltávolítja azt az ügyfelet, aki nem rendelkezik a mobiltelefon szám:
DELETE customers FROM customers LEFT JOIN contacts ON customers.customer_id = contacts.contact_id WHERE cellphone IS NULL;
Sikeres végrehajtás után a következő üzenetet adja:
Most futtassa a következő lekérdezést a sorok sikeres törlésének ellenőrzéséhez.
mysql> SELECT * FROM customers;
Láthatja, hogy azok a sorok, amelyekben az ügyfél nem rendelkezik mobiltelefonszámmal, törlődnek.