Видалення рядків з таблиці можна здійснити командою модифікації DELETE. Варто ураховувати, що вона може видаляти тільки цілі записи таблиці, а не індивідуальні значення того або іншого поля. З цієї причини для даного оператора параметр поля є неприступним. Наприклад, для видалення всього вмісту таблиці STUDENTS, можна скористатися наступним:
DELETE FROM STUDENTS;
В процесі роботи гущавині необхідно видаляти не всі дані, а тільки деякі певні рядки з таблиці. Для того щоб визначити, які рядки будуть видалені, використовують предикат, аналогічно тому, як це робиться для запитів. Наприклад, щоб видалити інформацію про студента Нагірний, можна використати наступну команду:
DELETE FROM STUDENTS WHERE SNUM = 3416;
Тут в якості предиката використаний номер студентського квитка: дійсно, це поле фактично є первинним ключем таблиці, що дає гарантію видалення тільки одного запису. Використовування поля SFAM, взагалі кажучи, приводить до видалення декількох записів, т.к. в таблиці могла зберігатися інформація про однофамільців.
В команді DELETE припускає використати предикат, що вибирає цілу групу рядків. Наприклад, наступна команда видаляє з таблиці USP всі дані, що відносяться до оцінок, отриманих 10/06/1999:
DELETE FROM USP
WHERE UDATE = 10/06/1999;
Нарешті, так само. як і у випадку з командою INSERT, припускає в предикаті використати вкладений запит. Частіше всього це необхідно, коли критерій, по якому вибираються дані для видалення, базується на іншій таблиці. Наприклад, якщо виникає необхідність у видаленні інформації про студентів з таблиці STUDENTS, причому для таких, в яких є трійки по будь-якому з учбових предметів, то потрібно виконати наступне:
DELETE FROM STUDENTS WHERE SNUM =
(SELECT SNUM FROM USP
WHERE OCENKA = 3);
В даному випадку підзапит вибере всіх студентів, що мають трійки, з таблиці успішності, і в предикат основної команди поверне номери їхніх студентських квитків.
Припускає в предикаті команди DELETE використати і підзапити, що дає можливість встановити досить складні критерії того, які рядки будуть віддалятися. Крім того, дуже ефективно виконувати спочатку повторні дії (перевірки і т.п.), після чого виконувати саме видалення. Хоча не можна посилатися на таблицю, з якої будуть віддалятися записи, в пропозиції FROM підзапиту, в предикаті припускає посилання на поточний рядок цієї таблиці, тобто можна використати співвіднесені підзапити. Наприклад:
DELETE FROM STUDENTS WHERE EXISTS (SELECT * FROM USP
WHERE OCENKA = 3
AND STUDENTS.SNUM = USP.SNUM);
Власне вся команда видаляє інформацію, аналогічно попередньому прикладу. Звернете увагу на те. що частина предиката внутрішнього запиту посилається до таблиці STUDENTS. Це означає, що весь підзапит буде виконуватися окремо для кожного рядка даної таблиці.
В цілому, структура команди DELETE достатньо проста для розуміння, тому більш докладне на ній зупинятися не будемо.