Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
ElementyinstrukcjiSELECT
35
Wceluzaprezentowaniazapytaniawbardziejczytelnysposóbponiższalistapokazuje,
cowykonujecałainstrukcja*:
1.Odpytaniewierszyz(from)tabeliSales.Orders.
2.Odfiltrowanietylkotychzamówień,gdzie(where)IDklientarównasię71.
3.Zgrupowanie(group)zamówieńwedługIDpracownikairokuzamówienia.
4.Odfiltrowanietylkotychgrup(IDpracownikairokzamówienia),którezawierają
(having)więcejniżjednozamówienie.
5.Wybranie(select)dlakażdejgrupyIDpracownika,rokuzamówieniailiczby
zamówień.
6.Uporządkowanie(orderby)wierszywdanychwyjściowychwedługIDpracowni-
kairokuzamówienia.
Niemożemynapisaćzapytaniawprawidłowejkolejnościlogicznej.Musimyroz-
począćodklauzuliSELECT,takjakwlistingu2-1.Istniejepowódtychrozbieżności
pomiędzykolejnościąwpisywaniaakolejnościąlogicznegoprzetwarzaniaklauzul.
ProjektancijęzykaSQLopracowalijęzykdeklaracji,wktórymmożemywprowadzać
żądaniawsposóbpodobnydologikijęzykaangielskiego.Dlaprzykładuprzeanali-
zujmyinstrukcjeprzekazywanekomuśwnaturalnymjęzyku:„Przynieśmikluczyki
dosamochoduzlewejgórnejszufladywkuchni”.Najpierwokreślamyczynność(przy-
nieś),późniejwskazujemyobiektdziałań(kluczyki),adopieronakońcuwskazujemy
lokalizacjęobiektu(szuflada).Gdybyśmyzechcielitesameinstrukcjeprzekazaćrobo-
towi,naprzykładprogramowikomputerowemu,musielibyśmyrozpocząćodlokaliza-
cji,zanimwskażemy
,comabyćuzyskanewtejlokalizacjiicoostatecznienależy
ztymzrobić.Instrukcjemiałybyzapewnenastępującąpostać„idźdokuchni;otwórz
lewągórnąszufladę;zabierzkluczyki;przynieśkluczykidomnie”.Kolejnośćklauzul
zapytaniajestpodobnadojęzykanaturalnegopierwszajestklauzulaSELECT,defi-
niującaostatecznedziałanie(wybór).Kolejnośćlogicznegoprzetwarzaniazapytania
przypominasposóbwprowadzaniainstrukcjidlarobotapierwszaprzetwarzanajest
klauzulaFROM,wskazującalokalizację.
Teraz,gdyjużznamykolejnośćlogicznegoprzetwarzaniaklauzul,możemywyjaś-
nićszczegółowokażdąfazę.
Wtrakcieomawianialogicznegoprzetwarzaniazapytaniabędęodwoływaćsię
doklauzulzapytaniaidofazzapytania(naprzykładklauzulaWHEREifazaWHERE).Klau-
zulazapytaniatoskładniowyelementzapytania,takwięc,jeśliomawiamskładnię
elementuzapytania,zazwyczajbędęużywałpojęciaklauzulinaprzykład„wklauzuli
WHEREspecyfikujemypredykat”.Podczasomawianialogicznychoperacji,któremają
miejscejakoczęśćlogicznegoprzetwarzaniazapytania,używampojęciafazynaprzy-
kład„fazaWHEREzwracawiersze,dlaktórychpredykatmawartośćTRUE”.
*Angielskieodpowiednikispójnikówidyrektyw(wyróżnionekursywą)są,jakmożnazauważyć,
klauzulamijęzykaSQL(przyp.tłum.).