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