В чем разница между усечением и удалением оракула

Обновлено: 02.07.2024

В моей предыдущей статье я дал представление о различных операторах SQL с примерами. В этой статье я хотел бы дать вам ответ на наиболее часто задаваемый вопрос интервью - Разница между командами Удалить и Усечение в SQL. Я приведу вам разные примеры. команды «Удалить», а также команды «Усечение» с ее примерами. Затем я дам вам разницу между удалением и усечением в табличном формате. В последнем разделе я объясню различные вопросы интервью, связанные с разницей между удалением и усечением, чтобы пользователь получил точное представление об этом. разница между удалением и усечением.

Что такое команда удаления в SQL?

Команды усечения и удаления используются для удаления или стирания данных из таблицы. Хотя по своей природе они показывают одно и то же, их функциональные возможности сильно отличаются друг от друга. Этот раздел дает вам представление о команде удаления в SQL с примерами из реальной жизни. .Я хотел бы дать вам то же самое, чтобы вы получили представление о команде Удалить в SQL:

1. Удалить — это оператор языка манипулирования данными, который используется для управления данными из таблицы.

2. Оператор Delete не изменяет никаких свойств базы данных.

3. Оператор Delete используется для удаления строк из таблицы. Вы можете использовать критерии фильтрации или условия where для удаления определенных строк из таблицы.

4.Если Вы не можете указать условие where, все строки будут удалены из таблицы.

5.После использования удаления необходимо зафиксировать изменения, чтобы сделать их постоянными.

6. Он удаляет данные из таблицы построчно, поэтому Удалить выполняется медленнее, чем усечение.

7.Каждая удаленная строка заблокирована, поэтому требуется больше блокировок.

8.Эта операция использует все триггеры удаления.

Синтаксис:

—удалить все записи из таблицы

Удалить из имени таблицы;

Удалить * из имени таблицы;

—удалить некоторые записи из таблица с использованием условия where

Удалить из tablename

Где имя столбца= условие;

Пример 1 из реальной отрасли:

Предположим, вы хотите удалить или удалить записи, в которых имя сотрудника — «Амит» и «Рохан»

Название таблицы: Отдел

< td width="142">Рохан < tr>
Идентификатор отдела Имя сотрудника
100 Амит
100
101 Рохит
102 Нет

Удалить из отдела, в котором находится имя сотрудника («Амит», «Рохан»);

< td width="142">Нулевой
Идентификатор отдела Имя сотрудника
101 Рохит
102

При откате транзакции:

Затем он откатит все записи из таблицы:

< td width="142">Рохан < tr>
Идентификатор отдела Имя сотрудника
100 Амит
100
101 Рохит
102 Нет

Пример 2 из реальной отрасли:

Предположим, пользователь хочет удалить все записи из таблицы "Отдел".

Название таблицы: Отдел

< td width="142">Рохан < tr>
Идентификатор отдела Имя сотрудника
100 Амит
100
101 Рохит
102 Нет

Удалить из отдела;

При откате транзакции:

Затем он откатит все записи из таблицы:

< td width="142">Рохан < tr>
Идентификатор отдела Имя сотрудника
100 Амит
100
101 Рохит
102 Нет

Операция удаления используется для удаления записей из tablename с определенным условием.

Что такое команда Truncate в SQL?

1.Truncate — это команда языка определения данных, которая используется для удаления всех строк из таблицы.

<р>2.Вы не можете фильтровать строки при усечении данных из базы данных, потому что это не позволяет использовать предложение where.

3.Truncate не возвращает количество строк, усеченных из таблицы.

4.Truncate перераспределяет память для этого объекта, и другой объект будет использовать это перераспределенное пространство.

Разница между удалением усечения и удалением в sql

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

6.Усекать быстрее, чем удалять.

7.Вы не можете использовать условия в случае усечения.

8.truncate======он выполнит 2 действия
1.удалит таблицу из базы данных
2.после этого он воссоздаст объект с метаданными
освобождает место занятое строками, мы можем использовать это пространство для другой цели, используя команду повторного использования. (Предложено Моханом от читателей)

Синтаксис:

Пример из реальной отрасли:

Название таблицы: Отдел

< td width="142">Рохан < tr>
Идентификатор отдела Имя сотрудника
100 Амит
100
101 Рохит
102 Нет

Усечь таблицу отдела;

Поэтому все значения усекаются.

Если мы хотим проверить количество этой таблицы:

Выберите count(*) из отдела;

отображено 0 строк

Используйте Откат и проверьте количество:

