В синтаксисе SQL есть опция "from" в "delete from", если вы планируете использовать "where"?
Я новичок в SQL. У нас есть код, который должен работать на SQL Server 2005/2008, Oracle 10, а также Sybase.
Я писал script, чтобы выяснить, какие таблицы эта хранимая процедура изменяет (но не падает), например insert
, update
и delete
.
delete
один оказался озадаченным - иногда я вижу утверждения вроде:
delete phone_book where ...
в отличие от:
delete from phone_book where ...
Итак... ключевое слово from
действительно необязательно в этом случае? Это вызывает проблемы? Это просто плохой стиль, или это не имеет значения?
Я не нашел ссылку на T-SQL
, которая сделала бы from
опциональной. Я полагаю, что это то, что объединило бы всех 3 продавцов, о которых я говорил выше.
Вопросы/комментарии/ссылки приветствуются (или приветствуются?).
Ответы
Ответ 1
В этом месте FROM
не является обязательным (SQL Server, Oracle, Sybase).
Однако существуют тонкие различия: Oracle, например, позволяет назначать псевдоним имени таблицы, где SQL Server этого не делает; и другие вещи также немного отличаются.
Также обратите внимание, что ваш образец FROM
отличается от следующего, где это обязательно:
DELETE phone_book FROM some_table WHERE ...
Ответ 2
Короткий ответ: Luceros ответ правильный: это необязательно
Я должен поддерживать sql и адаптировать его между sql-сервером и Oracle. Вот несколько правил:
- Пишите сценарии вручную, не используйте сгенерированный код.
- Всегда используйте INSERT INTO.
- Всегда УДАЛЯТЬ - без ОТ.
- Не используйте "- цитируемый идентификатор.
- Удалить все [] и DBO. (Имена схем)
- Внимание, когда вы видите УДАЛИТЬ... ОТ...
- Внимание, когда вы видите ОБНОВЛЕНИЕ... ОТ...
-
ORACLE Операторы Select нуждаются в предложении from, которое вы можете использовать из DUAL
- ОК, вы можете писать сценарии и редактировать их стандартным способом.
- USE [Current_DB] - вы не хотите, чтобы ссылка на вашу тестовую базу данных переходила в производственный скрипт
- SET ANSI_NULLS ON - решить один раз, какие настройки использовать - не включать и не выключать
- SET QUOTED_IDENTIFIER ON - идентификаторы в кавычках чувствительны к регистру.
- INSERT INTO требуется Oracle.
- Это мой личный стиль, не используйте необязательные ключевые слова, изучите значения по умолчанию
- Вы должны заключить в кавычки идентификатор, если вы используете одно из зарезервированных ключевых слов ORACLES в качестве имени столбца, мы ввели этот подводный камень, и в долгосрочной перспективе было бы лучше переименовать столбец на стороне sql-Server.
- Oracle не использует их.
- Oracle не поддерживает этот синтаксис.
- Oracle не поддерживает этот синтаксис.
Ответ 3
В документации Microsoft SQL Server FROM является необязательным.