Что делает по- TRUNCATE
другому, чтобы бросить?
Я считаю, что он удаляет все данные в таблице, но сохраняет имя таблицы в базе данных, а также DROP
удаляет все данные и таблицу. Это правильно ?
mysql
truncate
drop-table
user1829823
источник
источник
Ответы:
DELETE - ЯЗЫК УПРАВЛЕНИЯ ДАННЫМИ (DML)
DELETE
Заявление в любом RDBMS считается DML заявление. Этот тип оператора, также известный как CRUD (Создать, Читать, Обновить, Удалить), предназначен для манипулирования данными в базе данных без влияния на базовую структуру объектов. На практике это означает:DELETE
Заявление может быть доработано с помощью предиката либо черезWHERE
илиJOIN
удалить некоторые или все строки в таблице.DELETE
Заявление будет зарегистрировано в базе данных и может быть свернуто в рамках транзакции , если оператор не может .DELETE
принимает блокировки на уровне строк для данных, которые они удаляют, хотя при необходимости это может возрасти.DELETE
может быть «медленным» (это относительно), но более безопасным, потому что он мелкозернистый.TRUNCATE - ЯЗЫК ОПРЕДЕЛЕНИЯ ДАННЫХ (DDL)
TRUCNATE
считается оператором DDL , означающим, что он предназначен для изменения способа определения объектов в базе данных. Обычно операторы DDL являютсяCREATE
,ALTER
илиDROP
, ноTRUNCATE
служат определенной цели, «сбросом» таблицы путем удаления всех строк. Способы этого различаются между движками СУБД, и я бы рекомендовал взглянуть на специфику MySQL . Практические последствияTRUNCATE
:TRUNCATE
не может быть мелкозернистым. В случае успеха он удалит все строки из вашей таблицы.TRUNCATE
обычно не регистрируется. Это зависит от РСУБД, и я бы посоветовал вам более конкретно взглянуть на то, как MySQL справляется с этим. (Подсказка, это зависит от версии.)TRUNCATE
требует выполнения блокировки метаданных таблицы. То, как это на самом деле реализовано, может быть специфичным для СУБД, но, по сути,TRUNCATE
процесс должен предотвращать перехват других процессов с таблицей для выполнения своего DDL.TRUNCATE
будет быстрее, чем aDELETE
, но менее безопасен.DROP TABLE - ЯЗЫК ОПРЕДЕЛЕНИЯ ДАННЫХ (DDL)
DROP TABLE
идет дальше, чемTRUNCATE
в том, что фактически полностью удаляет таблицу из базы данных. Это включает в себя удаление всех связанных объектов, таких как индексы и ограничения. Если вы отбросите таблицу, вы удалите не только все данные, но и структуру. Обычно это делается, когда таблица больше не нужна. Основная проблема заключается в том, что, поскольку aDROP
является DDL, вы, как правило, не можете отменить его . Некоторые движки СУБД позволяют вам заключать DDL в транзакцию, чтобы вы могли откатить ее, но это не считается наилучшей практикой и ее следует избегать.источник
Хотя я не могу говорить о MySQL, вот небольшая таблица, в которой сравниваются некоторые аспекты усечения и удаления в Oracle.
Информация, собранная из этой книги: http://amzn.com/0470395125
Надеюсь, это поможет любым пользователям Oracle, которые наткнулись на эту страницу, как я. Пожалуйста, не стесняйтесь указать, какие из этих пунктов верны в MySQL, если таковые имеются,
источник
DROP TABLE TableName
-> удалить таблицу из базы данных.TRUNCATE TABLE TableName
-> удалить данные таблицы, безусловно ... и сброситьIDENTITY
начальное значение, если в таблице естьIDENTITY
поле.источник
DELETE
: Команда DML, если вы выполняете команду удаления, удаляйте только ДАННЫЕ, не разбирая таблицу. Структура. Мы можем ОТКРЫТЬ строку данных в порядке строкиTRUNCATE
: Команда DDL, если вы выполняете команду Truncate, удаляете только ДАННЫЕ без удаления таблицы. Структура, которую мы не можем откатить, урезать данные, удалить данные в режиме PAGE BY PAGE, урезать быстрее, чем удалить запрос.DROP
:, Команда DDL, если вы выполняете команду DROP, чтобы удалить (удалить) данные и общую структуру таблицы, мы также не сможем откатить данныеисточник