Откатить;

Выбрать количество(*) из отдела;

отображается 0 строк

После оператора отката счетчик также равен нулю. Таким образом, таблица усечения используется для усечения всех строк из таблицы. В этом разделе представлена ​​информация об операторе усечения в SQL.

Разница между удалением и усечением

Разница между удалением и усечением в табличном формате:

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

Выше приведены некоторые важные пункты раздела Различия между командами Удалить и Усечение в SQL в табличном формате.

Некоторые наиболее важные вопросы интервью:

1.В чем разница между усечением и удалением?

Ответ :

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

2.Что быстрее: обрезать или удалить?

Ответ :

Команда усечения выполняется быстрее, чем удаление, по следующим причинам:

  1. Команда Truncate используется непосредственно для таблицы, а данные таблицы усекаются напрямую.
  2. Он обрабатывает строки в массовом формате.

3.В чем недостаток использования команды truncate?

Ответ:

Команда Truncate используется непосредственно для усечения или удаления данных из таблицы. Ее нельзя использовать с предложением where, чтобы пользователь не мог использовать ее для фильтрации данных.

4. Если есть сценарий, в котором пользователю необходимо очистить 1 миллион данных из таблицы сотрудников, какую команду вы предпочтете? Почему?

Ответ :

Учитывая настройку производительности данных, я могу использовать команду truncate. Я буду использовать эту команду по следующим причинам:

  1. Команда Truncate используется непосредственно для таблицы, а данные таблицы усекаются напрямую.
  2. Он обрабатывает строки в массовом формате.

Это один из наиболее важных вопросов интервью, связанных с командами усечения и удаления в SQL. Надеюсь, вам понравилась эта статья о разнице между командами Delete и truncate. Если у вас есть какие-либо проблемы или вопросы с тем же любезным комментарием в разделе комментариев.

2 ответа на вопрос «В чем разница между удалением и усечением в SQL с примерами»

Хорошее объяснение. Очень точное и ясное.
Небольшое изменение в табличной форме разницы между Truncate и Delete
Под удалением нужно сделать небольшое исправление.
Вместо Delete срабатывает упомянутый триггер, так как Trigger срабатывает триггер.

Спасибо, Рагхавендра, за ваши ценные предложения. Я изменил его соответствующим образом.

В чем разница между TRUNCATE и DELETE в SQL?

Если ваш ответ относится к конкретной платформе, укажите это.

Все ответы зависят от платформы. В стандартном SQL нет команды TRUNCATE.Таким образом, это проприетарная функция, и для каждого поставщика СУБД она означает разное.

Ответ зависит от реализации, как и должно быть, поскольку, как указал sqlvogel, это нестандартная команда (TRUNCATE). Либо оставьте этот тег с тегом «оракул», либо давайте сделаем его ответом в стиле сообщества вики и укажите последствия для каждой основной СУБД (Oracle, MS-MSQL, PostgreSQL все реализуют TRUNCATE.)

Если транзакция выполнена, значит COMMITED, то мы не можем откатить команду TRUNCATE, но мы все еще можем откатить команду DELETE из LOG-файлов, так как DELETE записывает их в лог-файл на случай, если в будущем потребуется откат из LOG-файлов. .

32 Ответа 32

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

Если вы хотите быстро удалить все строки из таблицы, и вы действительно уверены, что хотите это сделать, и у вас нет внешних ключей для таблиц, то TRUNCATE, вероятно, будет быстрее. чем УДАЛИТЬ.

Необходимо учитывать различные системные проблемы, как описано ниже.

Удалить — это DML, усечь — это DDL (что такое DDL и DML?)

Варьируется поставщиком

SQL*сервер

Усечение можно отменить.

PostgreSQL

Усечение можно отменить.

Оракул

Поскольку TRUNCATE — это DDL, он включает две фиксации: одну до и одну после выполнения оператора. Таким образом, усечение нельзя откатить, а сбой в процессе усечения все равно приведет к фиксации.

Тем не менее, см. Flashback ниже.

Удаление не восстанавливает место, усечение восстанавливает место

Оракул

Если вы используете предложение REUSE STORAGE, то сегменты данных не перераспределяются, что может быть немного более эффективным, если таблица должна быть перезагружена с данными. Верхняя отметка сброшена.

Удалить можно для удаления всех строк или только части строк. Усечение удаляет все строки.

Оракул

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

Удалить можно применить к таблицам и таблицам внутри кластера. Truncate применяется только к таблицам или ко всему кластеру. (Может быть специфичным для Oracle)

