Truncate table sql описание: TRUNCATE TABLE (Transact-SQL) — SQL Server

Как очистить таблицу в MySQL

В статье мы расскажем, как в MySQL очистить таблицу. Мы покажем два способа и объясним разницу между ними.

Очистить таблицу можно при помощи одной из команд:

  • TRUNCATE,
  • DELETE.

Разница между TRUNCATE и DELETE

Команда TRUNCATE является оператором DDL. DDL (Data Definition Language) — это язык определения данных. Операторы языка DDL управляют объектами баз данных: удаляют, создают или переименовывают объекты БД.

Команда DELETE является DML-оператором. DML (Data Manipulation Language) — это язык манипуляции данными. Операторы языка DML позволяют вставить, удалить, изменить, извлечь или обновить данные в базе.

Сравним работу команд:

TRUNCATEDELETE
Удаляет все данные из таблицыМожет удалить часть данных в соответствии с условием WHERE
Удаляет все строки из таблицы освобождением страницУдаляет строки по одной
Записывает в журнал транзакций сведения о каждой удалённой странице, а не строкеДелает запись в журнал транзакций при удалении каждой строки
Работает быстрееРаботает медленнее
Нужны привилегии ALTERНужны привилегии DELETE
Сбрасывает идентификаторыНе сбрасывает идентификаторы
Блокирует таблицу и страницу перед удалениемБлокирует строку перед её удалением

Выбор команды зависит от конкретного случая. Если нужно удалить некоторые строки по условию, подойдёт только DELETE. Если нужно полностью очистить таблицу и сбросить идентификаторы, используйте TRUNCATE.

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

DDLDML
CREATESELECT
ALTERINSERT
DROPUPDATE
TRUNCATEDELETE
COMMENTMERGE
RENAMECALL
EXPLAIN PLAN
LOCK TABLE

Таким образом, операторы DDL управляют структурой, а операторы DML — её содержимым.

Как в MySQL очистить таблицу

Подключитесь к серверу по SSH. Затем подключитесь к MySQL при помощи команды:

mysql -u username -p’password’

Вместо username введите имя пользователя, вместо password — пароль.

Если вы не знаете пароль, попробуйте войти без него при помощи команды:

Если подключение без пароля не настроено, возникнет ошибка:

В этом случае сбросьте пароль от root-пользователя MySQL по инструкции.

TRUNCATE

TRUNCATE полностью очищает таблицу без возможности указать дополнительные условия. Для этого:

  1. 1.

    Выберите базу данных, в которой находится таблица, которую вы хотите очистить:

    USE db_name;

    Вместо db_name введите имя базы данных.

  2. 2.

    Очистите таблицу при помощи команды:

    TRUNCATE table_name;

    TRUNCATE позволяет указать название БД и название таблицы в одном запросе. Для этого используйте команду:

    TRUNCATE db_name.table_name;

    Вместо db_name введите имя базы данных, а вместо table_name введите имя таблицы.

Готово, вы очистили таблицу.

DELETE

  1. 1.

    Выберите базу данных, в которой находится таблица, которую вы хотите очистить:

    USE db_name;

    Вместо db_name введите имя базы данных.

  2. 2.

    Очистите таблицу при помощи команды:

    DELETE FROM table_name;

    Вы можете указать название БД и таблицы в одном запросе:

    DELETE FROM db_name.table_name;

    Вместо db_name введите имя базы данных, а вместо table_name введите имя таблицы.

Готово, вы очистили таблицу при помощи DELETE.

Совет

DELETE позволяет использовать условие WHERE, чтобы удалить некоторые строки из таблицы:

DELETE FROM table_name WHERE condition;

Где condition — это условие.

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

DELETE FROM table_name WHERE id > 1000;

Как проверить содержимое таблицы

Если вы хотите убедиться, что в таблице не осталось данных, воспользуйтесь командой:

SELECT * FROM db_name. table_name;

Вместо db_name введите имя базы данных, а вместо table_name введите имя таблицы.

Если таблица пустая, вывод будет следующим:

Помогла ли вам статья?

Да

раз уже
помогла

truncate table

ГЛАВА 7 Команды

Описание

Удаляет все строки из таблицы.

Синтаксис

truncate table [[база_данных.]владелец.]имя_таблицы

Параметры

имя_таблицы

 

Имя очищаемой таблицы. Если таблица расположена в другой базе

 

данных, то должно быть указано имя базы данных. Если в базе данных

 

существуют несколько таблиц с тем же именем, то должно быть задано

 

имя владельца. По умолчанию владелец – это текущий пользователь,

 

