10 основних прикладів команди DELETE у MariaDB

Головне меню » Бази даних » База даних MySQL » 10 основних прикладів команди DELETE у MariaDB / MySQL

На цьому уроці ми розповімо, як використовувати DELETE у MySQL із деякими корисними прикладами.

Розглядаються у цьому посібнику такі приклади:

  • Видалення конкретного рядка
  • Видалення кількох рядків (за допомогою зіставлення номера стовпця)
  • Видалення кількох рядків (за допомогою зіставлення рядка стовпця)
  • Видалення записів із опцією LIMIT
  • DELETE Vs Truncate (для видалення всіх рядків)
  • Видалення записів із варіантом IGNORE
  • Як використовувати сортування з операцією DELETE?
  • Видалення записів із опцією QUICK
  • Видалення записів із опцією LOW_PRIORITY
  • Видалення записів з кількох таблиць за допомогою INNER join

Щоб видалити записи з таблиці, ви повинні мати привілей DELETE на конкретній таблиці, з якої ви намагаєтеся видалити рядки.

Для цього уроку ми будемо використовувати наступну таблицю співробітників як приклад.

Якщо ви новачок MySQL, ймовірно, ви повинні спочатку зрозуміти основи MySQL, включаючи, як створити базу даних MySQL.

1. Видалення певного рядка

Щоб видалити певний рядок, ви повинні вказати умову, за якою за допомогою одного зі значення стовпців первинного чи унікального значення стовпця.

Наступний приклад видаляє один запис із таблиці співробітників, який має ідентифікатор 100.

У наведеному вище висновку:

  • Вихід команди видалення покаже вам скільки записів він видаляє. Як видно з наведеного вище висновку, говориться: "1 row affected", що означає, що він видалив один рядок.
  • Вихіднийсигнал також буде сказати “Query OK”, якщо запит було виконано. Якщо є помилка синтаксису, він буде відображати його тут. Навіть якщо він не видаляє будь-який запис, цей рядок, як і раніше, говоритиме “Query OK”, поки не було жодних помилок синтаксису і твердження було чистим. І, нарешті, це також покаже, скільки часу потрібно MySQL для виконання запиту (наприклад: 0,01 секунди).

Перший запис з ідентифікатором 100 буде видалено з таблиці співробітників.

2. Видалення кількох рядків із використанням стовпця типу String Matching

Ви можете видаляти записи з таблиці шляхом зіставлення стовпця рядка з певними умовами.

Для рядка, ви можете використовувати ключове слово “like”, який робитиме часткову відповідність. Для часткової відповідності використовується % у стовпці значень.

У наступному прикладі видалятимемо записи з таблиці співробітників, де значення в стовпці DEPT починається з “Tech”. Таким чином, це видаляє всі записи, де відділ IT.

Наведений вище висновок вказує на те, що він видалив три записи. Як бачимо з наступного виходу, ми більше записів відділу “IT”.

Ми обговорювали багато про різні практичні умови команди WHERE у нашому MySQL підручнику. Це дуже корисно зрозуміти, як ефективно використовувати пропозицію WHERE під час видалення: 25 Основних прикладів команди WHERE в MySQL.

3. Видалення кількох рядків, використовуючи номер стовпця Matching

Аналогічно в наведеному вище прикладі номера стовпця, можна також видаляти записи з таблиці шляхом зіставлення стовпця рядку з певними критеріями.

Нижче видалятимемо записи з таблиці співробітників, де зарплата менша або дорівнює 700.

Вищезазначена команда видалила 4 записи знашої таблиці співробітників. У нас нині залишився лише один запис.

4. Видалення рядків із опцією LIMIT

Навіть тоді, коли відповідає багато записів, ви все ще можете обмежити скільки записів слід видалити за допомогою опції LIMIT.

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

Наприклад, наступна команда видалення без будь-якої опції LIMIT видалятиме всі відповідні записи. тобто. цей видалила 5 записів.

Але коли ви використовуєте опцію LIMIT, то наступним видалятимуть лише 2 записи, навіть якщо запиту відповідає 5 записів.

Виконати ту ж команду видалення ще раз, що призведе до видалення більше двох записів.

При виконанні його знову, на цей раз він видаляється лише один запис, так як це останній збігаються записи.

Тепер у нас немає будь-яких збігаються записів для видалення.

5. DELETE Vs Truncate (для видалення всіх рядків)

Якщо ви хочете видалити всі рядки з таблиці, ви можете використовувати команду DELETE або команду TRUNCATE, як показано нижче. Обидва робитимуть те саме. Але є різниця.