Оракул

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

Воспоминание работает при удалении, но усечение предотвращает возврат к состояниям до операции.

Однако, начиная с 11gR2, функция FLASHBACK ARCHIVE позволяет это делать, за исключением Express Edition

Оракул

Удаление таблицы может быть предоставлено другому пользователю или роли, но усечение не может быть разрешено без использования разрешения DROP ANY TABLE.

Удалить создает небольшое количество повторов и большое количество отмен. Truncate создает незначительное количество каждого из них.

Оракул

Операция усечения делает неиспользуемые индексы снова пригодными для использования. Удалить нет.

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

Оракул

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

Триггеры DML не срабатывают при усечении.

Оракул

Доступны триггеры DDL.

Оракул

Усечение не может быть выполнено через ссылку на базу данных.

SQL*сервер

Truncate сбрасывает последовательность для типов столбцов IDENTITY, а удаление — нет.

В большинстве реализаций оператор DELETE может возвращать клиенту удаленные строки.

например. в подпрограмме Oracle PL/SQL вы можете:

Не понимаю ваше 4-е утверждение: если я скажу DELETE [] FROM Table; тогда *все строки в этой таблице будут удалены, если FK не остановит это. Кстати, я думаю, это зависит от SQL Server, вы не можете использовать TRUNCATE для таблиц с FK.

Еще несколько комментариев: я не согласен с вашим третьим утверждением, если только оно не относится к Oracle. По крайней мере, с SQL S. Если вы DELETE или TRUNCATE, вы не восстанавливаете пространство (т. е. файлы базы данных не сжимаются на жестком диске), если вы специально не попросите об этом.

DELETE возвращает количество удаленных строк, а TRUNCATE — нет. Это очень глупый момент, но его стоит упомянуть :)

Разница между усечением и удалением указана ниже:

@jWeaver: это означает, что когда вы устанавливаете для свойства «Спецификация удостоверения» значение «Истина» для поля первичного ключа, поэтому, когда вы вставляете данные в эту таблицу, столбец первичного ключа содержит значение, например 1,2,3,4,5.(если идентификатор начинается с 1, а начальное число равно 1), и когда вы усекаете таблицу, она теряет все значение идентификатора, поэтому, когда вы снова начинаете вставлять данные в эту таблицу, они начинаются с 1, а не с того места, где они остались последними. В DELETE все наоборот, оно сохраняет значение идентификатора даже после выполнения оператора DELETE. Приносим извинения за ошибку второй точки сравнения в столбце DELETE на изображении выше.

И TRUNCATE, и DELETE можно отменить в SQL SERVER. И во 2-й строке УДАЛИТЬ дозу не сбросить личность. Теперь, как вы можете отредактировать этот пост? Это плохой момент в использовании изображений в StackOverflow.

Команда DROP удаляет таблицу из базы данных. Все строки таблиц, индексы и привилегии также будут удалены. Триггеры DML срабатывать не будут. Откат операции невозможен.

ОБРЕЗАТЬ

TRUNCATE удаляет все строки из таблицы. Операция не может быть отменена, и никакие триггеры не сработают. Таким образом, TRUNCATE работает быстрее и не использует столько места для отмены, как DELETE. При усечении будет добавлена ​​блокировка на уровне таблицы.

УДАЛИТЬ

Команда DELETE используется для удаления строк из таблицы. Предложение WHERE можно использовать только для удаления некоторых строк. Если условие WHERE не указано, будут удалены все строки. После выполнения операции DELETE вам необходимо СОВЕРШИТЬ или ОТМЕНИТЬ транзакцию, чтобы сделать изменение постоянным или отменить его. Обратите внимание, что эта операция вызовет срабатывание всех триггеров DELETE в таблице. При удалении будет добавлена ​​блокировка на уровне строки.

Все хорошие ответы, к которым я должен добавить:

Поскольку TRUNCATE TABLE является командой DDL (язык определения данных), а не DML (язык манипулирования данными), триггеры удаления не выполняются.

А, триггеры . неплохо подмечено. Я добавлю это в список, который я составил, и отмечу вас, Полара, если вы не против.

SQL Server не позволит вам обрезать таблицу с внешними ключами, поэтому точка каскадирования может быть спорной, в зависимости от платформы.

введите здесь описание изображения

В SQL Server или MySQL, если есть PK с автоматическим увеличением, усечение сбросит счетчик.