а база_данных – текущая база данных.

Примеры

Удаление всех данных из таблицы authors:

 

truncate table authors

Использование

• Команда truncate table удаляет все строки из таблицы. Структура таб-

 

лицы и все индексы сохраняются, пока не будет выполнена команда

 

drop table. Правила, значения по умолчанию и ограничения, связан-

 

ные со столбцами, остаются связанными, а триггеры продолжают

 

действовать.

 

• Сервер Adaptive Server больше не использует страницы данных

 

о распределении; теперь статистическая информация хранится

 

в таблицах sysstatistics и systabstats.

 

При выполнении команды truncate table статистическая информация

 

больше не удаляется, так что теперь не нужно выполнять команду

 

update statistics после добавления данных.

 

Команда truncate table не удаляет статистическую информацию

 

для таблицы.

 

• Команда truncate table – более быстрый эквивалент команды delete без

 

инструкции where. Команда delete удаляет строки по одной и каждую

 

операцию удаления строки регистрирует в журнале как транзакцию;

 

команда truncate table освобождает целые страницы данных и делает

 

меньше записей в журнале. Обе команды (и delete, и truncate table)

 

делают пространство, которое было занято удаляемыми данными

 

и связанными с ними индексами, доступным для последующего

 

использования.

 

• Поскольку операции удаления отдельных строк не записываются

 

в журнал, команда truncate table не может вызывать срабатывание

 

триггера.

739

truncate table

• Нельзя выполнять команду truncate table, если другая таблица содер- жит строки, ссылающиеся на очищаемую таблицу. Сначала необхо- димо удалить эти строки из внешней таблицы или очистить ее коман- дой truncate, а затем очистить первичную таблицу.

• Нельзя применять команду truncate table к секционированной табли- це. Сначала необходимо преобразовать ее в таблицу без секций с помощью инструкции unpartition команды alter table, а затем выпол-

нить команду truncate table.

 

Чтобы удалить все строки из секционированной таблицы без предва-

 

рительной отмены ее секционирования, можно использовать коман-

 

ду delete без инструкции where. Эта команда, как правило, выполня-

 

ется медленнее команды truncate table, поскольку она удаляет строки

 

по одной и каждую операцию delete регистрирует в журнале.

Стандарты

Уровень соответствия стандарту SQL92: совместимость с базовым

 

уровнем.

Полномочия

Команду create existing table по умолчанию может выполнять владелец

 

таблицы. Это полномочие не может быть передано другим пользова-

 

телям. Чтобы иметь возможность очищать таблицы системного аудита

 

(sysaudits_01, sysaudits_02, sysaudits_03 и т.д. до sysaudits_08), необходи-

 

мо быть администратором безопасности.

См. также

Команды create trigger, delete, drop table

740

 

ГЛАВА 7 Команды

 

 

 

Описание

Возвращает единый набор результатов, объединяющий результаты двух

 

или более запросов. Повторяющиеся строки исключаются из набора

 

результатов, если не указано ключевое слово all.

Синтаксис

select список_выборки [into инструкция]

 

[from инструкция] [where инструкция]

 

[group by инструкция] [havingинструкция]

 

[union [all]

 

select список_выборки

 

[from инструкция] [where инструкция]

 

[group by инструкция] [having инструкция] ]…

 

[order by инструкция]

 

[order by инструкция]

Параметры

union

 

Создает объединение результирующих наборов двух операторов select.

 

all

 

Включает все строки в результаты, не удаляя повторяющиеся строки.

 

into

 

Создает новую таблицу на основе столбцов, указанных в списке вы-

 

борки, и строк, выбранных инструкцией where. В операторе объеди-

 

нения только первый запрос может содержать инструкцию into.

Примеры

Пример 1. Результирующий набор включает содержимое столбцов stor_id

 

и stor_name таблиц sales и sales_east:

 

select stor_id, stor_name from sales

 

union

 

select stor_id, stor_name from sales_east

 

Пример 2. Инструкция into в первом запросе указывает, что в таблицу

 

results должен быть помещен окончательный набор результатов,

 

полученный в результате объединения указанных столбцов таблиц

 

publishers, stores и stores_east:

 

select pub_id, pub_name, city into results

 

from publishers

 

union

 

select stor_id, stor_name, city from stores

 

union

 

select stor_id, stor_name, city from stores_east

741

union

Пример 3. Сначала создается объединение указанных столбцов таблиц sales и sales_east. Затем эти результаты объединяются с данными из таблицы publishers. Наконец, этот результат объединяется с данными из таблицы authors:

 

select au_lname, city, state from authors

 

union

 

((select stor_name, city, state from sales

 

union

 

select stor_name, city, state from sales_east)

 

union

 

select pub_name, city, state from publishers)

Использование

• Общее количество таблиц, указанных во всех частях запроса с

 

оператором union, не должно превышать 256.

 

• Оператор union можно использовать в команде select, например:

 

create view

 

select * from Jan1998Sales

 

union all

 

select * from Feb1998Sales

 

union all

 

• Инструкции order by и compute разрешены только в конце оператора

 

union для упорядочения конечных результатов или вычисления

 

итоговых значений.

 

• Инструкции group by и having могут использоваться только внутри

 

индивидуальных запросов; их нельзя применять для группирования

 

или фильтрации конечного набора результатов.

 

• По умолчанию оператор SQL, содержащий операторы union,

 

обрабатывается слева направо.

 

• Поскольку union – бинарная операция, выражения с более чем двумя

 

запросами должны заключаться в круглые скобки для указания

 

порядка обработки.

 

• Первый запрос в операторе union может содержать инструкцию into,

 

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

 

набор результатов. Оператор into должен быть в первом запросе.

 

Если он указан в каком-либо другом запросе, то будет выдано

 

сообщение об ошибке (см. пример 2).

 

• Оператор union можно использовать внутри оператора insert…select,

 

например:

742

ГЛАВА 7 Команды

insert into sales.overall select * from sales union

select * from sales_east

•Все списки выборки в операторе SQL должны иметь одинаковое количество выражений (имен столбцов, арифметических выражений, агрегатных функций и т.п.). Например, следующий оператор недопустим, потому что первый список выборки содержит больше выражений, чем второй:

/* Пример неправильной команды—списки выборки */ /* несовместимы */

select au_id, title_id, au_ord from titleauthor union

select stor_id, date from sales

•Соответствующие столбцы в списках выборки команд union должны располагаться в одном и том же порядке, поскольку union сравнивает столбцы по одному в порядке, указанном в индивидуальных запро- сах.

•Имена столбцов в таблице, полученной в результате выполнения оператора union, берутся из первого индивидуального запроса. Если необходимо определить новый заголовок столбца для результирую- щего набора, то это должно быть сделано в первом запросе. Ссы- латься на столбец результирующего набора по новому имени (напри- мер в инструкции order by) можно, только если ссылка на это имя была в первом операторе select. Например, следующий запрос корректен:

select Cities = city from stores union

select city from stores_east order by Cities

•Описания столбцов, которые являются частью операции union, необязательно должны быть идентичными. В таблице 7-36 приведены правила относительно типов данных и определений соответствующих друг другу столбцов в индивидуальных запросах.

Таблица 7-36. Результирующие типы данных в операциях union

Типы данных столбцов в

Тип данных соответствующего столбца в

индивидуальных запросах

таблице, полученной в результате операции

 

union

 

 

Несовместимые типы данных (Adaptive Server

Adaptive Server возвращает ошибку.

не преобразует типы данных неявным образом).

 

 

 

743

union

Типы данных столбцов в

Тип данных соответствующего столбца в

индивидуальных запросах

таблице, полученной в результате операции

 

union

 

 

Оба – символьные типы фиксированной

Символьный тип фиксированной длины, равной

длины (длина первого – L1, а второго – L2).

большему из двух значений L1 и L2.

 

 

Оба – двоичные типы фиксированной длины

Двоичный тип фиксированной длины, равной большему

L1 и L2.

из двух значений L1 и L2.

 

 

Один или оба – символьные типы переменной

Символьный тип переменной длины, равной максималь-

длины.

ной из длин столбцов в индивидуальных запросах.

 

 

Один или оба – двоичные типы переменной

Двоичный тип переменной длины, равной максимальной

длины.

из длин столбцов в индивидуальных запросах.

 

 

Оба – числовые типы (например smallint, int,

Тип данных с точностью, равной большей из двух точнос-

float, money).

тей входных столбцов. Например, если столбец в таблице

 

A имеет тип int, а соответствующий столбец в таблице B –

 

тип float, то столбец в результирующей таблице будет

 

иметь тип float, т. к. тип float имеет более высокую точ-

 

ность, чем int.

 

 

Оба столбца не допускают значений NULL.

Не допускает значения NULL.

 

 

 

Ограничения

 

• Оператор union нельзя использовать в подзапросах.

 

• Оператор union нельзя использовать с инструкцией for browse.

 

• Оператор union нельзя использовать в запросах, которые выбирают

 

данные типа text или image.

Стандарты

Уровень соответствия стандарту SQL92: совместимость с базовым

 

