Удалить (SQL)

редактировать

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

Содержание
  • 1 Примеры
  • 2 Пример со связанными таблицами
  • 3 Связанные команды
  • 4 Ссылки
Примеры

Удаление строк из пирогов таблицы, где столбец вкус равно «Лимонное безе»:

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

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

УДАЛИТЬ ИЗ деревьев WHERE height < 80;

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

DELETE FROM mytable;

Удалить строки из mytable, используя подзапрос в условии where:

УДАЛИТЬ ИЗ mytable WHERE id IN (SELECT id FROM mytable2);

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

DELETE FROM mytable WHERE id IN (value1, value2, value3, value4, value5);
Пример со связанными таблицами

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

person
pidname
1Joe
2Bob
3Ann
address
помощьописание
1002001 Main St.
20035 Pico Blvd.
pa
pidaid
1100
2100
3100
1200

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

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

DELETE FROM person WHERE pid = 1; УДАЛИТЬ ИЗ pa WHERE pid = 1;

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

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

автоматически вызовет второй:

УДАЛИТЬ ИЗ pa WHERE pid = 1;
Связанные команды

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

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

Ссылки
Последняя правка сделана 2021-05-17 12:04:18
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте