Język SQL – zapytania zagnieżdżone (podzapytania)

Slides:



Advertisements
Podobne prezentacje
Konstrukcja systemów obiektowych i rozproszonych
Advertisements

Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Optymalizacja zapytań
Egzamin.
Podział i zastosowanie
Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Obiektowe języki zapytań
Bazy danych i inżynieria oprogramowania
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
Bazy danych 8. SQL podstawy P. F. Góra semestr letni 2004/05.
PHP + MySQL część II.
Język SQL ma ciekawe możliwości tworzenia zapytań
© K.Subieta. Obiektowe języki zapytań 09, Folia 1 maj 2004 Obiektowe języki zapytań Wykładowca: Kazimierz Subieta Polsko-Japońska Wyższa Szkoła Technik.
Obiektowe Bazy Danych Paweł Ciach.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Proste zapytania w języku SQL
Rozdział 2: Język bazy danych - SQL
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 9: Język manipulowania danymi DML (Data Manipulation Language)
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 4: Język bazy danych - SQL Połączenia.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 3: Język bazy danych - SQL Funkcje grupowe.
Co to jest studium przypadku?
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
SQL-owskie szlaki górskie
SQL select kredytobiorca,bank, rodzaj, data_zawarcia, klasyfikacja,kwota, terminzapadalnosci-data_zawarcia iledni from tab_kredyt where (terminzapadalnosci-data_zawarcia)>1095.
Witaj na lekcji cyfr rzymskich!
Zapytania SQL: wydajność i optymalizacja
BD-LAB6 Wojciech Pieprzyca
WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka.
Język SQL – ciąg dalszy DML (Data Manipulation Language)
Język SQL (Structured Query Language) DDL (Data Definition Language)
Przykład włamania do aplikacji internetowej poprzez modyfikację zapytań SQL Skrypty ASP Serwer bazy danych MS SQL Server Piotr Kuźniacki BDi.
Structured Query Language
OPERACJA DZIELENIA W SQL
Wprowadzenie do JSP Copyright © Politecnico di Milano September 2003 Translation: Kamil Żyła, Politechnika Lubelska.
SQL – zapytania posumowanie
SQL – Structured Query Language (3)
Przetwarzanie w oknie - nowa siła zapytań
Automatyczne dereferencje w języku SBQL
Programowanie w języku Matlab
Programowanie strukturalne i obiektowe
Instrukcja USOSweb Wersja: Opracował: Sebastian Sieńko Moduł sprawdzianów.
SQL - Structured Query Language
Łódź, 3 października 2013 r. Katedra Analizy Nieliniowej, WMiI UŁ Podstawy Programowania Programy różne w C++
Języki i środowiska programowania systemów rozproszonych, Wykład 09, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Języki i środowiska programowania systemów rozproszonych, Wykład 01 SBA&SBQL, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Języki i środowiska programowania systemów rozproszonych, Wykład 05, Slajd Języki i środowiska programowania systemów rozproszonych Wykładowca:
Język SQL – przypomnienie
Rozwiązanie zadań do zaliczenia I0G1S4 // indeks
Autor: Joanna Barańska Promotor: dr inż. Paweł Figat Konsultant:
PL/SQL – dalsza wędrówka
Język manipulacji danymi – SQL cz. I
Temat 1: Strukturalny język zapytań SQL
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Wykład II Język SQL – polecenia DQL Powtórzenie wiadomości – cz. 1
Metody numeryczne szukanie pierwiastka metodą bisekcji
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
PHP + MySQL Podstawy pracy z bazą danych Damian Urbańczyk.
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Krakowski Piotr, Woliński Radosław, Kowalski Piotr, Machowski Michał.
Komendy SQL do pracy z danymi
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 5: Operatory zbiorowe.
Język SQL – polecenie Select
Relacja (ang.relation) Po podzieleniu danych na tabele i zdefiniowaniu pól kluczy podstawowych trzeba wprowadzić do systemu bazy danych informacje na temat.
Warstwowe sieci jednokierunkowe – perceptrony wielowarstwowe
1 Instrukcja SELECT : SELECT[DISTINCT  ALL] {*  [wyrażenie_kolumnowe [AS nowa_nazwa]],[…]} FROMNazwaTabeli [alias],[...] [WHEREwarunek_selekcji_wierszy]
Wybieranie wierszy: 1 Warunek WHERE Rodzaje warunków: - liczbowe - liczbowe z zakresu - znakowe.
Podstawy SQL.
Widoki (views) - Perspektywy:
Ćwiczenie 1 Podaj liczbę wizyt w nieruchomościach w kolejnych dniach poprzedniego miesiąca kalendarzowego: SELECT data_wizyty, COUNT(*) AS liczba FROM.
Zapis prezentacji:

Język SQL – zapytania zagnieżdżone (podzapytania)

Zapytania zagnieżdżone Język SQL pozwala na zagnieżdżanie zapytań (podzapytania) Oznacza to, że wynik jednego zapytania może być wykorzystany przez inne zapytanie, będące jego nadzapytaniem Inaczej – jedno zapytanie może w klauzuli where zawierać inne, zagnieżdżone zapytanie.

Zapytania zagnieżdżone – przykład 1 Podaj towary z działu, którego kierownikiem jest Kowalski select nazwa from towary where dzial = (select dzial from dzialy where kierownik = ‘Kowalski’) podzapytanie zwraca numer działu, którego kierownikiem jest Kowalski; wartość ta jest następnie wykorzystana w nadzapytaniu w warunku where

