TRUNCATE / DELETE / DROP или как очистить таблицу

ИМЕЕМ:
Таблица MSG (сообщения) с большим количеством записей.
SQL> CREATE TABLE msg (id INTEGER NOT NULL PRIMARY KEY,
                       description CHAR (50) NOT NULL,
                       date_create DATE);

ЗАДАЧА:
Необходимо очистить таблицу от данных

РЕШЕНИЕ:
Для решения данной задачи есть несколько способов. Ниже описание и пример каждого из них.

Способ №1 - используем DELETE 
Самый простой способ (первый вариант) - выполнение оператора удаления записи. При его выполнении вы будете видеть результат (сколько записей удалено). Удобная штука когда необходимо точно знать и понимать правильные ли данные удалены. НО имеет недостатки перед другими вариантами решения поставленной задачи.

SQL> DELETE FROM msg; --Удалит все строки в таблице

SQL> DELETE FROM msg WHERE date_create = '2019.02.01'; --Удалит все строки у которых дата создания "2019.02.01" 

Способ №2 - используем TRUNCATE 
Использование оператора DML для очистки всех строк в таблице.

SQL> TRUNCATE TABLE msg;
Особенности использования данного оператора:
  • Его нет в Firebird, поэтому пользуемся первым и третьим вариантом.
  • После выполнения нельзя откатить транзакцию, так как это DML
  • Ну и увидеть сколько реально записей было удалено не получится.

Способ №3 - используем DROP
Ну и третий вариант, и он, пожалуй, самый жесткий быстрый - это удаление таблицы и повторное создание, с восстановлением всей структуры (PK, FK, index, и другое). 

SQL> DROP TABLE msg;
SQL> CREATE TABLE msg (id INTEGER NOT NULL PRIMARY KEY,                                      description CHAR (50) NOT NULL,
                       date_create DATE);

При необходимости, можно предварительно создать таблицу с данными которые нам нужны, после чего выполнить удаление:

SQL> Сreate TABLE msg_temp (select * FROM msg WHERE date_create = '2019.02.01');
SQL> DROP TABLE msg;
SQL> CREATE TABLE msg (id INTEGER NOT NULL PRIMARY KEY,
                       description CHAR (50) NOT NULL,
                       date_create DATE);

Комментарии

Популярные сообщения из этого блога

ЭС с ЦБ РФ. РЕКВИЗИТНЫЙ СОСТАВ ЭС

ТФФ 35.0. Полный перечень документов альбома ТФФ (Таблица 2)

Linux (РедОС). Сброс пароля

ТФФ 34.0. Полный перечень документов альбома ТФФ (Таблица 2)

ТФФ 32.0. Полный перечень документов альбома ТФФ (Таблица 2)