1 / 14

Podzapytania w języku SQL

Podzapytania w języku SQL. Czas pójść już dalej. Czego się nauczymy?. Umieszczać wewnętrzną instrukcję SELECT w zewnętrznej instrukcji SELECT Właściwości różnych rodzajów podzapytań Tego, że podzapytania pozwalają budować bardzo złożone instrukcje z prostych elementów. Rodzaje podzapytań .

ojal
Download Presentation

Podzapytania w języku SQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Podzapytania w języku SQL Czas pójść już dalej

  2. Czego się nauczymy? • Umieszczać wewnętrzną instrukcję SELECT w zewnętrznej instrukcji SELECT • Właściwości różnych rodzajów podzapytań • Tego, że podzapytania pozwalają budować bardzo złożone instrukcje z prostych elementów

  3. Rodzaje podzapytań • Jednowierszowe – zwracają do zewnętrznej instrukcji SQL zero lub jeden wiersz • Wielowierszowe – zwracają do zewnętrzej instrukcji SWL co najmniej jeden wiersz • Wielokolumnowe – zwracają do zewnętrznej instrukcji SQL więcej niż jedną kolumnę • Skorelowane – odwołują się do jednej lub kilku kolumn z zewnętrznej instrukcji SQL(te podzapytania wykonywane są więcej niż jeden raz) • Zagnieżdżone – są umieszczane wewnątrz innego podzapytania. Można zagnieżdżać podzapytania do 255 poziomu

  4. Podzapytania w klauzuli WHERE(1) • Podaj id oraz nazwisko pracowników pracujących w zespole administracji select id_zesp, nazwisko from pracownicy where id_zesp= (select id_zesp from zespoly where nazwa='ADMINISTRACJA')

  5. Podzapytania w klauzuli WHERE(2) • Wybierz najgorzej zarabiającego asystenta select nazwisko, etat from pracownicy where etat='ASYSTENT' and placa_pod= (select min(placa_pod) from pracownicy where etat='ASYSTENT')

  6. Podzapytania wyznaczające wiele krotek – operator in • Wyświetl nazwiska i płace pracowników zatrudnionych w zespołach algorytmy i administracja select nazwisko, placa_pod from pracownicy where id_zesp in (select id_zesp from zespoly where nazwa='ADMINISTRACJA' or nazwa='ALGORYTMY')

  7. Podzapytania wyznaczające wiele krotek – operator any • stosowany z operatorami logicznymi, warunek jest prawdziwy jeśli jest spełniony dla jakiejkolwiek wartości zwróconej przez podzapytanie • Pokaż nazwiska tych pracowników, którzy zarabiają więcej niż którykolwiek pracownik zespołu 30 SELECT nazwisko, placa_pod, etat, id_zesp FROM pracownicy WHERE placa_pod > ANY (SELECT DISTINCT placa_pod FROM pracownicy WHERE id_zesp = 30)

  8. Podzapytania wyznaczające wiele krotek – operator all • stosowany z operatorami logicznymi, warunek jest prawdziwy jeśli jest spełniony dla wszystkich wartości zwróconej przez podzapytanie • Pokaż nazwiska tych pracowników, którzy zarabiają więcej niż wszyscy pracownicy zespołu 30 SELECT nazwisko, placa_pod, etat, id_zesp FROM pracownicy WHERE placa_pod > ALL (SELECT placa_pod FROM pracownicy WHERE id_zesp = 30)

  9. Podzapytania w klauzuli HAVING • Wyświetl te zespoły, w których średnia płaca podstawowa jest większa niż średnia płaca w całym instytucie SELECT z.nazwa, AVG(p.placa_pod) AS srednia FROM pracownicy p RIGHT OUTER JOIN zespoly z ON p.id_zesp = z.id_zesp GROUPBY z.nazwa HAVING AVG(p.placa_pod) > (SELECT AVG(placa_pod) FROM pracownicy)

  10. Podzapytania skorelowane(1) Cechy • Podzapytanie skorelowane jest wykonywane dla każdej krotki przeglądanej przez zapytanie zewnętrzne • Podzapytanie skorelowane operuje na wartościach atrybutów przekazanych przez zapytanie zewnętrzne • Podzapytanie skorelowane zawsze posiada odwołanie do atrybutu zapytania zewnętrznego SELECT atrybut a, atrybut b, ... FROM relacjaPodzapytanie nadrzędne WHERE atrybutn >= ( SELECT atrybutj FROM relacja Podzapytanie skorelowane WHERE atrybut j = atrybut b );

  11. Podzapytania skorelowane(2) Polecenie SELECT z podzapytaniem skorelowanym wykonywane jest następująco: 1. pobranie krotki Kn przez zapytanie nadrzędne 2. wykonanie podzapytania na podstawie wartości z krotki Kn 3. zaakceptowanie bądź odrzucenie krotki Kn 4. pobranie kolejnej krotki Kn+1 przez zapytanie nadrzędne i powtórzenie kroków 2-4 Przykład: Wyświetl nazwiska pracowników zarabiających powyżej średniej dla swojego zespołu. SELECT p.nazwisko, p.placa_pod FROM pracownicy p WHERE p.placa_pod > (SELECT AVG(placa_pod) FROM pracownicy WHERE id_zesp = p.id_zesp)

  12. Podzapytania skorelowane(3) Pracownicy p Pracownicy SELECT nazwisko, placa_pod, id_zesp FROM pracownicy p WHERE placa_pod> (SELECT AVG(placa_pod) FROM pracownicy WHERE id_zesp=p.id_zesp)

  13. Podzapytania skorelowane(4) – operator EXIST, NOT EXIST • Operator zwraca wartość TRUE jeżeli podzapytanie zwraca jakąkolwiek wartość. Podzapytanie nie musi zwracać wartości z bazy danych, równie dobrze może zwracać dowolny literał Pokaż tylko tych pracowników, którzy mają podwładnych SELECT id_prac, nazwisko, etat, id_zesp FROM pracownicy p WHEREEXISTS (SELECT id_prac FROM pracownicy WHERE id_szefa = p.id_prac)

  14. Zakończenie Jak to opanujecie to tak będziecie mogli chodzić po szkole

More Related