SlideServe
Menu
Préférences
© SlideServe · v2026

SQL – Structured Query Language (3)

dextra avatar
13 diapositives · 288 Views · Sep 12, 2014

SQL – Structured Query Language (3). Wykład 7 Prowadzący: dr Paweł Drozda. Plan wykładu. Podzapytania Perspektywy. Podzapytania. Można stosować dla klauzuli: WHERE HAVING FROM Taka sama postać jak zwykłe zapytanie – ujęte w nawiasy Podzapytanie jako prawy argument predykatów

SQL – Structured Query Language (3) - slide 1
01 / 13SQL – Structured Query Language (3)
1 / 17

Télécharger la présentation

SQL – Structured Query Language (3)
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. SQL – Structured Query Language (3) Wykład 7 Prowadzący: dr Paweł Drozda

  2. Plan wykładu • Podzapytania • Perspektywy dr Paweł Drozda

  3. Podzapytania • Można stosować dla klauzuli: WHERE HAVING FROM • Taka sama postać jak zwykłe zapytanie – ujęte w nawiasy • Podzapytanie jako prawy argument predykatów =, <, <=, >, >=, <>, IN, NOT IN dr Paweł Drozda

  4. Typy Podzapytań • Liczba wyników • Wierszowe – wynikiem podzapytania jest pojedynczy wiersz • Tablicowe – wynikiem podzapytania jest wiele wierszy • Zależność od wierszy zapytania głównego • Zwykłe – gdy podzapytanie nie zależy od zapytania głównego • Skorelowane – gdy zapytanie wykorzystuje elementy zapytania głównego dr Paweł Drozda

  5. Podzapytania – przykłady (1) • Wierszowe SELECT * FROM pracownik WHERE zarobki = (SELECT MAX(zarobki ) FROM pracownik); • Tablicowe SELECT * FROM pracownik WHERE id_pracownika NOT IN (SELECT prowadzacy FROM przedmioty); SELECT * FROM student WHERE nazwisko LIKE ‘%a%’ AND nrindeksu IN (SELECT student FROM oceny WHERE ocena=5); INSERT INTO student(imie, nazwisko, adres, rok, telefon) SELECT imie, nazwisko, adres, 1, 997 from kandydaci; dr Paweł Drozda

  6. Podzapytania – przykłady(2) • Zwykłe SELECT tytul, autor FROM ksiazki WHERE cena = (SELECT MAX(cena) from ksiazki); • Skorelowane SELECT a.imie, a.nazwisko, a.zarobki, a.stanowisko FROM pracownik a WHERE zarobki = (SELECT MAX(b.zarobki) FROM pracownik b WHERE b.stanowisko = a.stanowisko); dr Paweł Drozda

  7. Podzapytania – kwantyfikatory (1) • ALL – dla wszystkich elementów podzapytania warunek musi być spełniony SELECT imie, nazwisko FROM pracownik WHERE zarobki > ALL (SELECT zarobki FROM pracownik WHERE stanowisko = ‘adiunkt’); • ANY(SOME) – co najmniej dla jednego elementu podzapytania warunek musi być spełniony SELECT imie, nazwisko FROM pracownik WHERE zarobki > ANY (SELECT zarobki FROM pracownik WHERE stanowisko = ‘adiunkt’); dr Paweł Drozda

  8. Podzapytania – kwantyfikatory (2) • EXISTS – kwantyfikator egzystencjalny „istnieje” SELECT nazwisko FROM pracownik WHERE EXISTS (SELECT ‘x’ FROM przedmioty WHERE przedmioty.prowadzacy = pracownik.id_pracownika); • NOT EXISTS – kwantyfikator uniwersalny z negacją „dla każdego nieprawda że” SELECT nazwisko FROM pracownik WHERE NOT EXISTS (SELECT ‘x’ FROM przedmioty WHERE przedmioty.prowadzacy = pracownik.id_pracownika); dr Paweł Drozda

  9. Podzapytania – tworzenie tabel • Po FROM SELECT a.stanowisko, 100*a.liczbaprac/b.liczbaprac as ‘procPracowników’, 100*a.zarob/b.zarob as ‘procZarobkow’ FROM (SELECT stanowisko, COUNT(*) AS liczbaprac, SUM(zarobki) as zarob FROM pracownik GROUP BY stanowisko) a, (SELECT COUNT(*) AS liczbaprac, SUM(zarobki) AS zarob FROM pracownik) b; • Tworzenie tabeli (po AS) CREATE TABLE nowa (Imie varchar(30), Nazwisko varchar(30)) AS SELECT imie, nazwisko FROM pracownik WHERE zarobki >4000; dr Paweł Drozda

  10. Perspektywy (1) • Nazwana tabela • Nie może istnieć samodzielnie – dane pobiera z tabel bazowych (stworzonych przez CREATE TABLE) lub innych perspektyw • W MySQL może posłużyć do zapamiętywania wykonywanych zapytań • Gdy dane są aktualizowane w tabeli bazowej – odzwierciedlenie w perspektywie • Gdy struktura tabeli bazowych się zmienia – brak odzwierciedlenia w perspektywie dr Paweł Drozda

  11. Perspektywy (2) • Określają widok na bazę danych dla pewnych grup użytkowników • Możliwe usuwanie, dodawanie, aktualizacja danych w perspektywie – dane w tabeli bazowej również zmieniana dr Paweł Drozda

  12. Perspektywy – SQL (1) • Tworzenie – składnia: CREATE [OR REPLACE] VIEW nazwa AS zapytanie; • Przykład: CREATE OR REPLACE VIEW Pierwszy AS SELECT nazwisko FROM Student WHERE rok=1; • Usuwanie – składnia: DROP VIEW nazwa [RESTRICT/ CASCADE]; • Opcja sprawdzania (WITH CHECK OPTION) – sprawdza czy warunek podany w perspektywie nie zostaje zmieniony przez modyfikację bądź dodanie nowej krotki dr Paweł Drozda

  13. Perspektywy – SQL (2) • Przykład CREATE VIEW bogacze AS SELECT * FROM Pracownik WHERE zarobki > 4000 WITH CHECK OPTION; INSERT INTO bogacze(nazwisko, imie , zarobki) VALUES (‘Biedak’, ‘Jan’, 2000); - takie zapytanie zwróci błąd INSERT INTO bogacze(nazwisko, imie , zarobki) VALUES (‘Bogaty’, ‘Stefan’, 5000); - krotka zostanie dodana UPDATE bogacze SET zarobki = zarobki – 400; - co się stanie dla zarobków pomiędzy 4000 – 4400? dr Paweł Drozda