Podzapytania w języku SQL
This presentation is the property of its rightful owner.
Sponsored Links
1 / 14

Podzapytania w języku SQL PowerPoint PPT Presentation


  • 199 Views
  • Uploaded on
  • Presentation posted in: General

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ń.

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Podzapytania w j zyku sql

Podzapytania w języku SQL

Czas pójść już dalej


Podzapytania w j zyku sql

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


Podzapytania w j zyku sql

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


Podzapytania w j zyku sql

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')


Podzapytania w j zyku sql

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')


Podzapytania w j zyku sql

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')


Podzapytania w j zyku sql

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)


Podzapytania w j zyku sql

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)


Podzapytania w j zyku sql

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)


Podzapytania w j zyku sql

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 relacjaPodzapytanie skorelowane

    WHERE atrybut j = atrybut b );


Podzapytania w j zyku sql

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)


Podzapytania w j zyku sql

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)


Podzapytania w j zyku sql

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)


Podzapytania w j zyku sql

Zakończenie

Jak to opanujecie to tak będziecie mogli chodzić po szkole


  • Login