Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В языке структурированных запросов базы данных ( SQL ) оператор DELETE удаляет одну или несколько записей из таблицы . Подмножество может быть определено для удаления с помощью условия, в противном случае удаляются все записи. [1] Некоторые системы управления базами данных (СУБД), такие как MySQL , позволяют удалять строки из нескольких таблиц с помощью одного оператора DELETE (иногда это называется удалением нескольких таблиц).

Примеры [ править ]

Удалите строки из пирогов таблицы, где вкус столбца равен Lemon Meringue :

УДАЛИТЬ  ИЗ  пирогов,  ГДЕ  аромат = 'Лимонное безе' ;

Удалять строки в деревьях , если значение высоты меньше 80.

УДАЛИТЬ  С  деревьев  ГДЕ  высота  <  80 ;

Удалите все строки из mytable :

УДАЛИТЬ  ИЗ  mytable ;

Удалите строки из mytable с помощью подзапроса в условии where:

УДАЛИТЬ  ИЗ  mytable  WHERE  id  IN  (  ВЫБРАТЬ  идентификатор  ИЗ  mytable2  );

Удалите строки из mytable, используя список значений:

DELETE  FROM  MyTable  WHERE  ID  IN  (  значение1 ,  значение2 ,  значение3 ,  value4 ,  value5  );

Пример со связанными таблицами [ править ]

Предположим, есть простая база данных, в которой перечислены люди и адреса. По одному адресу может проживать более одного человека, а один человек может проживать по нескольким адресам (это пример отношения « многие ко многим» ). В базе данных есть только три таблицы, person , address и pa , со следующими данными:

Таблица pa связывает таблицы людей и адресов, показывая, что Джо, Боб и Энн все живут на Мэйн-стрит 2001, но Джо также поселяется на бульваре Пико.

Чтобы удалить joe из базы данных, необходимо выполнить два удаления:

 УДАЛИТЬ  ОТ  человека,  ГДЕ  pid = 1 ;  УДАЛИТЬ  ИЗ  pa  ГДЕ  pid = 1 ;

Для сохранения ссылочной целостности записи Джо должны быть удалены как у человека, так и у отца . Средства, с помощью которых поддерживается целостность, могут проявляться по-разному в различных системах управления реляционными базами данных. [ необходима цитата ] Возможно, помимо трех таблиц, база данных также была настроена с помощью триггера, так что всякий раз, когда строка удаляется от человека, любые связанные строки будут удалены из pa . Затем первое утверждение:

 УДАЛИТЬ  ОТ  человека,  ГДЕ  pid = 1 ;

будет автоматически вызывать второй:

 УДАЛИТЬ  ИЗ  pa  ГДЕ  pid = 1 ;

Связанные команды [ править ]

Удаление всех строк из таблицы может занять очень много времени. Некоторые СУБД [ требуется пояснение ] предлагают команду TRUNCATE TABLE, которая работает намного быстрее, поскольку она только изменяет метаданные и обычно не тратит время на принудительное применение ограничений или запуск триггеров.

DELETE удаляет только строки. Для полного удаления таблицы можно использовать команду DROP .

Ссылки [ править ]