В чем разница между предложением, командой, оператором и запросом в SQL? - PullRequest
0 голосов
/ 16 октября 2018

Sql Clause, Command и Statement, я вижу, что эти слова используются взаимозаменяемо.Но они грамматически разные.

Я читаю Некоторая разница здесь .Уже спросил кто-то.Тем не менее, мне не ясно.

Предлагаемый вопрос дает разницу только между утверждением и предложением.И `ВЫБЕРИТЕ foo ИЗ bar JOIN quux WHERE x = y; 'упоминается как заявление является ответом на этот вопрос.Тогда я хочу спросить, в чем разница между Query и Statement.

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

1 Ответ

0 голосов
/ 16 октября 2018

Я дам вам терминологию, используемую с SQL Server.Некоторые из них (безусловно, те, что в вашем вопросе) будут чрезвычайно распространены во всех системах баз данных, некоторые могут зависеть от конкретной системы.

От высшего уровня к низшему:

  • Сценарий.Один файл, содержащий код SQL.Может содержать несколько партий

  • Пакет.Пакет - это блок, в котором работа передается на сервер.В SQL Server каждый пакет (обычно) ограничен GO.Разделение скрипта на пакеты - это работа, выполняемая клиентскими инструментами.Пакет может содержать несколько операторов.

  • Оператор (он же Команда 1 или Запрос).Это наименьшая единица индивидуальной работы, с которой будет работать сервер.Т.е. каждое утверждение является чем-то «полным», что заставит сервер выполнить некоторую работу и может привести к изменению данных и / или возвращению набора результатов.Обычно сервер компилирует каждый оператор отдельно (но может выполнять каждую компиляцию для каждого оператора в пакете перед выполнением любого из них).

  • Clause 2 .Пункт - это подразделение утверждения, но, остерегайтесь, некоторые утверждения могут состоять только из одного предложения, которое может немного помутить воду.Например, некоторые системы баз данных примут SELECT 10; в качестве запроса.Это оператор SELECT, состоящий только из предложения SELECT.Несколько типов операторов могут использовать одни и те же типы предложений.Например, оба оператора SELECT и DELETE могут содержать предложение WHERE.Кроме того, большинство операторов будет содержать предложение с одинаковым именем.

  • Выражение 2 .Выражение - это нечто, производящее скалярное значение (обратите внимание, что в большинстве случаев это «одно скалярное значение на строку», а не «всего одно скалярное значение»)

    • Predicate,Булево выражение, наиболее часто встречающееся в WHERE предложениях, WHEN предложениях и CHECK ограничениях.Они особенно вызваны тем, что не все системы баз данных поддерживают видимый пользователем логический тип данных, и поэтому они не всегда обрабатываются так же, как другие выражения.

1 Многие клиентские библиотеки предоставляют какой-либо объект команды для отправки запросов в систему базы данных.Однако, чтобы мутить воду дальше, многие из них примут партию.Тем не менее команда, похоже, застряла как имеющая значение, аналогичное утверждению, возможно, потому что в подавляющем большинстве случаев объект команды не используется для нескольких операторов за один раз.

2 Обратите внимание, что в некоторой степени они имеют один и тот же уровень.Предложение SELECT может содержать выражение CASE, состоящее из нескольких предложений WHEN и THEN.

...