2011-07-14 15 views
7

Quale è più appropriato chiamare le istruzioni INSERT/UPDATE/DELETE? Comando o query? Penserei "comando", poiché "query" implica che stai facendo una domanda e ti aspetti di rispondere alla tua domanda (e più informazioni che "sì, questa operazione è stata eseguita con successo e, facoltativamente, ecco l'ID dell'inserto") .Nomenclatura SQL: "Query" o "Comando" per INSERT/UPDATE/DELETE?

Solo una domanda da uno sviluppatore di applicazioni Web di livello medio che era anche un esperto di comunicazioni ed è uno che gode di specificità. :)

+1

beh, quasi tutti i manuali di SQL che ho rosso, dice 'comando INSERT/UPDATE/DELETE' – Rahul

+0

avevo bisogno di creare classi astratte per la mia squadra in ordine implementare l'Unità di lavoro, modello di comando con Entity Framework. Volevo che le classi astratte avessero un metodo Execute di template che si occupasse di setup e saveChanges, quindi la denominazione era importante. Le cose che mi sono venute in mente: AbstractMutateCommand, AbstractUpdateCommand, AbstractWriteCommand. Ho scelto l'ultimo. –

+0

Sto cercando lo stesso - un termine per "seleziona/inserisci/aggiorna/cancella", ma ** non ** per la chiamata di procedura. Penso che lo chiamerò "dichiarazione". –

risposta

5

Il termine generico per un INSERT, UPDATE, DELETE e MERGE è un "aggiornamento" (anche se è potenzialmente confusione - e non ideale - che UPDATE è solo un sottoinsieme di "aggiornamento"). Un termine alternativo è "assegnazione relazionale".

Il termine generico per SELECT, INSERT, UPDATE, DELETE, MERGE (e qualsiasi altra cosa terminato da un punto e virgola) è conosciuto come una "dichiarazione".

A rigor di termini, una "query" è una dichiarazione SELECT che restituisce un gruppo di risultati (che ad esempio precludere SELECT..INTO..FROM dichiarazioni). Tuttavia, usare il termine "query" per riferirsi a un aggiornamento, sebbene informale, è purtroppo molto comune. Ad esempio, anche se "query di aggiornamento" è un ossimoro, quando faccio una ricerca su Google per questo sito usando quel termine esatto (site:stackoverflow.com "update query") ottengo 17.300 visite!


UPDATE (gioco di parole indended :)

@ David Marx: Non sono d'accordo con il reclamo che è opportuno fare riferimento di inserimento/cancellazione/MERGE come un 'aggiornamento.' Sarebbe estremamente confuso lo . Solo UPDATE è un aggiornamento.

Sono d'accordo nella mia risposta originale che la situazione è potenzialmente confusa. Siamo fortunati su Stackoverflow per essere in grado di formattare risposte e commenti in modo che una parola chiave UPDATE possa essere differenziata da un aggiornamento logico; scrivere parole chiave in maiuscolo (come richiesto da Full Standard SQL-92 :) aiuta anche.

Tuttavia, dalla lettura del database generale e della letteratura informatica, posso dirvi che "aggiornamento" è effettivamente il termine collettivo corretto. Ho seguito fornisco una citazione per questo:

"Introduzione alla teoria dei database relazionali" (2010), Hugh Darwen [disponibile come free download PDF - Google):

I diversi operatori aggiornamento previsto in un DBMS relazionale sono di solito chiamati INSERT, DELETE e UPDATE e quelli sono i nomi utilizzati nell'esercitazione D (anche in SQL) [p.28]

E 'deplorevole che la parola chiave UPDATE è diventato così ampiamente accettato come il nome di un solo operatore particolare per l'aggiornamento dei database . Per favore non sparare al messaggero! [P.168]

sebbene [relazionale] assegnazione è teoricamente sufficiente per scopi aggiornamento, di solito è più conveniente usare un'abbreviazione esprime la differenza tra il valore corrente del bersaglio relvar e il nuovo valore. A volte ... questa differenza è solo l'aggiunta di una o più tuple al set esistente, ; a volte è solo modifiche ad alcuni dei valori degli attributi di alcune delle tuple esistenti ; e talvolta è solo la rimozione di alcune delle tuple esistenti. Abbreviazioni per questi tre casi particolari sono stati deferiti come INSERT, UPDATE e DELETE, rispettivamente, da tempo immemorabile, - in altre parole, anche prima dell'avvento relazionali banche dati, anche se naturalmente prima che dell'avvento gli obiettivi delle aggiornamenti erano file, non relvars o tabelle SQL [p.165]

+0

Non sono d'accordo con l'affermazione secondo cui è appropriato fare riferimento a INSERT/DELETE/MERGE come "aggiornamento". Sarebbe estremamente confuso. Solo UPDATE è un aggiornamento. –

+0

@David Marx: vedere l'aggiornamento alla mia risposta. Inoltre, considera se il mio 'MERGE' era della varietà' MERGE..IF MATCHED THEN UPDATE..' potrebbe essere considerato un 'UPDATE' e un aggiornamento? ;) – onedaywhen

0

A volte qualcosa di diverso da select è considerato DML - Data Manipulation Language. Tuttavia questa non è una distinzione difficile e veloce. Questo è altrettanto spesso che la selezione è inclusa in DML.

4

In caso di dubbio, chiamalo "dichiarazione".