2011-07-14 7 views
7

Które jest bardziej właściwe wywołanie instrukcji INSERT/UPDATE/DELETE? Polecenie lub zapytanie? Myślę, że "polecenie", ponieważ "zapytanie" oznacza, że ​​zadajesz pytanie i spodziewasz się odpowiedzi na twoje pytanie (i więcej informacji niż "tak, ta operacja została wykonana pomyślnie, i, opcjonalnie, tutaj jest twój identyfikator wkładki") .Nomenklatura SQL: "Zapytanie" lub "Polecenie" dla INSERT/UPDATE/DELETE?

Po prostu pytanie od średnio zaawansowanego programisty aplikacji internetowych, który był również głównym komunikatem i jest osobą, która lubi specyfikę. :)

+1

No, prawie wszystkich książek SQL mam czerwony, mówi 'polecenie INSERT/UPDATE/DELETE' – Rahul

+0

mi potrzebne do stworzenia klas abstrakcyjnych dla mojego zespołu w celu wdrożyć jednostkę pracy, wzór polecenia z Entity Framework. Chciałem, aby klasy abstrakcyjne posiadały szablonową metodę Execute, która zajmowała się ustawieniami i saveChanges, więc nazewnictwo było ważne. Rzeczy, które wymyśliłem: AbstractMutateCommand, AbstractUpdateCommand, AbstractWriteCommand. Wybrał ostatni. –

+0

Szukam tego samego - terminu dla 'select/insert/update/delete', ale ** nie ** dla wywołania procedury. Myślę, że nazwę to "oświadczenie". –

Odpowiedz

5

Ogólny termin dla INSERT, UPDATE, DELETE i MERGE jest „zmiana” (mimo że jest potencjalnie mylące - i nie jest idealny - że UPDATE jest jedynie podzbiorem „update”). Alternatywnym terminem jest "przypisanie relacyjne".

termin rodzajowy dla SELECT, INSERT, UPDATE, DELETE, MERGE (i coś jeszcze zakończone średnikiem) jest znany jako „oświadczenie”.

Ściśle mówiąc, "zapytanie" to instrukcja SELECT, która zwraca zestaw wyników (co na przykład wyklucza oświadczenia SELECT..INTO..FROM). Jednak użycie terminu "zapytanie" w odniesieniu do aktualizacji, choć nieformalne, jest niestety bardzo powszechne. Na przykład, mimo że "zapytanie o aktualizację" jest oksymoronem, gdy wykonuję wyszukiwanie w Google dla tej witryny przy użyciu tego dokładnego terminu (site:stackoverflow.com "update query"), otrzymuję 17 300 odsłon!


UPDATE (pun indended :)

@David Marx: Nie zgadzam się z twierdzeniem, że jest to stosowne odnieść INSERT/DELETE/MERGE jako 'aktualizacji'. Byłoby to niezrozumiałe. Tylko aktualizacja jest aktualizacją.

Zgodziłem się w mojej oryginalnej odpowiedzi, że sytuacja jest potencjalnie myląca. Mamy szczęście na Stackoverflow, aby móc formatować odpowiedzi i komentarze, dzięki czemu słowo kluczowe UPDATE można odróżnić od aktualizacji logicznej; pisanie słów kluczowych dużymi literami (wymagane przez Full Standard SQL-92 :) również pomaga.

Jednakże, czytając ogólną bazę danych i literaturę z dziedziny informatyki, mogę powiedzieć, że "aktualizacja" jest rzeczywiście poprawnym zbiorczym terminem. I poniżej zapewnić ten cytat za:

"Wstęp do teorii relacyjnych baz danych" (2010), Hugh Darwen [dostępny jako free pdf do pobrania - Google it):

Poszczególne podmioty aktualizacji oczekiwano w relacyjnym DBMS są zwykle nazywane INSERT, DELETE i UPDATE, a są to nazwy używane w Samouczku D (również w SQL) [s.28]

To przykro mi, że słowo kluczowe UPDATE stało się tak szerokie, że zostało przyjęte jako nazwa tylko jednego konkretnego operatora do aktualizacji baz danych . Proszę nie strzelać do posłańca! [P.168]

chociaż [relacyjną] Przypisanie teoretycznie jest wystarczająca dla celów aktualizujące, jest zazwyczaj bardziej dogodne stosowanie skróconych ekspresję różnicy między bieżącą wartością docelową relvar i nowej wartości. Czasami ... ta różnica to tylko jedna lub więcej krotek do istniejącego zestawu; czasami jest to tylko zmiana niektórych wartości atrybutów niektórych istniejących krotek; a czasami jest to usunięcie niektórych z istniejących krotek . Skróty dla tych trzech konkretnych przypadkach zostały skierowane jako INSERT, UPDATE i DELETE odpowiednio, od czasu niepamiętnych czasów - innymi słowy, jeszcze przed pojawieniem się relacyjnych baz danych, choć oczywiście przed tym pojawieniem się celem aktualizacji były pliki, a nie relvars lub tabele SQL [s.165]

+0

Nie zgadzam się z tezą, że należy odwołać się do INSERT/DELETE/MERGE jako "aktualizacji". To byłoby bardzo mylące. Tylko aktualizacja jest aktualizacją. –

+0

@David Marx: zobacz aktualizację mojej odpowiedzi. Zastanów się też, czy mój "MERGE" był z odmiany "MERGE..IF DOPASOWANY NA AKTUALIZACJĘ ...", czy można to uznać za "aktualizację", jak i aktualizację? ;) – onedaywhen

0

Czasami cokolwiek innego niż wybór uznaje się za DML - język manipulacji danymi. Jednak nie jest to trudne i szybkie wyróżnienie. Jest tak samo często, jak wybór jest zawarty w DML.

4

Jeśli masz wątpliwości, możesz to nazwać "oświadczeniem".