[ Pobierz całość w formacie PDF ]
.SELECT imie, nazwisko, tytulFROM autorzy, ksiazkiWHERE autorzy.nazwisko =  Mickiewicz andautorzy.nr = ksiazki.autor;3.4.5.Operacje mnogoÅ›cioweOperacje mnogoÅ›ciowe sÄ… operacjami teorii zbiorów.W jÄ™zyku SQL operacje temożemy stosować do relacji (tabel), zarówno istniejÄ…cych w systemie, jak równieżbÄ™dÄ…cych wynikiem dziaÅ‚ania innych rozkazów.3.4.5.1.UniaUnia pozwala na zsumowanie zbiorów krotek dwóch lub wiÄ™cej relacji (bezpowtórzeÅ„ - zgodnie z teoriÄ… mnogoÅ›ci).Warunkiem poprawnoÅ›ci tej operacji jestzgodność liczby i typów atrybutów (kolumn) sumowanych relacji.PrzykÅ‚adprzedstawiony poniżej sumuje zbiory pracowników i wÅ‚aÅ›cicieli okrojone do imienia inazwiska (za pomocÄ… projekcji), w celu uzyskania informacji o wszystkich ludziachpowiÄ…zanych z firmÄ…:SELECT imie, nazwisko FROM pracownicyUNIONSELECT imie, nazwisko FROM wlasciciele ;3.4.5.2.PrzekrójPrzekrój pozwala znalezć iloczyn dwóch lub wiÄ™cej zbiorów krotek tzn.takich,które wystÄ™pujÄ… zarówno w jednej jak i w drugiej relacji.Podobnie jak w przypadku unii,warunkiem poprawnoÅ›ci tej operacji jest zgodność liczby i typów atrybutów relacjibazowych.Poniższy przykÅ‚ad znajduje wszystkie nazwiska (np.stosunek pracy, powiÄ…zaniarodzinne), które wystÄ™pujÄ… zarówno w relacji pracownicy jak i w relacji wÅ‚aÅ›ciciele.33 Bazy danych Robert ChwastekSELECT nazwisko FROM pracownicyINTERSECTSELECT nazwisko FROM wlasciciele ;3.4.5.3.RÌżnicaOperacja obliczania różnicy dwóch relacji polega na znalezieniu wszystkich krotek,które wystÄ™pujÄ… w pierwszej relacji, ale nie wystÄ™pujÄ… w drugiej.PrzykÅ‚ad znajduje wszystkie osoby, które sÄ… współwÅ‚aÅ›cielami spółki, ale nie sÄ… wniej zatrudnieni:SELECT imie, nazwisko FROM wlascicieleMINUSSELECT imie, nazwisko FROM pracownicy ;3.4.6.GrupowanieKlauzule GROUP BY i HAVING wystÄ™pujÄ…ce w rozkazie SELECT pozwalajÄ…dzielić relacjÄ™ wynikowÄ… na grupy, wybierać niektóre z tych grup i na każdej z nich zosobna wykonywać pewne (dozwolone przez system) operacje.Operacje te dziaÅ‚ajÄ… nawszystkich wierszach wchodzÄ…cych w skÅ‚ad grupy.Na samym koÅ„cu zwracana jest tylkozbiorcza informacja o wybranych grupach (nie zwraca siÄ™ wszystkich wierszywchodzÄ…cych w skÅ‚ad grupy).Klauzula GROUP BY sÅ‚uży do dzielenia krotek relacji na mniejsze grupy.Sposóbtakiego podziaÅ‚u ilustruje przykÅ‚ad:SELECT stanowisko, avg(placa_podstawowa)FROM pracownicyGROUP BY stanowisko ;Istnieje możliwość odrzucenia pewnych krotek przed podziaÅ‚em na grupy.Dokonuje siÄ™ tego za pmocÄ… klauzuli WHERE:SELECT stanowisko, avg(placa_podstawowa)FROM pracownicyWHERE stanowisko !=  KIEROWCAGROUP BY stanowisko ;Dzielenie na grupy może być zagnieżdżane, co umożliwia wydzielanie podgrup wuprzednio znalezionych podgrupach.W przykÅ‚adzie poniżej wszyscy pracownicy sÄ…dzieleni na wydziaÅ‚y, w których pracujÄ…, a w ramach każdego wydziaÅ‚y grupowani wedÅ‚ugstanowiska:SELECT wydzial, stanowisko, avg(placa_podstawowa)FROM pracownicyGROUP BY nr_wydzialu, stanowisko ;Klauzula HAVING ogranicza wyÅ›wietlanie grup do tych, które speÅ‚niajÄ… okreÅ›lonywarunek.ChcÄ…c wyÅ›wietlić tylko te grupy, w których pÅ‚aca podstawowa przynajmniejjednego pracownika jest wiÄ™ksza niż 3 000 należy zastosować nastÄ™pujÄ…ce zapytanie:SELECT stanowisko, max(placa_podstawowa)FROM pracownicy34 Bazy danych Robert ChwastekGROUP BY stanowiskoHAVING max(placa_podstawowa) > 3000 ;3.4.7.Kolejność klauzul w rozkazie SELECTKlauzule majÄ…ce wpÅ‚yw na realizacjÄ™ rozkazu SELECT uwzglÄ™dniane sÄ… wnastÄ™pujÄ…cej kolejnoÅ›ci:1.SELECT i WHERE2.GROUP BY3.HAVING4.ORDER BY3.5.PodzapytaniaZapytania jÄ™zyka SQL mogÄ… być zagnieżdżane, tzn.wynik jednego zapytania możebyć użyty np.jako warunek selekcji innego zapytania.Podzapytania można podzielić nadwa rodzaje:podzapytania proste (nazywane po prostu podzapytaniem) - podzapytanie jestprzedwykonywane wykonaniem zapytania głównego;podzapytania skorelowane - podzapytanie jest wykonywane dla każdej krotkipodzapytania głównego.Najczęściej podzapytania używane sÄ… w klauzuli WHERE rozkazu SELECT.JeÅ›liwiadomo, że wynikiem podzapytania bÄ™dzie pojedyncza wartość, to wartość tÄ… możnaużyć bezpoÅ›rednio w warunku klauzuli WHERE w nastÄ™pujÄ…cy sposób:SELECT nazwiskoFROM pracownicyWHERE placa_podstawowa =(SELECT min(placa_podstawowa)FROM pracownicy);Powyższy przykÅ‚ad znajduje nazwiska pracowników zarabiajÄ…cych najmniej.JeÅ›li jednak w wynikiem podzapytania bÄ™dzie kilka wartoÅ›ci, to konieczne jestużycie operatora IN w zapytaniu głównym [ Pobierz caÅ‚ość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • hanula1950.keep.pl