Нижче наведено кілька речей, які ви повинні знати про DELETE проти TRUNCATE:

  • TRUNCATE це набагато швидше, ніж DELETE. Якщо ви просто хочете швидко очистити таблицю, використовуйте TRUNCATE.
  • DELETE це заява DML. TRUNCATE це заява DDL.
  • При виконанні команди TRUNCATE, це дійсно видалити таблицю і створити порожню таблицю. Саме з цієї причини усічення дуже швидко, тому що вона невидаляє записи один за одним, як команда видалення.
  • Коли є замок на певній таблиці, ви не можете використовувати команду TRUNCATE.
  • Як видно з наведеного вище виводу TRUNCATE не показує, скільки рядків буде видалено. Він просто скаже: “0 rows affected”, навіть коли він обрізає таблицю, де було кілька рядків.
  • Так що, якщо вам потрібно знати, скільки записів під час очищення таблиці видалено, ви повинні використовувати DELETE.
  • Якщо у вас є тригер on-delete для видалення таблиці, при виконанні команди TRUNCATE, ці тригери виконуватися не будуть.
  • Нарешті, важлива відмінність полягає в наступному: При виконанні команди TRUNCATE ви не можете відкотити. Але при виконанні команди DELETE ви можете відкотити. Округлення робить неявне зобов'язання.

6. Видалити рядки з опцією IGNORE

Ви можете використовувати ключове слово IGNORE разом із командою DELETE (тобто DELETE IGNORE), коли ви хочете ігнорувати реальне дійсне повідомлення про помилку, якщо ви знаєте, ваша конкретна команда DELETE скидатиме.

Таким чином, коли ви використовуєте DELETE IGNORE, якщо є будь-яке дійсне повідомлення про помилку, він розглядатиметься лише як попередження. Ви повинні бути дуже обережні, коли ви використовуєте DELETE IGNORE, особливо в таблиці, де у вас є зовнішній ключ, тому що DELETE IGNORE просто видалити записи, не турбуючись про будь-які зовнішні залежності зовнішнього ключа.

Як видно з наведеного вище висновку, DELETE IGNORE видаляє записи з таблиці, навіть якщо є залежність зовнішнього ключа. Він просто виведе ті реальні повідомлення про помилку як попередження.

7. Навіщо використовувати Order із DELETE?

Ви можете використовувати Order разом зкомандою Delete.

Це може бути дуже корисним, якщо ви хочете, щоб ваші рядки будуть видалені в певному порядку.

У команді видалення, коли ви поєднуєте “order by” та опцію “limit”, ви можете зробити деякі трюки.

Наприклад, при виконанні наступної команди видалення без “order by”, видалити запис співробітника з кодом 100 (тобто найстарішого співробітника у відділі «IT»).

Наведена вище команда видалила ідентифікаційний номер співробітника 200 (найстаріший працівник IT).

Але, ви можете також видалити нового співробітника у відділі «IT», якщо об'єднати та впорядкувати за LIMIT, як показано нижче.

Наведена вище команда видалила ідентифікаційний номер співробітника 500 (найновіший працівник IT).

Крім того, майте на увазі, що ви можете використовувати ORDER BY у реченні, якщо ви хочете видалити записи в певній послідовності, щоб уникнути будь-яких обмежень цілісності посилання.

8. Видалення рядків із опцією QUICK

У величезній таблиці, яка має деякі індекси, можна використовувати швидкий варіант для прискорення операції видалення, як показано нижче.

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

9. Видалення рядків із опцією LOW_PRIORITY

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

Ключове слово LOW_PRIORITY буде ефективним лише на цих двигунах зберігання: MyISAM, MEMORY та MERGE. тобто. Ви можете використовувати цю функцію лише на двигунах для зберігання бази даних, які реалізують блокування на рівні таблиці.

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

10. Видалити з кількох таблиць за допомогою INNER JOIN

У попередніх прикладах ми використовували команду видалення, щоб видалити лише записи з однієї таблиці.

Є два способи. коли можна вказати видалення записів із кількох таблиць.

У першому способі можна вказати таблиці, з яких записи будуть видалені перед ключовим словом “FROM”, як показано нижче. Нижче будуть видалені записи з робітника та benefits таблиць, які відповідають критеріям, зазначеним в умові where.

У другому способі, можна вказати таблиці, де записи будуть видалені після ключового слова “FROM”, як показано нижче. Нижче буде видаляти записи з worker та benefits, які відповідають критеріям, зазначеним в умові where.