Чтобы уточнить, это для SQL Server, если в таблице есть столбец, определенный как IDENTITY. Удалить сохранит последний автоматически назначенный идентификатор, а усечение сбрасывает счетчик.

+1 true, и он сбрасывает его на 0. Если вместо этого вы хотите, чтобы он был равен 1: DBCC CHECKIDENT (table_name, RESEED, 1)

Я добавил это в ответ сообщества и сделал его более удобным для документирования проблем, связанных с поставщиком

ОБРЕЗАТЬ

Запрос TRUNCATE SQL удаляет все строки из таблицы, не регистрируя удаление отдельных строк.

  • TRUNCATE — это команда DDL.
  • TRUNCATE выполняется с использованием блокировки таблицы, и вся таблица блокируется для удаления всех записей.
  • Мы не можем использовать предложение WHERE с TRUNCATE.
  • TRUNCATE удаляет все строки из таблицы.
  • Минимальное количество записей в журнале транзакций, что повышает производительность.
  • TRUNCATE TABLE удаляет данные, освобождая страницы данных, используемые для хранения данных таблицы, и записывает в журнал транзакций только освобождение страниц.
  • Чтобы использовать Truncate для таблицы, вам необходимо как минимум разрешение ALTER для этой таблицы.
  • Truncate использует меньше места для транзакции, чем оператор Delete.
  • Усечение нельзя использовать с индексированными представлениями.
  • TRUNCATE работает быстрее, чем DELETE.

УДАЛИТЬ

Для выполнения очереди DELETE требуются права на удаление в целевой таблице. Если вам нужно использовать предложение WHERE в DELETE, также требуются разрешения на выбор.

  • DELETE – это команда DML.
  • DELETE выполняется с использованием блокировки строки, каждая строка в таблице заблокирована для удаления.
  • Мы можем использовать предложение where с DELETE для фильтрации и удаления определенных записей.
  • Команда DELETE используется для удаления строк из таблицы на основе условия WHERE.
  • Он ведет журнал, поэтому работает медленнее, чем TRUNCATE.
  • Инструкция DELETE удаляет строки по одной и записывает запись в журнал транзакций для каждой удаленной строки.
  • Сохранение идентификатора столбца. DELETE сохраняет идентификатор.
  • Чтобы использовать Удалить, вам необходимо разрешение DELETE для таблицы.
  • Удалить занимает больше места для транзакции, чем оператор Truncate.
  • Удалить можно с индексированными представлениями.

"Truncate ничего не регистрирует" правильно. Я бы пошел дальше:

Truncate не выполняется в контексте транзакции.

Преимущество усечения над удалением в скорости должно быть очевидным. Это преимущество варьируется от тривиального до огромного, в зависимости от вашей ситуации.

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

TRUNCATE — это оператор DDL, тогда как DELETE — это оператор DML. Ниже приведены различия между ними:

Поскольку TRUNCATE является оператором DDL (язык определения данных), он не требует фиксации, чтобы сделать изменения постоянными. И именно по этой причине строки, удаленные с помощью truncate, нельзя было откатить. С другой стороны, DELETE — это оператор DML (язык манипулирования данными), поэтому для сохранения эффекта требуется явная фиксация.

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

Строки, удаленные оператором TRUNCATE TABLE, не могут быть восстановлены, и вы не можете указать предложение where в операторе TRUNCATE.

Инструкции TRUNCATE не запускают триггеры, в отличие от триггера удаления в инструкции DELETE

Вот очень хорошая ссылка по теме.

Да, DELETE медленнее, TRUNCATE быстрее. Почему?

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

TRUNCATE просто настраивает указатель в базе данных для таблицы (верхняя отметка) и пуф! данные пропали.

Это специфично для Oracle, насколько я знаю.

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

Соответствующая информация ниже взята из сообщения в блоге:

  • Удалить – это команда DML.
  • Операция удаления выполняется с использованием блокировки строки, каждая строка в таблице заблокирована для удаления.
  • Мы можем указать фильтры в предложении where.
  • Удаляет указанные данные, если существует условие.
  • Удаление действий триггера, поскольку операции регистрируются отдельно.
  • Медленнее, чем Truncate, поскольку журналы сохраняются.
  • Truncate — это команда DDL.
  • Усечение таблицы всегда блокирует таблицу и страницу, но не каждую строку. Так как при этом удаляются все данные.
  • Невозможно использовать условие "Где".
  • Удаляет все данные.
  • Truncate table не может активировать триггер, поскольку операция не регистрирует удаление отдельных строк.
  • Быстрее с точки зрения производительности, поскольку не ведет журналы.