уровнем.

 

Ниже приведен список расширений TransactSQL:

 

• использование оператора union в инструкции select команды insert;

 

• указание новых заголовков столбцов в инструкции order by команды

 

select, содержащей оператор union.

См. также

Команды compute, declare, group by и having, order by, select, where

 

Функции convert

744

SQL TRUNCATE() | Изучите примеры оператора TRUNCATE TABLE

TRUNCATE на стандартном языке запросов (SQL) — это оператор языка определения данных (DDL), который используется для удаления полных данных из таблицы базы данных без удаления самой таблицы. Он освобождает место или освобождает место в таблице. Однако следует отметить, что операторы TRUNCATE TABLE могут не иметь возможности отката во многих базах данных SQL. Также являясь оператором DDL, табличный оператор TRUNCATE не требует фиксации на каждом шаге, он автоматически запускает фиксацию в конце выполнения оператора. Следовательно, мы должны быть осторожны при его использовании.

Мы часто путаемся между операторами TRUNCATE TABLE, DELETE TABLE и DROP TABLE в SQL. Поэтому, прежде чем двигаться дальше, обратитесь к этой ссылке для лучшего понимания — https://www. educba.com/sql-delete-statement/

Синтаксис и параметры

Основной синтаксис для использования оператора SQL TRUNCATE TABLE выглядит следующим образом: следует:

 TRUNCATE TABLE имя_таблицы; 

Параметры, используемые в приведенном выше синтаксисе:

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

Как оператор TRUNCATE TABLE работает в SQL?

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

Однако после усечения таблицы ее структура, столбцы, индексы, ограничения, отношения, представления и т. д. сохраняются. Вся операция похожа на стирание данных из таблицы, но с сохранением самой таблицы.

TRUNCATE в языке определения данных (DDL) эквивалентен DELETE в языке манипулирования данными (DML). Единственная разница между ними в том, что последний можно откатить, а первый нельзя. Однако TRUNCATE работает быстрее, чем DELETE, поскольку обычно обходит систему транзакций. Он не регистрируется (он может различаться в разных базах данных SQL) и не следует предикатам, поэтому кажется, что он выполняется быстрее, чем операция DELETE. DELETE — более безопасная и медленная операция.

Примеры SQL TRUNCATE()

Вот несколько примеров, подробно объясняющих оператор TRUNCATE TABLE.

Пример #1

Простой SQL-запрос для иллюстрации функции оператора TRUNCATE TABLE.

Чтобы понять SQL TRUNCATE TABLE, давайте рассмотрим таблицу «клиенты». Данные в таблице выглядят так.

Команда:

 SELECT * FROM public.customers 

Вывод:

Затем запустим оператор TRUNCATE TABLE для таблицы клиента, чтобы удалить все его записи. Мы можем сделать это, используя следующий SQL-запрос.

Команда:

 TRUNCATE TABLE клиентов; 

Вывод:

На рисунке ниже видно, что оператор TRUNCATE TABLE удалил все записи из таблицы клиента. Однако все столбцы, отношения, индексы, структуры таблиц были сохранены в целости и сохранности.

Команда:

 ВЫБЕРИТЕ * ОТ клиентов; 

Выходные данные:

Пример #2

SQL-запрос для иллюстрации различий между операторами SQL DROP TABLE и TRUNCATE TABLE.

Для этого рассмотрим две таблицы «customer_details» и «students». Структура таблиц и данные в них выглядят примерно так. Записи в таблице «customer_details» следующие:

Команда:

 SELECT * FROM PUPLIAN ОТ ПУБЛ.СТУДЕНТОВ 

Вывод:

Далее мы запустим TRUNCATE TABLE для таблицы customer_details и DROP TABLE для таблицы учащегося, а затем проверим разницу.

Команда:

 TRUNCATE TABLE customer_details; 

Вывод:

Команда:

УДАЛИТЬ СТОЛ студенты;

Вывод:

Из изображений выше видно, что оператор DROP TABLE быстрее, чем оператор TRUNCATE TABLE в SQL.

Теперь давайте проверим, что произошло с двумя таблицами после усечения и удаления соответственно.

Команда:

 SELECT * FROM customer_details; 

Вывод:

Команда:

 ВЫБЕРИТЕ * ИЗ студентов; 

Вывод:

Из двух приведенных выше изображений видно, что в операторе TRUNCATE структура таблицы сохранена, удалены только данные/записи из таблицы. В то время как в случае оператора DROP TABLE вся таблица была удалена из базы данных. Все его столбцы, индексы, отношения, привилегии и т. д. удаляются.

