Jump to content

Удалить (SQL)

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

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

DELETE FROM pies
 WHERE flavor='Lemon Meringue';

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

DELETE FROM trees
 WHERE height < 80;

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

DELETE FROM mytable;

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

DELETE FROM mytable
 WHERE id IN (
       SELECT id
         FROM mytable2
      );

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

DELETE FROM mytable
 WHERE id IN (
       value1,
       value2,
       value3,
       value4,
       value5
      );
[ редактировать ]

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

человек
pid имя
1 Джо
2 Боб
3 Энн
адрес
помогать описание
100 2001 Главная улица
200 Бульвар Пико, 35.
хорошо
pid помогать
1 100
2 100
3 100
1 200

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

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

 DELETE FROM person WHERE pid=1;
 DELETE FROM pa WHERE pid=1;

Чтобы сохранить ссылочную целостность, записи Джо должны быть удалены как из человека , так и из компьютера . Возможно, помимо трех таблиц в базе данных также настроен триггер, чтобы при каждом удалении строки из person все связанные строки удалялись из pa . Тогда первое утверждение:

 DELETE FROM person WHERE pid=1;

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

 DELETE FROM pa WHERE pid=1;
  • Это команда DML (язык манипулирования данными), поэтому для этой команды используются следующие команды: COMMIT и ROLLBACK.
  • Удаляет все или некоторые записи из таблицы. Вы можете ограничить количество удаляемых записей, используя предложение WHERE.
  • Не освобождает место, занимаемое данными в таблице (в TABLESPACE)
  • Не сбрасывает значение SEQUENCE, присвоенное таблице.
  • DELETE работает намного медленнее, чем TRUNCATE.
  • Отменить операцию удаления записей можно с помощью команды ROLLBACK.
  • DELETE требует блокировки общей таблицы.
  • Вызывает огонь
  • DELETE можно использовать в случае: ссылки на базу данных
  • DELETE возвращает количество удаленных записей.
  • Журнал транзакций — DELETE необходимо читать записи, проверять ограничения, обновлять блок, обновлять индексы и генерировать повтор/отмену. Все это требует времени, следовательно, это занимает гораздо больше времени, чем при использовании TRUNCATE.
  • снижает производительность при выполнении — каждая запись в таблице блокируется на удаление
  • DELETE использует больше транзакционного пространства, чем оператор TRUNCATE.
  • DELETE можно использовать с индексированными представлениями.
  • DELETE генерирует небольшое количество операций повтора и большое количество операций отмены.
  • Операция DELETE не делает непригодные для использования индексы снова пригодными для использования.
[ редактировать ]

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

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

  1. ^ «Оператор удаления SQL» . w3schools.com.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e64a7cfd9e654edd20ccfe2d6af9caa2__1702699020
URL1:https://arc.ask3.ru/arc/aa/e6/a2/e64a7cfd9e654edd20ccfe2d6af9caa2.html
Заголовок, (Title) документа по адресу, URL1:
Delete (SQL) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)