Спасибо @Lucas: он встроил контент. Я просто поместил его в кавычку, чтобы было понятно, что он из другого источника.

• Удалить данные: во-первых, обе функции можно использовать для удаления строк из таблицы.
Но DELETE можно использовать для удаления строк не только из таблицы, но и из VIEW или результата OPENROWSET или OPENQUERY в зависимости от возможностей поставщика.

• Предложение FROM: с помощью DELETE вы также можете удалять строки из одной таблицы/представления/набора_строк_ограниченной_функции на основе строк из другой таблицы с помощью другого предложения FROM. В этом предложении FROM вы также можете написать обычные условия JOIN. На самом деле вы можете создать инструкцию DELETE из инструкции SELECT, которая не содержит агрегатных функций, заменив SELECT на DELETE и удалив имена столбцов.
С TRUNCATE вы не можете этого сделать.

• WHERE: TRUNCATE не может иметь условия WHERE, а DELETE может. Это означает, что с помощью TRUNCATE вы не можете удалить определенную строку или определенную группу строк. TRUNCATE TABLE аналогичен оператору DELETE без предложения WHERE.

• Производительность: TRUNCATE TABLE работает быстрее и использует меньше системных ресурсов и ресурсов журнала транзакций. И одна из причин - блокировки, используемые любыми операторами. Оператор DELETE выполняется с использованием блокировки строки, каждая строка в таблице заблокирована для удаления. TRUNCATE TABLE всегда блокирует таблицу и страницу, но не каждую строку.

• Журнал транзакций: оператор DELETE удаляет строки по одной и делает отдельные записи в журнале транзакций для каждой строки.
TRUNCATE TABLE удаляет данные, освобождая страницы данных, используемые для хранения данных таблицы, и записывает в журнал транзакций только освобождение страниц.

• Страницы: после выполнения оператора DELETE таблица может содержать пустые страницы. TRUNCATE удаляет данные, освобождая страницы данных, используемые для хранения данных таблицы.

• Триггер: TRUNCATE не активирует триггеры удаления в таблице. Так что вы должны быть очень осторожны при использовании TRUNCATE. Никогда не следует использовать TRUNCATE, если для таблицы определен триггер удаления, выполняющий некоторые действия по автоматической очистке или записи в журнал при удалении строк.

• Столбец идентификаторов: с TRUNCATE, если таблица содержит столбец идентификаторов, счетчик для этого столбца сбрасывается до начального значения, определенного для столбца. Если начальное значение не было определено, используется значение по умолчанию 1. DELETE не сбрасывает счетчик идентификации.Поэтому, если вы хотите сохранить счетчик идентификаторов, используйте вместо него DELETE.

• Репликация: DELETE можно использовать для таблицы, используемой в репликации транзакций или репликации слиянием.
В то время как TRUNCATE нельзя использовать для таблиц, участвующих в репликации транзакций или репликации слиянием.

• Откат: оператор DELETE можно откатить.
TRUNCATE также можно откатить, если он заключен в блок TRANSACTION и сессия не закрыта. После закрытия сеанса вы не сможете выполнить откат TRUNCATE.

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

Я резюмировал основные различия между командами Truncate и Delete в Oracle.

Обрезать Удалить
Команда DDL Команда DML
Откат невозможен Откат возможен
Связано с фиксацией Необходимо явно зафиксировать после
Срабатывать триггер, связанный с таблицей, не будет Срабатывать триггер, связанный с таблицей
Не может использоваться с предложением where Предложение Where может использоваться
Сброс верхнего предела Нет связи с верхним пределом
Обычно выполняется быстрее, чем удаление Обычно exe работает медленнее, чем усечение
Невозможно выполнить усечение для родительской таблицы с ограничениями Удалить можно применять после удаления дочерних записей

Обратите внимание, что таблица TRUNCATE имеет два варианта

<р>1. Сократить таблицу имя_таблицы;

Усекать таблицу table_name в хранилище для перетаскивания;

(удаляемое хранилище по умолчанию)

Здесь Truncate сбрасывает максимальную отметку

<р>2. Усекать таблицу table_name Хранилище REUSE;

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

Поделиться:

Вот так:

Связанные

Опубликовано sqlandplsql

Чтобы узнать больше об Oracle, SQL, PL SQL, настройке производительности, моделировании баз данных, Ubuntu, MySQL и т. д. Предложения, комментарии, отзывы и рекомендации приветствуются. Просмотреть все сообщения пользователя sqlandplsql

4 мысли о «Разнице между DELETE и TRUNCATE в Oracle»

Удалить
1.Данные DML можно восстановить путем отката перед фиксацией
2.Удалить любое подмножество данных
3.Удаление выполняется медленнее, если в таблице много индексов и триггеров
4.DML срабатывает для метода удаления
5.данные могут быть восстановлены после фиксации с помощью метода ретроспективного анализа
6.верхняя отметка останется прежней
7.захват удаленной информации данных с предложением возврата < бр />8. вы не можете удалить данные, если индекс на основе функции недействителен
9. не может удалить данные из сложных представлений.
10. Пространство не освобождается

Усечение
1. Усеченные данные не могут быть восстановлены, но усеченные данные также регистрируются
2.Усекаются все данные или данные раздела или подраздела.
3. truncate быстрее, так как нам не нужно вести журналы и не срабатывать триггер
4. сбросить отметку максимального уровня, освобождается место, за исключением метода повторного использования
5. не может обрезать таблицу по отдельности, если она является частью кластера
6. не может обрезать таблицу с ограничением ссылочной целочисленности включить
7. если таблица не пуста, непригодные для использования индексы становятся пригодными для использования
8. если индекс домена в таблице недействителен или находится в состоянии in_progess, мы не можем обрезать таблицу
8. мы не можем обрезать простое представление, мы можем обрезать MV, но не простое представление

Я много работал с Oracle и недавно начал больше работать с Teradata. Интересно, что в Teradata нет команды TRUNCATE. Существует команда DELETE ALL вместо обычного удаления, но я не уверен на 100%, что DELETE ALL точно эквивалентно TRUNCATE в Oracle.

В этом разделе мы рассмотрим разницу между удалением и усечением в Oracle SQL.

Разница между удалением и усечением в Oracle

У нас есть разные команды SQL для удаления или удаления данных из таблицы базы данных Oracle. Сегодня мы обсудим ту команду SQL, которая представляет собой команды Удалить и Усечение.

Что такое команда удаления в Oracle?

Удалить — это команда DML. Команда Удалить используется для удаления определенных строк из таблицы с помощью предложения WHERE. Команда Удалить также помогает удалить все строки из таблицы.

Синтаксис команды удаления

Пример команды удаления

Давайте разберемся в приведенном выше утверждении: у меня есть таблица с именем ADD_CART, и я удаляю строки, где product_id будет равен 7.

Что такое команда усечения?

Truncate — это команда DDL. Эта команда используется для удаления всех записей из таблицы. Мы не можем использовать предложение Where в команде truncate.

Синтаксис усечения

Пример усечения

Команда удаления

  1. Удалить – это команда DML.
  2. Удалить используется для удаления отдельной записи, а также всех записей.
  3. Удалить — это не оператор автоматической фиксации.
  4. Удалить также можно с предложением WHERE.
  5. Триггер базы данных срабатывает при удалении инструкции.
  6. Команда удаления выполняется медленно.
  7. Команда удаления может быть откатом.
  8. Команда Удалить не удаляет и не очищает размер табличного пространства. Это означает, что после удаления строк из таблицы остается размер табличного пространства. такой же. Вы можете запустить следующий SQL-запрос, чтобы проверить состояние таблицы.
  9. Мы можем получить информацию об удаленных данных, используя предложение Returning.

Усечь команду

  1. Truncate — это команда DDL.
  2. Truncate используется для удаления всех данных из таблицы.
  3. Truncate — это оператор автоматической фиксации.
  4. Truncate нельзя использовать с предложением WHERE .
  5. Триггер базы данных не срабатывает при усечении оператора.
  6. Команда усечения работает быстрее.
  7. Команда усечения не может быть откатом.
  8. Команда Truncate удаляет размер табличного пространства.

Вывод:- Основываясь на требованиях, вы можете выбрать способ, который необходим для ваших требований. Удалить в основном используется для удаления определенных строк из таблицы, а команда Truncate используется для удаления всех строк из таблицы.

Примечание. Запустите следующий SQL-запрос, чтобы проверить размер табличного пространства.

( выберите segment_name,sum(bytes)/1024/1024/1024 ГБ из dba_segments, где segment_type='TABLE' и segment_name=upper('table_name') сгруппируйте по segment_name; )

На сегодня это все, я думаю, что пост «Основные различия между удалением и усечением в Oracle SQL» будет вам полезен. Если вам нравится этот пост, поделитесь своим мнением в поле для комментариев.

Читайте также: