В языке структурированных запросов к базе данных ( SQL ) оператор DELETE используется для удаления одной или нескольких записей из таблицы . Подмножество может быть определено для удаления с использованием условия, в противном случае все записи будут удалены. [1] Некоторые системы управления базами данных (СУБД), такие как MySQL , позволяют удалять строки из нескольких таблиц с помощью одного оператора DELETE (иногда это называют многотабличным DELETE).
Удалите строки из круговых таблиц , где аромат столбца равен лимонному безе :
УДАЛИТЬ ИЗ пирогов WHEREflavor = 'Лимонное безе ' ;
Удалить строки в деревьях , если значение высоты меньше 80.
УДАЛИТЬ ИЗ деревьев ГДЕ высота < 80 ;
Удалить все строки из mytable :
УДАЛИТЬ ИЗ моей таблицы ;
Удалите строки из mytable , используя подзапрос в условииwhere:
УДАЛИТЬ ИЗ mytable WHERE id IN ( ВЫБРАТЬ id FROM mytable2 );
Удалите строки из mytable , используя список значений:
УДАЛИТЬ ИЗ моей таблицы ГДЕ id IN ( значение1 , значение2 , значение3 , значение4 , значение5 );
Предположим, имеется простая база данных, в которой перечислены люди и адреса. По определенному адресу может проживать более одного человека, и один человек может жить более чем по одному адресу (это пример отношения « многие ко многим »). В базе данных есть только три таблицы: person , адрес и pa , со следующими данными:
Таблица pa связывает таблицы лиц и адресов, показывая, что Джо, Боб и Энн живут на Мейн-стрит 2001 года, но Джо также проживает на бульваре Пико.
Чтобы удалить Джо из базы данных, необходимо выполнить два удаления:
УДАЛИТЬ ОТ человека ГДЕ pid = 1 ; УДАЛИТЬ ИЗ pa ГДЕ pid = 1 ;
Чтобы сохранить ссылочную целостность, записи Джо должны быть удалены как из человека , так и из компьютера . Возможно, помимо трех таблиц в базе данных также был настроен триггер, чтобы при каждом удалении строки из person все связанные строки удалялись из pa . Тогда первое утверждение:
УДАЛИТЬ ОТ человека ГДЕ pid = 1 ;
автоматически вызовет второй:
УДАЛИТЬ ИЗ pa ГДЕ pid = 1 ;
Удаление всех строк из таблицы может занять очень много времени. Некоторые СУБД [ необходимы пояснения ] предлагают команду TRUNCATE TABLE , которая работает намного быстрее, поскольку она только изменяет метаданные и обычно не тратит время на обеспечение соблюдения ограничений или срабатывание триггеров.
DELETE удаляет только строки. Для полного удаления таблицы можно использовать команду DROP .