SQL — Команда TRUNCATE TABLE. Truncate table sql описание


Инструкция TRUNCATE TABLE в Transact-SQL | Info-Comp.ru

В Microsoft SQL Server для удаления данных из таблицы можно использовать инструкцию DELETE, но также можно использовать и инструкцию TRUNCATE TABLE, поэтому сегодня мы поговорим о том, чем отличается TRUNCATE TABLE от DELETE и какие преимущества нам дает эта инструкция.

Если у Вас есть таблица в БД, данные которой Вы (или пользователи) периодически полностью удаляете с помощью инструкции DELETE, то данный материал будет Вам интересен, так как в нем мы рассмотрим альтернативную возможность удаления данных, а именно инструкцию TRUNCATE TABLE, которая в некоторых случаях будет предпочтительней, чем DELETE.

Что такое TRUNCATE TABLE?

TRUNCATE TABLE – это SQL инструкция в языке Transact-SQL, которая удаляет все строки в таблице, не записывая в журнал транзакций удаление отдельных строк данных. TRUNCATE TABLE похожа на инструкцию DELETE без предложения WHERE, но она выполняется быстрее и требует меньше ресурсов.

Преимущества TRUNCATE TABLE и отличия от DELETE

  • TRUNCATE TABLE требуется меньший объем журнала транзакций, так как она в отличие от инструкции DELETE не заносит в журнал транзакций запись для каждой удаляемой строки, напомню что DELETE производит удаление по одной строке отражая все действия в журнале транзакций;
  • TRUNCATE TABLE выполняется быстрее по сравнению с инструкцией DELETE также за счет меньшего использования журнала транзакций;
  • Используется меньшее количество блокировок. Инструкция TRUNCATE TABLE в отличие от инструкции DELETE блокирует таблицу и страницу, а не каждую строку таблицы;
  • Если инструкция TRUNCATE TABLE применяется к таблице, которая содержит столбец идентификаторов, счетчик этого столбца сбрасывается до начального значения. Инструкция DELETE не сбрасывает счетчик столбца идентификаторов;
  • Инструкция TRUNCATE TABLE не активирует триггер, поскольку она не записывает в журнал удаление отдельных строк.

Примечание! Преимущества TRUNCATE TABLE в некоторых случаях, как Вы понимаете, могут быть и недостатками.

Инструкция TRUNCATE TABLE удаляет все строки (данные) таблицы, но структура таблицы: столбцы, ограничения, индексы и так далее сохраняются. Для того чтобы полностью удалить таблицу и ее определение, следует использовать инструкцию DROP TABLE.

Ограничения TRUNCATE TABLE

  • Если на таблицу ссылается ограничение FOREIGN KEY, то TRUNCATE TABLE использовать нельзя;
  • Если таблица является частью индексированного представления, то TRUNCATE TABLE также нельзя использовать;
  • Если таблица опубликована с использованием репликации транзакций или репликации слиянием, то инструкцию TRUNCATE TABLE использовать нельзя.

Пример использования инструкции TRUNCATE TABLE

Для примера давайте создадим таблицу со столбцом идентификаторов, затем добавим в нее данные и удалим их инструкцией TRUNCATE TABLE, затем снова добавим данные и проверим, сбросился ли счетчик столбца идентификаторов на начальное значение.

Примечание! В качестве SQL сервера у меня выступает версия Microsoft SQL Server 2016 Express.

--Создаем тестовую таблицу CREATE TABLE TestTable( ProductId INT IDENTITY(1,1) NOT NULL, ProductName VARCHAR(100) NOT NULL ) --Добавляем данные INSERT INTO TestTable VALUES ('Компьютер'), ('Монитор'), ('Принтер') --Выборка данных SELECT * FROM TestTable --Удаляем все данные инструкцией TRUNCATE TABLE TRUNCATE TABLE TestTable --Снова добавляем данные INSERT INTO TestTable VALUES ('Компьютер'), ('Монитор'), ('Принтер') --Выборка данных SELECT * FROM TestTable

Как видим, счетчик сброшен, инструкция TRUNCATE TABLE отработала.

В своей книге «Путь программиста T-SQL» я подробно рассказываю про все конструкции языка T-SQL, рекомендую почитать!

На этом у меня все, пока!

Похожие статьи:

info-comp.ru

TRUNCATE TABLE | Oracle PL/SQL •MySQL •SQL Server

Это учебное пособие Oracle объясняет, как использовать оператор Oracle TRUNCATE TABLE с синтаксисом, примерами и практическими упражнениями.

Описание

Оператор TRUNCATE TABLE используется для удаления всех записей из таблицы в Oracle. Он выполняет ту же функцию что и DELETE, только без условий WHERE.

Предупреждение: Если вы очистите таблицу с помощью оператора TRUNCATE TABLE, то ее откат невозможен.

Синтаксис

Синтаксис для оператора TRUNCATE TABLE в Oracle/PLSQL:

TRUNCATE TABLE [schema_name.]table_name[ PRESERVE MATERIALIZED VIEW LOG | PURGE MATERIALIZED VIEW LOG ][ DROP STORAGE | REUSE STORAGE ] ;

Параметры или аргументы

schema_name

Необязательный. Если указано, то это имя схемы к которой принадлежит таблица.

table_name

Таблица, которую вы хотите очистить.

PRESERVE MATERIALIZED VIEW LOG

Необязательный. Если указано, то materialized view log будет сохранено, когда таблица очищается. Это поведение по умолчанию.

PURGE MATERIALIZED VIEW LOG

Необязательный. Если указано, то materialized view log будет очищен, когда таблица очищается.

