Номенклатура SQL: "Запрос" или "Команда" для INSERT/UPDATE/DELETE?

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

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

3 ответа

Решение

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

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

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


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

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

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

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

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

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

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

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

Если вы сомневаетесь, называйте это "заявлением".

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

Другие вопросы по тегам