logo

MySQL ВИДАЛИТИ ПРИЄДНАННЯ

Запит DELETE є підчастиною мови обробки даних, яка використовується для видалення рядків із таблиць. Як видалити приєднання MySQL це дуже популярне питання під час співбесід. Це непростий процес використання операторів delete join у MySQL. У цьому розділі ми опишемо, як можна видалити записи з кількох таблиць за допомогою INNER JOIN або LEFT JOIN у запиті DELETE.

DELETE JOIN за допомогою INNER JOIN

Запит на внутрішнє об’єднання можна використовувати разом із запитом на видалення для видалення рядків з однієї таблиці та відповідних рядків з іншої таблиці, які відповідають вказаній умові.

Синтаксис

Нижче наведено синтаксис, який можна використовувати для видалення рядків із кількох таблиць за допомогою внутрішнього об’єднання.

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

Тут ціль — це ім’я таблиці, з якої ми хочемо видалити рядки, відповідаючи вказаній умові. Припустимо, ви хочете видалити рядки з таблиці Т1 і Т2 де student_id = 2 , то це можна записати у вигляді наступного твердження:

виноски уцінки
 DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.student_id=T2.student.id WHERE T1.student_id=2; 

У наведеному вище синтаксисі цільова таблиця (T1 і T2) записується між ключовими словами DELETE і FROM. Якщо ми опустимо будь-яку назву таблиці звідти, то видалити заяву видаляє лише рядки з однієї таблиці. Вираз, записаний с УВІМКНЕНО Ключове слово — це умова, яка відповідає рядкам у таблицях, які ви збираєтеся видалити.

приклад

Припустимо, у нас є дві таблиці студентів і контакти який містить такі дані:

Таблиця: учні

MySQL ВИДАЛИТИ ПРИЄДНАННЯ

Таблиця: контакти

рядок до цілих чисел
MySQL ВИДАЛИТИ ПРИЄДНАННЯ

Виконайте наступний запит, щоб зрозуміти Видалити Приєднатися з внутрішнім об'єднанням. Цей оператор видаляє рядок, який має однаковий ідентифікатор в обох таблицях.

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

Після успішного виконання він видасть таке повідомлення:

MySQL ВИДАЛИТИ ПРИЄДНАННЯ

Тепер виконайте наступний запит, щоб перевірити успішність видалення рядків.

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

Ви бачите, що рядки, де student_id=4 видаляється.

MySQL ВИДАЛИТИ ПРИЄДНАННЯ MySQL ВИДАЛИТИ ПРИЄДНАННЯ

DELETE JOIN за допомогою LEFT JOIN

Ми вже вивчили пропозицію LEFT JOIN із оператором SELECT, яка повертає всі рядки з лівої (першої) таблиці та відповідні або не збігаються рядки з іншої таблиці. Так само ми можемо використовувати речення LEFT JOIN із ключовим словом DELETE для видалення рядків із лівої (першої) таблиці, яка не має відповідних рядків із правої (другої) таблиці.

У наступному запиті більш чітко пояснюється, де оператор DELETE використовує LEFT JOIN для видалення рядків із Таблиця1 який не має відповідних рядків у Таблиця2 :

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

У наведеному вище запиті зверніть увагу, що ми будемо використовувати Table1 лише з ключовим словом DELETE, а не обидва, як у операторі INNER JOIN.

приклад

Давайте створимо таблицю ' контакти 'і' клієнтів ' в базі даних, яка містить такі дані:

Таблиця: контакти

лінійний пошук в java
MySQL ВИДАЛИТИ ПРИЄДНАННЯ

Таблиця: клієнти

MySQL ВИДАЛИТИ ПРИЄДНАННЯ

Виконайте наступний оператор, який видалить клієнта, який не має a мобільний телефон номер:

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

Після успішного виконання він видасть таке повідомлення:

MySQL ВИДАЛИТИ ПРИЄДНАННЯ

Тепер виконайте наступний запит, щоб перевірити успішність видалення рядків.

 mysql> SELECT * FROM customers; 

Ви бачите, що рядки, де клієнт не має номера мобільного телефону, видаляються.

MySQL ВИДАЛИТИ ПРИЄДНАННЯ