logo

MySQL DELETE PŘIPOJIT SE

DELETE dotaz je dílčí částí jazyka pro manipulaci s daty, který se používá k odstranění řádků z tabulek. Jak smazat join in MySQL je velmi oblíbená otázka během rozhovorů. Použití příkazů delete join v MySQL není snadný proces. V této části popíšeme, jak můžete odstranit záznamy z více tabulek pomocí INNER JOIN nebo LEFT JOIN v dotazu DELETE.

DELETE JOIN pomocí INNER JOIN

Dotaz Inner Join lze použít s dotazem Delete k odstranění řádků z jedné tabulky a odpovídajících řádků z druhé tabulky, které splňují zadanou podmínku.

Syntax

Následuje syntaxe, kterou lze použít pro odstranění řádků z více než jedné tabulky pomocí Inner Join .

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

Zde je cílem název tabulky, ze které chceme odstranit řádky podle zadané podmínky. Předpokládejme, že chcete odstranit řádky z tabulky T1 a T2 kde student_id = 2 , pak to lze zapsat jako následující prohlášení:

import skeneru java
 DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.student_id=T2.student.id WHERE T1.student_id=2; 

Ve výše uvedené syntaxi je cílová tabulka (T1 a T2) zapsána mezi klíčová slova DELETE a FROM. Pokud odtud vynecháme jakýkoli název tabulky, pak smazat výpis odebere pouze řádky z jedné tabulky. Výraz psaný s NA klíčové slovo je stav, který odpovídá řádkům v tabulkách, které se chystáte odstranit.

Příklad

Předpokládejme, že máme dva stoly studentů a kontakty který obsahuje následující údaje:

Tabulka: studenti

MySQL DELETE PŘIPOJIT SE

Tabulka: kontakty

MySQL DELETE PŘIPOJIT SE

Proveďte následující dotaz, abyste pochopili Smazat připojení s Inner Join. Tento příkaz odstraní řádek, který má v obou tabulkách stejné id.

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

Po úspěšném provedení se zobrazí následující zpráva:

můj flixer
MySQL DELETE PŘIPOJIT SE

Nyní spusťte následující dotaz k ověření úspěšně odstraněných řádků.

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

Můžete vidět, že řádky, kde student_id=4 je smazán.

MySQL DELETE PŘIPOJIT SE MySQL DELETE PŘIPOJIT SE

DELETE JOIN pomocí LEVÉHO PŘIPOJENÍ

Klauzuli LEFT JOIN jsme se již naučili s příkazem SELECT, který vrací všechny řádky z levé (první) tabulky a odpovídající nebo neodpovídající řádky z jiné tabulky. Podobně můžeme také použít klauzuli LEFT JOIN s klíčovým slovem DELETE pro mazání řádků z levé (první) tabulky, která nemá odpovídající řádky z pravé (druhé) tabulky.

Následující dotaz to vysvětluje jasněji, kde příkaz DELETE používá pro mazání řádků LEFT JOIN Stůl 1 který nemá odpovídající řádky v Tabulka2 :

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

Všimněte si, že ve výše uvedeném dotazu použijeme Tabulku1 pouze s klíčovým slovem DELETE, nikoli obojí jako v příkazu INNER JOIN.

Příklad

Pojďme vytvořit tabulku' kontakty ' a ' zákazníky ' v databázi, která obsahuje následující data:

Tabulka: kontakty

java je prázdná
MySQL DELETE PŘIPOJIT SE

Tabulka: zákazníci

MySQL DELETE PŘIPOJIT SE

Proveďte následující příkaz, který odebere zákazníka, který nemá a mobilní telefon číslo:

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

Po úspěšném provedení se zobrazí následující zpráva:

MySQL DELETE PŘIPOJIT SE

Nyní spusťte následující dotaz k ověření úspěšně odstraněných řádků.

 mysql> SELECT * FROM customers; 

Vidíte, že jsou odstraněny řádky, kde zákazník nemá číslo mobilního telefonu.

MySQL DELETE PŘIPOJIT SE