DROP STORAGE

Необязательный. Если указано, всё хранилище очищающихся строк будет высвобождено, за исключением пространства, которое было выделено в MINEXTENTS. Это поведение по умолчанию.

REUSE STORAGE

Необязательный. Если указано, всё хранилище очищающихся строк останется распределенным в таблице.

Пример

В Oracle очищение таблицы является быстрым способом, чтобы очистить записи из таблицы, если вам не нужно беспокоиться об откате. Одной из причин является то, что, когда таблица очищается, это не влияет на какие-либо из индексов, триггеров или зависимостей таблицы. Очищение таблицы также намного проще, чем удаление таблицы и ее воссоздания.

Рассмотрим пример того, как использовать оператор TABLE TRUNCATE в Oracle/PLSQL.

Например:

TRUNCATE TABLE customers;

TRUNCATE TABLE customers;

Этот пример очистит таблицу customers, и удалит все записи из этой таблицы.

Было бы равносильно следующему предложению DELETE в Oracle:

Оба эти примера приведут к тому, что все данные из таблицы customers удаляется. Основное различие между ними состоит в том, что вы можете выполнить откат DELETE если выберите, но вы не сможете выполнить откат оператора TRUNCATE TABLE.

Рассмотрим еще один пример, с префиксом таблицы — именем схемы.

Например:

TRUNCATE TABLE totn.suppliers;

TRUNCATE TABLE totn.suppliers;

Этот пример очистит таблицу с именем suppliers в схеме под названием totn. Перед тем, как очистить таблицу в другой схеме, вы должны иметь необходимые привилегии, такие как DROP ANY TABLE.

oracleplsql.ru

TRUNCATE TABLE оператор MySQL | Oracle PL/SQL •MySQL •SQL Server

В этом учебном пособии вы узнаете, как использовать MySQL оператор TRUNCATE TABLE с синтаксисом и примерами.

Описание

TRUNCATE TABLE используется для очищения всех записей из таблицы в MySQL. Он выполняет ту же функцию, что и оператор DELETE, без предложения WHERE.

Предупреждение. Если вы полностью очищаете таблицу, то оператор TRUNCATE TABLE нельзя откатить.

Синтаксис

Синтаксис TRUNCATE TABLE в MySQL:TRUNCATE TABLE [database_name.]table_name;

Параметры или аргументы

database_name — необязательный. Если указан, то это имя базы данных.table_name — таблица, которую вы хотите очистить.

Примечание

  • Когда вы очищаете таблицу, счетчики AUTO_INCREMENT в таблице будут сброшены.
  • MySQL очищает таблицу, удаляя и создавая таблицу вновь. Таким образом, триггеры DELETE для таблицы не срабатывают во время очистки.
  • Начиная с MySQL 5.5, вы не можете очистить таблицу InnoDB, на которую ссылается внешний ключ в другой таблице.
  • Начиная с MySQL 5.6, вы не можете очистить таблицу NDB, на которую ссылается внешний ключ в другой таблице.

Пример

В MySQL очистка таблицы — это быстрый способ очистить записи из таблицы, если вам не нужно беспокоиться об откате. В большинстве случаев MySQL обрабатывает процесс очистки таблицы несколько иначе, чем другие базы данных, такие как Oracle или SQL Server.

Рассмотрим пример использования TRUNCATE TABLE в MySQL.Например:

TRUNCATE TABLE customers;

TRUNCATE TABLE customers;

В этом примере очищается таблица customers, и удаляется все записи из этой таблицы.Он будет эквивалентен следующему оператору DELETE в MySQL:

Оба этих оператора приведут к удалению всех данных из таблицы customers. Основное различие между ними состоит в том, что оператор DELETE вы можете откатить, если выберете, но вы не сможете откатить оператор TRUNCATE TABLE. Так что будьте предельно внимательны.

Рассмотрим еще один пример, где мы используем префикс имени таблицы с именем базы данных.Например:

TRUNCATE TABLE best.products;

TRUNCATE TABLE best.products;

В этом примере очищается таблица, называемая products в базе данных best.

oracleplsql.ru

Использование команды SQL TRUNCATE TABLE для удаления данных из таблицы

От автора: команда SQL TRUNCATE TABLE используется для удаления всех данных из существующей таблицы. Вы также можете использовать команду DROP TABLE для удаления всей таблицы, но это приведет к полному удалению всей структуры таблицы из базы данных. Если вы хотите сохранить некоторые структурные данные, вам потребуется создать эту таблицу еще раз.

Синтаксис

Основной синтаксис команды TRUNCATE TABLE следующий.

TRUNCATE TABLE table_name;

TRUNCATE TABLE  table_name;

Пример

Рассмотрим таблицу CUSTOMERS, содержащую следующие записи:

Бесплатный курс по PHP программированию

Освойте курс и создайте динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

Ниже приведен пример команды Truncate.

TRUNCATE TABLE CUSTOMERS;

TRUNCATE TABLE CUSTOMERS;

После этого таблица CUSTOMERS будет очищена и результат выполнения инструкции SELECT будет выглядеть следующим образом:

SELECT * FROM CUSTOMERS; Empty set (0.00 sec)

SELECT * FROM CUSTOMERS;

Empty set (0.00 sec)

Источник: https://www.tutorialspoint.com/

Редакция: Команда webformyself.

Бесплатный курс по PHP программированию

Освойте курс и создайте динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

Хотите изучить MySQL?

Прямо сейчас посмотрите 24-х часовой курс по базе данных MySQL!

Смотреть курс

webformyself.com