Запит 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. Якщо ми опустимо будь-яку назву таблиці звідти, то видалити заяву видаляє лише рядки з однієї таблиці. Вираз, записаний с УВІМКНЕНО Ключове слово — це умова, яка відповідає рядкам у таблицях, які ви збираєтеся видалити.
приклад
Припустимо, у нас є дві таблиці студентів і контакти який містить такі дані:
Таблиця: учні
Таблиця: контакти
рядок до цілих чисел
Виконайте наступний запит, щоб зрозуміти Видалити Приєднатися з внутрішнім об'єднанням. Цей оператор видаляє рядок, який має однаковий ідентифікатор в обох таблицях.
DELETE students, contacts FROM students INNER JOIN contacts ON students.student_id=contacts.college_id WHERE students.student_id = 4;
Після успішного виконання він видасть таке повідомлення:
Тепер виконайте наступний запит, щоб перевірити успішність видалення рядків.
mysql> SELECT * FROM students; mysql> SELECT * FROM contacts;
Ви бачите, що рядки, де student_id=4 видаляється.
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
Таблиця: клієнти
Виконайте наступний оператор, який видалить клієнта, який не має a мобільний телефон номер:
DELETE customers FROM customers LEFT JOIN contacts ON customers.customer_id = contacts.contact_id WHERE cellphone IS NULL;
Після успішного виконання він видасть таке повідомлення:
Тепер виконайте наступний запит, щоб перевірити успішність видалення рядків.
mysql> SELECT * FROM customers;
Ви бачите, що рядки, де клієнт не має номера мобільного телефону, видаляються.