Номенклатура SQL: «Запрос» или «Команда» для INSERT / UPDATE / DELETE? - PullRequest
11 голосов
/ 15 июля 2011

Что является более правильным для вызова операторов INSERT / UPDATE / DELETE? Команда или запрос? Я бы подумал «команда», так как «запрос» подразумевает, что вы задаете вопрос и ожидаете получить ответ на свой вопрос (и больше информации, чем просто «да, эта операция была выполнена успешно, и, опционально, вот ваш идентификатор вставки») .

Просто вопрос от разработчика веб-приложений среднего уровня, который также был специалистом в области коммуникаций и обладает специфичностью. :)

Ответы [ 3 ]

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

Общий термин для INSERT, UPDATE, DELETE и MERGE является «обновлением» (даже если это потенциально сбивает с толку - и не идеально - что UPDATE является просто подмножеством "обновление"). Альтернативный термин - «реляционное назначение».

Общий термин для SELECT, INSERT, UPDATE, DELETE, MERGE (и все остальное, оканчивающееся точкой с запятой) известен как «оператор».

Строго говоря, «запрос» - это оператор SELECT, который возвращает набор результатов (который, например, исключает операторы SELECT..INTO..FROM). Однако использование термина «запрос» для ссылки на обновление, хотя и неофициальное, к сожалению, очень распространено. Например, хотя «запрос на обновление» является оксюмороном, когда я выполняю поиск в Google для этого сайта, используя именно этот термин (site:stackoverflow.com "update query"), я получаю 17 300 посещений!


ОБНОВЛЕНИЕ (с каламбуром :)

@ Дэвид Маркс: Я не согласен с вашим утверждением, что уместно вставить / удалить / слить как «обновление». Это было бы чрезвычайно сбивает с толку. Только ОБНОВЛЕНИЕ является обновлением.

В своем первоначальном ответе я согласился, что ситуация потенциально запутанная. Нам повезло, что Stackoverflow может форматировать ответы и комментарии, чтобы ключевое слово UPDATE можно было отличить от логического обновления; написание ключевых слов в верхнем регистре (как того требует полный стандарт SQL-92 :) также помогает.

Однако, прочитав основную литературу по базам данных и вычислительной технике, я могу сказать, что «обновление» - это действительно правильный собирательный термин. Ниже я приведу цитату для этого:

«Введение в теорию реляционных баз данных» (2010), Хью Дарвен [доступно для бесплатной загрузки в формате pdf - Google it):

Различные операторы обновления, ожидаемые в реляционной СУБД, обычно называется INSERT, DELETE и UPDATE, и это имена, используемые в Учебном пособии D (также в SQL) [стр.28]

К сожалению, ключевое слово UPDATE стало настолько широко принимается как имя только одного конкретного оператора для обновления базы данных. Пожалуйста, не стреляйте в курьера! [С.168]

хотя [реляционное] присваивание теоретически достаточно для В целях обновления обычно удобнее использовать стенографию выражая разницу между текущим значением цели relvar и новое значение. Иногда ... эта разница только добавление одного или нескольких кортежей к существующему набору; иногда это просто изменяется на некоторые из значений атрибутов некоторых из существующих кортежи; а иногда это просто удаление некоторых из существующих кортежи. Сокращения для этих трех конкретных случаев были переданы как INSERT, UPDATE и DELETE соответственно, так как время испокон веков - другими словами, еще до появления реляционных базы данных, хотя, конечно, до этого появляются цели обновления были файлами, а не relvars или таблицами SQL [стр.165]

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

Если сомневаетесь, назовите это «заявлением».

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

Иногда все, кроме select, считается DML - языком манипулирования данными. Однако это не жесткое и быстрое различие. Это так же часто, как выбор включен в DML.

...