Вопрос о символах-разделителях для запросов SQL Server 2008 и обрезанного синтаксиса. - PullRequest
2 голосов
/ 29 июля 2011

Я новичок в SQL, поэтому я прошу прощения, если это глупый вопрос.

Когда мне нужно использовать скобки '[' и ']' вокруг имен схем и таблиц?Могу ли я просто использовать их всегда?

Теперь предположим, что я сделал следующее, чтобы создать таблицу

CREATE TABLE [dbo].[table1] ([ID] VARCHAR(5))

Это сработало.Я проверил это, запустив оператор select.Предположим, что время идет, и я добавил кучу строк.Теперь, если я хочу удалить все строки, я должен использовать удаление или усечение?Кажется, я должен делать это

TRUNCATE [dbo].[table1]

Но я продолжаю получать неправильный синтаксис рядом с 'dbo' или неправильный синтаксис рядом с ключевым словом TRUNCATE, когда я делаю это через драйвер jtds jdbc.

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

Ответы [ 5 ]

5 голосов
/ 29 июля 2011
TRUNCATE [dbo].[table1]

должно быть

TRUNCATE TABLE [dbo].[table1]

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

пример

CREATE TABLE [ ]([ ] INT)
INSERT [ ] VALUES(1)

SELECT [ ] FROM [ ]

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

2 голосов
/ 29 июля 2011

Я думаю, что вы хотели TRUNCATE TABLE ... TRUNCATE не существует сам по себе.

TRUNCATE TABLE [dbo].[table1];
1 голос
/ 29 июля 2011

Усеченная таблица и Удалить из - это не одно и то же, хотя часто кажется, что они делают одно и то же.

Усеченная таблица требует некоторых повышенных разрешений, а Усеченная таблица удаляет все строки из таблицы без регистрации удалений отдельных строк.. TRUNCATE TABLE похож на оператор DELETE без предложения WHERE, однако TRUNCATE TABLE работает быстрее и использует меньше ресурсов системы и журнала транзакций. "

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

Удаление из - это почти всегда то, что вы хотите сделать как часть обработки транзакций.Truncate Table подходит для разработки и тестирования как отдельная команда adhoc.Если вы чувствуете необходимость поместить Truncate Table в хранимую процедуру, проверьте себя и убедитесь, что удаление может быть более подходящим.

1 голос
/ 29 июля 2011

В ответ на первую часть вашего вопроса:

Когда мне нужно использовать скобки '[' и ']' вокруг имен схем и таблиц?Могу ли я просто использовать их всегда?

Используйте скобки, когда имена конфликтуют с ключевыми словами SQL (обычно это видно по цветам в вашей IDE) и Да - вы всегда можете их использовать.

1 голос
/ 29 июля 2011

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

И, как сказал Аарон, вы хотите TRUNCATE TABLE.

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