Dotaz DELETE je podčasťou jazyka na manipuláciu s údajmi, ktorý sa používa na odstránenie riadkov z tabuliek. Ako odstrániť pripojenie MySQL je veľmi populárna otázka počas rozhovorov. Nie je jednoduchý proces používať príkazy delete join v MySQL. V tejto časti popíšeme, ako môžete odstrániť záznamy z viacerých tabuliek pomocou INNER JOIN alebo LEFT JOIN v dotaze DELETE.
DELETE JOIN pomocou INNER JOIN
Dotaz Inner Join možno použiť s dotazom Delete na odstránenie riadkov z jednej tabuľky a zodpovedajúcich riadkov z druhej tabuľky, ktoré spĺňajú zadanú podmienku.
Syntax
Nasledujú syntaxe, ktoré možno použiť na odstránenie riadkov z viac ako jednej tabuľky pomocou funkcie Inner Join .
DELETE target table FROM table1 INNER JOIN table2 ON table1.joining_column= table2.joining_column WHERE condition
Tu je cieľom názov tabuľky, z ktorej chceme odstrániť riadky podľa zadanej podmienky. Predpokladajme, že chcete odstrániť riadky z tabuľky T1 a T2 kde student_id = 2 , potom to možno zapísať ako nasledujúce vyhlásenie:
Madhubala
DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.student_id=T2.student.id WHERE T1.student_id=2;
Vo vyššie uvedenej syntaxi je cieľová tabuľka (T1 a T2) zapísaná medzi kľúčové slová DELETE a FROM. Ak odtiaľ vynecháme akýkoľvek názov tabuľky, potom vymazať výpis odstráni iba riadky z jednej tabuľky. Výraz napísaný s ON kľúčové slovo je stav, ktorý sa zhoduje s riadkami v tabuľkách, ktoré sa chystáte odstrániť.
Príklad
Predpokladajme, že máme dva stoly študentov a kontakty ktorý obsahuje nasledujúce údaje:
Tabuľka: študenti
Tabuľka: kontakty
Vykonajte nasledujúci dotaz, aby ste pochopili Odstrániť pripojenie s Inner Join. Tento príkaz vymaže riadok, ktorý má rovnaké ID v oboch tabuľkách.
DELETE students, contacts FROM students INNER JOIN contacts ON students.student_id=contacts.college_id WHERE students.student_id = 4;
Po úspešnom vykonaní sa zobrazí nasledujúca správa:
význam dhl
Teraz spustite nasledujúci dotaz na overenie úspešne odstránených riadkov.
mysql> SELECT * FROM students; mysql> SELECT * FROM contacts;
Môžete vidieť, že riadky, kde student_id=4 sa vymaže.
VYMAZAŤ PRIPOJENIE pomocou ĽAVÉHO PRIPOJENIA
Klauzulu LEFT JOIN sme sa už naučili s príkazom SELECT, ktorý vráti všetky riadky z ľavej (prvej) tabuľky a zhodné alebo nezhodné riadky z inej tabuľky. Podobne môžeme použiť aj klauzulu LEFT JOIN s kľúčovým slovom DELETE na vymazanie riadkov z ľavej (prvej) tabuľky, ktorá nemá zhodné riadky z pravej (druhej) tabuľky.
Nasledujúci dotaz to vysvetľuje jasnejšie, kde príkaz DELETE používa LEFT JOIN na odstránenie riadkov Stôl 1 ktorý nemá zodpovedajúce riadky v Tabuľka2 :
DELETE Table1 FROM Table1 LEFT JOIN Table2 ON Table1.key = Table2.key WHERE Table2.key IS NULL;
Vo vyššie uvedenom dotaze si všimnite, že tabuľku 1 použijeme iba s kľúčovým slovom DELETE, nie oboje ako v príkaze INNER JOIN.
Príklad
Poďme vytvoriť tabuľku ' kontakty ' a ' zákazníkov “ v databáze, ktorá obsahuje nasledujúce údaje:
Tabuľka: kontakty
zákony ekvivalencie
Tabuľka: zákazníci
Vykonajte nasledujúci príkaz, ktorý odstráni zákazníka, ktorý nemá a mobilný telefón číslo:
DELETE customers FROM customers LEFT JOIN contacts ON customers.customer_id = contacts.contact_id WHERE cellphone IS NULL;
Po úspešnom vykonaní sa zobrazí nasledujúca správa:
Teraz spustite nasledujúci dotaz na overenie úspešne odstránených riadkov.
mysql> SELECT * FROM customers;
Môžete vidieť, že riadky, kde zákazník nemá číslo mobilného telefónu, sú vymazané.