2011-07-14 22 views
7

¿Cuál es más apropiado para llamar instrucciones INSERT/UPDATE/DELETE? Comando o consulta? Pensaría "comando", ya que "consulta" implica que está haciendo una pregunta y esperando que se responda su pregunta (y más información que solo "sí, esta operación se realizó con éxito y, opcionalmente, aquí está su ID de inserción") .Nomenclatura SQL: "Consulta" o "Comando" para INSERT/UPDATE/DELETE?

Solo una pregunta de un desarrollador de aplicaciones web de nivel medio que también era un especialista en comunicaciones y que disfruta de la especificidad. :)

+1

bueno, casi todos los libros de SQL que tengo rojo, dice 'comando INSERT/UPDATE/DELETE' – Rahul

+0

que necesitaba para crear clases abstractas para mi equipo, a fin para implementar la unidad de trabajo, patrón de comando con Entity Framework. Quería que las clases abstractas tuvieran una plantilla Ejecutar método que se encargara de la configuración y de los cambios de guardado, por lo que la asignación de nombres era importante. Cosas que se me ocurrieron: AbstractMutateCommand, AbstractUpdateCommand, AbstractWriteCommand. Escogió el último. –

+0

Estoy buscando lo mismo - un término para 'seleccionar/insertar/actualizar/eliminar', pero ** no ** para la llamada al procedimiento. Creo que lo llamaré "declaración". –

Respuesta

5

El término genérico para un INSERT, UPDATE, y DELETEMERGE es una "actualización" (a pesar de que es potencialmente confuso - y no es ideal - que UPDATE es simplemente un subconjunto de "actualización"). Un término alternativo es "asignación relacional".

El término genérico para SELECT, INSERT, UPDATE, DELETE, MERGE (y cualquier otra cosa terminada por un punto y coma) se conoce como una "declaración".

Estrictamente hablando, una "consulta" es una declaración SELECT que devuelve un conjunto de resultados (que, por ejemplo, excluiría las declaraciones SELECT..INTO..FROM). Sin embargo, utilizar el término "consulta" para referirse a una actualización, aunque informal, es desafortunadamente muy común. Por ejemplo, aunque la "consulta de actualización" es un oxímoron, cuando realizo una búsqueda en Google para este sitio usando ese término exacto (site:stackoverflow.com "update query") obtengo 17,300 visitas.


ACTUALIZACIÓN (juego de palabras indentado :)

@ David Marx: No estoy de acuerdo con su afirmación de que es apropiado referirse a insertar/borrar/fusionar como 'actualización'. Eso sería extremadamente confuso. Solo UPDATE es una actualización.

Acepté en mi respuesta original que la situación es potencialmente confusa. Somos afortunados en Stackoverflow para poder formatear respuestas y comentarios para que una palabra clave UPDATE se pueda diferenciar de una actualización lógica; escribir palabras clave en mayúsculas (como lo exige Full Standard SQL-92 :) también ayuda.

Sin embargo, al leer la base de datos general y la literatura de ciencias de la computación, puedo decirles que 'actualizar' es de hecho el término colectivo correcto. I a continuación proporcionan una citación para esto:

"Una introducción a la teoría relacional de bases de datos" (2010), Hugh Darwen [pdf disponible como descarga gratuita - que Google):

Los diferentes operadores de actualización de espera en un DBMS relacional son generalmente llamados INSERT, DELETE y UPDATE, y esos son los nombres utilizados en el Tutorial D (también en SQL) [p.28]

Es de lamentar que la palabra clave UPDATE se ha vuelto tan ampliamente aceptada como el nombre de un solo operador en particular para la actualización de las bases de datos . Por favor, no dispares al messenger! [P.168]

aunque [relacional] asignación es teóricamente suficiente para propósitos de actualización, por lo general es más conveniente utilizar una taquigrafía expresar la diferencia entre el valor actual de la relvar objetivo y el nuevo valor. A veces ... esa diferencia es solo la adición de de una o más tuplas al conjunto existente; a veces es , solo cambia a algunos de los valores de atributo de algunas de las tuplas existentes; y a veces es solo la eliminación de algunas de las tuplas existentes. Abreviaturas de los tres casos particulares se han referido a como INSERT, UPDATE y DELETE respectivamente, desde tiempos inmemoriales - en otras palabras, incluso antes de la llegada de bases de datos relacionales, aunque por supuesto antes de que advenimiento de los objetivos de las actualizaciones eran archivos, no relvars o tablas SQL [p.165]

+0

No estoy de acuerdo con su afirmación de que es apropiado referirse a INSERT/DELETE/MERGE como una 'actualización'. Eso sería extremadamente confuso. Solo UPDATE es una actualización. –

+0

@David Marx: ver la actualización de mi respuesta. Además, considere si mi 'MERGE' era de la variedad' MERGE..IF MATCHED THEN UPDATE..' ¿podría considerarse una 'ACTUALIZACIÓN' así como una actualización? ;) – onedaywhen

0

A veces, cualquier cosa que no sea select se considera lenguaje DML - Manipulación de datos. Sin embargo, esta no es una distinción difícil y rápida. Es igual de frecuente que select se incluye dentro de DML.

4

En caso de duda, llámalo una "declaración".

Cuestiones relacionadas