Zapytania zagnieżdżone c.d. Standardowym zastosowaniem zapytań zagnieżdżonych jest testowanie przynależności do zbioru, porównywanie zbiorów, oraz sprawdzanie liczebności zbioru. Operatory należenia do zbioru: IN (należy) NOT IN (nie należy)

Zapytania zagnieżdżone – przykład 2 Podaj towary z działów, których kierownikiem jest Kowalski select nazwa from towary where dzial in (select dzial from dzialy where kierownik = ‘Kowalski’) Jeżeli Kowalski jest kierownikiem więcej niż jednego działu, podzapytanie zwróci zbiór wartości. Dlatego zamiast znaku = musimy zastosować operator in

Zapytania zagnieżdżone – przykład 3 select nazwisko, imie from pracownicy where pesel in (select peselp from obsada where rok_akad = '2003L') Pracownicy, którzy mają zajęcia na wydziale w semestrze letnim w roku akademickim 2003

Zadania Podaj nazwiska pracowników, którzy pracują w dziale ‘SYSTEMY EKSPERCKIE’ Podaj nazwiska pracowników, którzy pracują na Piotrowie. Podaj nazwę działu, w którym nie pracuje żaden pracownik.

Zadania Podaj nazwiska pracowników, którzy pracują na tym samym stanowisku co Hapke. Podaj nazwisko najlepiej zarabiającego pracownika. Podaj nazwiska pracowników zarabiających powyżej średniej.

Klauzula SOME 5 6 5 5 5 (= some)  in Jednakże, ( some)  not in F <porównanie> some r t r : (F <porównanie> t) gdzie <porównanie> to:  5 6 (5< some ) = true (read: 5 < some tuple in the relation) (5< some ) = false 5 (5 = some ) = true 5 (5  some ) = true (bo 0  5) 5 (= some)  in Jednakże, ( some)  not in

Klauzula ALL F <porówn> all r t r (F <porówn> t) 5 5 6 (5< all ) = false 6 (5< all ) = true 10 4 (5 = all ) = false 5 4 (5  all ) = true (bo 5  4 i 5  6) 6 ( all)  not in Jednakże, (= all)  in

Klauzula ALL - przykład select nazwa from towary where cena >= ALL (select cena where rodzaj = ‘AGD’) Wybierz towary, których cena jest wyższa od każdej z cen towarów AGD (można oczywiście w tym przypadku zastąpić MAX)

Zadania Podaj nazwiska i stanowiska pracowników, którzy pracują na stanowiskach nie obsadzonych w dziale 20 (wykorzystaj ALL). Sprawdź, czy istnieją pracownicy zatrudnieni wcześniej od wszystkich pracowników Systemów Rozproszonych (wykorzystaj ALL). Sprawdź, czy BRZEZINSKI zarabia więcej od któregokolwiek z innych profesorów (wykorzystaj SOME; jeżeli tak – wypisz ‘TAK’).

Podzapytania skorelowane Dotychczasowe przykłady dotyczyły podzapytań nieskorelowanych – były one obliczane tylko raz, były niezależne od nadzapytania Podzapytania skorelowane – zależą od tego, jakie wartości są przetwarzane w nadzapytaniu, wykonywane są wielokrotnie dla zmieniających się wartości

Przykład Podaj nazwę najdroższego towaru od każdego z dostawców. select nazwa from towary T1 where cena = (select max(cena) from towary T2 where T2.dostawca = T1.dostawca) Podzapytanie zwraca najwyższą cenę u danego dostawcy. Wynik podzapytania zależy od tego kto jest dostawcą towaru aktualnie analizowanego w nadzapytaniu

Zadania Dla każdego działu podaj nazwisko najmniej zarabiającego pracownika. Podaj nazwiska pracowników, którzy zarabiają więcej od swojego szefa. Podaj nazwiska pracowników, których płaca nie mieści się w ‘widełkach’ płacowych na ich stanowisku. Podaj nazwę działu, w którym pracuje najlepiej zarabiający pracownik.

Test istnienia Konstrukcja exists zwraca wartość true jeżeli argument zwracany jako wartość podzapytania jest niepusty. exists r  r  Ø not exists r  r = Ø

Test istnienia - przykład Podaj działy, w których nie ma towarów. select * from dzialy d where not exists (select * from towary t where t.dzial = d.dzial)

Zadania – wykorzystaj exists/not exists Podaj działy, w których nie pracuje żaden pracownik. Podaj nazwiska pracowników, którzy mają chociaż jednego podwładnego. Podaj działy, w których chociaż jeden profesor zarabia powyżej 1000.

Zadanka ekstra Podaj nazwiska trzech najlepiej zarabiających pracowników (z możliwością uogólnienia na n pracowników) Znajdź dział zatrudniający najwięcej pracowników. Sprawdź, czy istnieje pracownik, który ma podwładnych w każdym z działów (oprócz 50 oczywiście). w razie braku pomysłów – wskazówki na następnym slajdzie...

Zadanka ekstra - wskazówki być jednym z trzech najlepiej zarabiających to znaczy, że co najwyżej dwie osoby zarabiają lepiej; Wykorzystaj podzapytanie zliczające te osoby; wynik podzapytania można przyrównać do liczby nie można zrobić max(count(_)); wykorzystaj ALL „pracownik, który ma podwładnych w każdym z działów” to inaczej: „nie istnieje dział, który nie zatrudnia podwładnych danego pracownika”; wykorzystaj „not exists”