Заключение

TRUNCATE TABLE в SQL — это оператор языка определения данных (DDL), который очищает существующую таблицу, удаляя все записи, сохраняя столбцы таблицы, привилегии, индексы, представления, ограничения, отношения и т. д. Это эквивалентно, но быстрее, чем инструкция DELETE в SQL. Однако, в отличие от DELETE, его нельзя откатить.

Рекомендуемые статьи

Мы надеемся, что эта информация EDUCBA о «SQL TRUNCATE()» была вам полезна. Вы можете просмотреть рекомендуемые статьи EDUCBA для получения дополнительной информации.

  1. SQL ВЫБРАТЬ СЛУЧАЙНО
  2. ОБЪЕДИНЕНИЕ
  3. в SQL
  4. JSON в SQL
  5. CAST в PostgreSQL

ОБРЕЗАТЬ

На этой странице

Оператор TRUNCATE удаляет все строки из таблицы. На высоком уровне это работает путем удаления таблицы и воссоздания новой таблицы с тем же именем.

Краткий обзор

TRUNCATETABLEtable_name,CASCADERESTRICT

Требуемые привилегии

Пользователь должен иметь DROP привилегия на столе.

Параметры

Параметр Описание
имя_таблицы Имя таблицы для усечения.
КАСКАД Усечь все таблицы с зависимостями внешнего ключа от усекаемой таблицы.

CASCADE не перечисляет зависимые таблицы, которые он усекает, поэтому его следует использовать с осторожностью.

ОГРАНИЧЕНИЕ (по умолчанию) Не усекать таблицу, если какие-либо другие таблицы зависят от нее по внешнему ключу.

Ограничения

TRUNCATE является изменением схемы и, как таковое, не является транзакционным. Дополнительные сведения о том, как работают изменения схемы, см. в разделе Изменения схемы в сети.

Просмотр изменений схемы

Этот оператор изменения схемы зарегистрирован как задание. Вы можете просматривать длительные задания с помощью ПОКАЗАТЬ РАБОТУ .

Примеры

Усечение таблицы (без зависимостей внешнего ключа)

значок/кнопки/копия
 > SELECT * FROM t1;
 
 +----+------+
| идентификатор | имя |
+----+------+
| 1 | фу |
| 2 | бар |
+----+------+
(2 ряда)
 
значок/кнопки/копия
 > ОБРЕЗАТЬ t1;
 
значок/кнопки/копия
 > SELECT * FROM t1;
 
 +----+------+
| идентификатор | имя |
+----+------+
+----+------+
(0 строк)
 

Усечение таблицы и зависимых таблиц

В этих примерах таблица заказов имеет отношение внешнего ключа к таблице клиентов . Следовательно, возможно только усечение таблицы клиентов при одновременном усечении зависимой таблицы заказов либо с помощью CASCADE , либо явно.

Усечение зависимых таблиц с использованием
CASCADE

Предупреждение:

CASCADE усекает все зависимые таблицы без их перечисления, что может привести к непреднамеренным и трудновосстановимым потерям. Чтобы избежать потенциального вреда, мы рекомендуем в большинстве случаев явно усекать таблицы. Дополнительные сведения см. в разделе Явное усечение зависимых таблиц.

значок/кнопки/копия
 > ОБРЕЗАТЬ клиентов;
 
 pq: на "клиентов" ссылается внешний ключ из таблицы "заказы"
 
значок/кнопки/копия
 > ОТРЕЗАТЬ клиентов КАСКАД;
 
значок/кнопки/копия
 > ВЫБЕРИТЕ * ОТ клиентов;
 
 +----+-------+
| идентификатор | электронная почта |
+----+-------+
+----+-------+
(0 строк)
 
значок/кнопки/копия
 > ВЫБЕРИТЕ * ИЗ заказов;
 
 +----+----------+------------+
| идентификатор | клиент | заказВсего |
+----+----------+-------------+
+----+----------+-------------+
(0 строк)
 
Явно обрезать зависимые таблицы
icon/buttons/copy
 > ОБРЕЗАТЬ клиентов, заказы;
 
значок/кнопки/копия
 > ВЫБЕРИТЕ * ОТ клиентов;
 
 +----+-------+
| идентификатор | электронная почта |
+----+-------+
+----+-------+
(0 строк)
 
значок/кнопки/копия
 > ВЫБЕРИТЕ * ИЗ заказов;
 
 +----+----------+------------+
| идентификатор | клиент | заказВсего |
+----+----------+-------------+
+----+----------+-------------+
(0 строк)
 

См.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *