В чем разница между удалением таблицы и удалением таблицы в SQL Server? - PullRequest
17 голосов
/ 17 июля 2009

В SQL Server, в чем разница между следующими двумя -

  • Щелкните правой кнопкой мыши объект базы данных (таблица / представление) и выберите «Удалить таблицу» (например, таблицу сценариев как -> DROP To -> Новое окно редактора запросов)

  • Щелкните правой кнопкой мыши объект базы данных (таблица / представление) и выберите «Удалить».

Я пробовал их обоих, и оба выполняют одно и то же действие. Есть ли причина иметь два варианта для одной и той же вещи? Является ли опция «Удалить» просто грубым способом удаления объекта БД?

Только для записи - я использую SS2008.

Ответы [ 12 ]

30 голосов
/ 15 июля 2011

DROP удалит все данные и структуру таблицы.

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

14 голосов
/ 17 июля 2009

это drop table и delete object , по крайней мере, в SQL Server 2005. Оба выполняют одно и то же действие.

Delete table и Drop table не одно и то же. Первый удалит все данные из таблицы, а второй удалит таблицу из базы данных.

5 голосов
/ 11 октября 2012

Удалить v / s Drop.

  • Оператор Delete выполняет условное удаление, тогда как команда Drop удаляет все записи в таблице.

  • Оператор Delete удаляет только строки в таблице и сохраняет структуру таблицы таким же, а команда Drop удаляет все данные в таблице и структуре таблицы.

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

2 голосов
/ 17 июля 2009

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

1 голос
/ 10 августа 2017

Другое существенное отличие состоит в том, что в DELETE он просматривает / сканирует все (условно на основе предиката) записи и действительно удаляет. Но при удалении он будет проходить через записи, вместо этого он удалит фактическую запись таблицы из базы данных. Если мы посмотрим на план выполнения для удаления:

enter image description here

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

1 голос
/ 23 апреля 2010

Drop table..it удалит полную таблицу из базы данных. Не может быть получен bak Удалить используется для удаления данных из таблицы. Данные можно получить с помощью ROLL BACK.

1 голос
/ 01 августа 2009

В графическом интерфейсе удаления объекта, сверху есть опция 'script', которая дает оператор t-sql, который является оператором простой таблицы отбрасывания. Где, например, когда вы выбираете опцию удаления таблицы, сгенерированный t-sql будет выполнять удаление, только если таблица существует в таблице sys.objects.

1 голос
/ 17 июля 2009

Эти две операции одинаковы. DROP TABLE - это оператор SQL для этого, Delete - это стандартное, удобное для пользователя, имя команды на основе меню. Вот и все.

0 голосов
/ 15 июня 2017

Удалить таблицу удалит содержимое таблицы и таблицы самостоятельно. Удалить таблицу просто удалит содержимое. Truncate просто «сбросит» содержимое до нуля

0 голосов
/ 28 марта 2014

Использование командных строк Delete может быть условно удалено из таблицы, но изменения могут быть сделаны / отменены с помощью COMMIT и ROLLBACK. Структура таблицы никогда не теряется. Truncate является альтернативой Delete в том смысле, что он позволяет удалять строки без потери структуры таблицы, но UNLIKE Delete, операция не может быть отменена. Однако оператор drop полностью удаляет таблицу вместе с ее структурой из базы данных, и эту операцию нельзя отменить. Итак, Delete - это оператор DML, а Turncate и Drop - операторы DDL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...