SQL - JĘZYK ZAPYTAŃ
LABORATORIUM
dr inż. Piotr Muryjas
Katedra Informatyki
Politechnika Lubelska
Część 1. Wybieranie proste i warunkowe. Wybieranie danych z wielu tabel.
Podzapytania.
EGZAMINATORZY
Id_egzaminator VARCHAR2 (4)
Nazwisko VARCHAR2 (25)
Imie VARCHAR2 (15)
Kod_poczta VARCHAR2 (5)
Miasto VARCHAR2 (15)
Ulica VARCHAR2 (30)
Numer VARCHAR2 (8)
Tel VARCHAR2 (12)
Fax VARCHAR2 (12)
E_mail VARCHAR2 (30)
EGZAMINY
Nr_egz NUMBER (7)
Id_student <FK1> VARCHAR2 (7)
Id_przedmiot <FK2> NUMBER (3)
Id_egzaminator <FK3> VARCHAR2 (4)
Data_egz DATE
Id_osrodek <FK4> NUMBER (5)
Zdal VARCHAR2(1)
Id_student VARCHAR2 (7)
STUDENCI
Nazwisko VARCHAR2 (25)
Imie VARCHAR2 (15)
Data_ur DATE
Miejsce VARCHAR2 (15)
PESEL VARCHAR2 (11)
Kod_poczta VARCHAR2 (5)
Miasto VARCHAR2 (15)
Ulica VARCHAR2 (30)
Numer VARCHAR2 (8)
Tel VARCHAR2 (12)
Fax VARCHAR2 (12)
E_mail VARCHAR2 (30)
Nr_ECDL VARCHAR2 (9)
Data_ECDL DATE
OSRODKI
Id_osrodek NUMBER (5)
Nazwa_o VARCHAR2 (30)
Kod_poczta VARCHAR2 (5)
Miasto VARCHAR2 (15)
Ulica VARCHAR2 (30)
Numer VARCHAR2 (8)
PRZEDMIOTY
Id_przedmiot NUMBER (3)
Nazwa_p VARCHAR2 (40)
Opis VARCHAR2 (200)
przeprowadza
zdaje
jest tematem
jest miejscem
1. Wyświetlić podstawowe informacje o studentach (Nazwisko, Imie, Id_student) posortowane malejąco wg
nazwiska.
2. Wyświetlić informacje (Nazwisko, Imie, Id_egzaminator) o egzaminatorach z Lublina.
3. Podać nazwisko, imię i identyfikator studentów egzaminowanych w ośrodku o identyfikatorze 3.
4. Podać informacje, kiedy student posiadający identyfikator 0000049 zdawał egzaminy z poszczególnych
przedmiotów. Uporządkować informacje według czasu zdawania egzaminów. Zmienić format
wyświetlania daty tak, by wyświetlana była także informacja o nazwie miesiąca, w którym zdawano
egzamin a kolejne elementy daty były oddzielone znakiem /.
5. Z jakich przedmiotów przeprowadził egzaminy egzaminator o identyfikatorze 0001? Podać identyfikator
i nazwę przedmiotu.
6. Podać pełne nazwy ośrodków, w których student o identyfikatorze 0000049 zdawał egzaminy
z przedmiotów o identyfikatorze 1 oraz 3.
7. Jakie osoby były egzaminowane przez egzaminatora o identyfikatorze 0001? Podać ich imię i nazwisko
oraz identyfikator.
8. Podać informację, w jakie dni tygodnia student o identyfikatorze 0000060 zdawał egzaminy
z poszczególnych przedmiotów.
9. Wyświetlić informację, kto, jaki przedmiot i kiedy zdawał egzaminy w okresie od 20 kwietnia 2000 r. do
20 maja 2000 r.
10. Jakie przedmioty zdawali studenci o identyfikatorach 0000061 i 0500323? Podać identyfikator i nazwę
przedmiotu.
©Piotr Muryjas, Katedra Informatyki, Politechnika Lubelska
2
11. Wyświetlić tych studentów (Nazwisko, Imie, Id_student), którzy jeszcze nie zdawali egzaminu
z przedmiotu o identyfikatorze 7.
12. Wyświetlić informacje o tych ośrodkach (Id_osrodek, Nazwa_o), w których nie przeprowadzono jeszcze
żadnego egzaminu.
13. Którzy egzaminatorzy mają nazwiska zaczynające się na literę M. Podać ich nazwisko, imię oraz
identyfikator?
14. Kto i jakie przedmioty zdawał w ośrodkach o nazwach CKMP i LBS?
15. Podać nazwisko i imię egzaminatorów, którzy egzaminowali studenta o identyfikatorze 0500323.
16. Jakie przedmioty zdawano w miesiącu lipcu w ośrodku o identyfikatorze 3?
17. Kto i jaki przedmiot zdawał razem (w tym samym dniu) ze studentem o identyfikatorze 0500323?
18. Kto i jakie przedmioty zdawał później od ostatniego egzaminu studenta o identyfikatorze 0500324?
19. Jakie przedmioty były zdawane po ostatnim egzaminie z przedmiotu o identyfikatorze 4?
20. Którzy studenci zdawali egzaminy w ośrodkach znajdujących się poza ich miejscem zamieszkania?
Część 2. Grupowanie danych.
1. Ile egzaminów zdawał każdy ze studentów?
2. Ile egzaminów przeprowadzono w każdym z ośrodków?
3. Ile egzaminów przeprowadzono w ośrodkach o nazwie CKMP oraz LBS?
4. Ile egzaminów przeprowadził egzaminator o identyfikatorze 0006?
5. Ile egzaminów przeprowadził w ośrodku CKMP egzaminator o identyfikatorze 0001?
6. Podać datę pierwszego i ostatniego egzaminu przeprowadzonego przez egzaminatora o identyfikatorze
0004.
7. Którzy egzaminatorzy przeprowadzili więcej niż 10 egzaminów?
8. W których ośrodkach przeprowadzono więcej niż 7 egzaminów?
9. W którym miesiącu i którego roku przeprowadzono najwięcej egzaminów?
10. Jaki przedmiot był zdawany przez więcej niż 5 studentów?
11. Ile egzaminów zdawał student o identyfikatorze 0000049 w ośrodku o identyfikatorze 1?
12. Podać datę pierwszego i ostatniego egzaminu przeprowadzonego w każdym z ośrodków.
13. Który egzaminator przeprowadził najwięcej egzaminów w poszczególnych ośrodkach?
14. Który student zdawał pierwszy egzamin w każdym z ośrodków?
15. Z którego przedmiotu zdawano najwięcej egzaminów w poszczególnych ośrodkach?
16. Ile egzaminów zdawał student o identyfikatorze 0500324?
17. Ile egzaminów przeprowadzono w poszczególnych ośrodkach?
18. Ile egzaminów przeprowadzili poszczególni egzaminatorzy?
19. Ile osób zdawało egzaminy z poszczególnych przedmiotów?
20. Ile osób zdawało egzaminy w poszczególnych ośrodkach?
21. Ile osób egzaminował każdy z egzaminatorów?
22. Który student przystąpił do egzaminu i nie zdał najwięcej egzaminów?
©Piotr Muryjas, Katedra Informatyki, Politechnika Lubelska
3
23. Który student zdał najmniej egzaminów? Uwzględnić tylko tych studentów, którzy przystąpili już do
egzaminów.
24. W których ośrodkach przeprowadzono z przedmiotu o identyfikatorze 1 więcej niż 2 egzaminy?
25. Podać identyfikator egzaminatora, który pierwszy przeprowadził egzamin.
26. Podać identyfikator studenta, który jako pierwszy zdał egzamin.
27. Podać nazwisko i imię egzaminatora, który przeprowadził najwięcej egzaminów.
28. Który egzaminator egzaminował najwięcej osób?
29. W którym ośrodku przystąpiło do egzaminu najwięcej osób?
30. Z którego przedmiotu ostatni egzamin był zdawany później od ostatniego egzaminu z przedmiotu
o identyfikatorze 1?
31. Ilu studentów nie zdało egzaminu z poszczególnych przedmiotów? Uwzględnić tylko te rzedmioty,
z których przeprowadzono już egzaminy.
32. W którym miesiącu i którego roku przeprowadzono najwięcej egzaminów w ośrodku o nazwie Atena?
Podać nazwę miesiąca i rok czterocyfrowy.
33. W którym ośrodku przeprowadzono najwięcej egzaminów?
34. Którzy studenci zdawali najwięcej egzaminów w poszczególnych ośrodkach? Podać nazwę ośrodka oraz
imię i nazwisko studenta.
35. Podać informację, którzy egzaminatorzy przeprowadzili najwięcej egzaminów z poszczególnych
przedmiotów.
36. Z którego przedmiotu zdawano najwięcej egzaminów?
Część 3. Tworzenie struktur danych.
Wykonanie poniższych zadań wymaga wykorzystania poniższego diagramu związków encji.
WYKLADOWCY
Id_wykladowca VARCHAR2 (4)
Nazwisko VARCHAR2 (25)
Imie VARCHAR2 (15)
Miasto VARCHAR2 (15)
ZALICZENIA
Nr_zal NUMBER (7)
Id_sluchacz <FK1> VARCHAR2 (7)
Id_temat <FK2> NUMBER (3)
Id_wykladowca <FK3> VARCHAR2 (4)
Data_egz DATE
Id_uczelnia <FK4> NUMBER (5)
Zdal VARCHAR2(1)
Id_sluchacz VARCHAR2 (7)
SLUCHACZE
Nazwisko VARCHAR2 (25)
Imie VARCHAR2 (15)
PESEL VARCHAR2 (11)
Miasto VARCHAR2 (15)
UCZELNIE
Id_uczelnia NUMBER (5)
Nazwa_u VARCHAR2 (30)
Miasto VARCHAR2 (15)
TEMATY
Id_temat NUMBER (3)
Tytul VARCHAR2 (40)
Opis VARCHAR2 (200)
przeprowadza
zdaje
jest tematem
jest miejscem
©Piotr Muryjas, Katedra Informatyki, Politechnika Lubelska
4
1. Utworzyć tabelę Wykladowcy według schematu podanego na rysunku. Zdefiniować klucz podstawowy
oraz warunki integralności dla pól Imie i Nazwisko, uniemożliwiające przyjmowanie wartości
nieokreślonej. Nazwać wszystkie warunki integralności w tej tabeli.
2. Utworzyć tabelę Sluchacze według schematu podanego na rysunku. Zdefiniować i nazwać warunki
integralności dotyczące:
•
klucza podstawowego,
•
unikalności wartości w polach PESEL,
•
określoności wartości w polach Imie i Nazwisko.
3. Utworzyć tabelę Uczelnie według schematu podanego na rysunku. Zdefiniować klucz podstawowy oraz
warunek określoności dla pola Nazwa_u. Nazwać wszystkie warunki integralności w tej tabeli.
4. Utworzyć tabelę Tematy według schematu podanego na rysunku. Zdefiniować klucz podstawowy oraz
warunek określoności dla pola Tytul. Nazwać wszystkie warunki integralności w tej tabeli.
5. Utworzyć tabelę Zaliczenia według schematu podanego na rysunku. Zdefiniować i nazwać warunki
integralności dotyczące:
•
klucza podstawowego,
•
określoności wartości we wszystkich polach tabeli z wyjątkiem pola zdal,
•
możliwości wprowadzenia do pola zdal tylko wartości Y lub N.
6. Dla tabeli Zaliczenia zdefiniować klucze obce według schematu podanego na rysunku. Nazwać tak
zdefiniowane warunki integralności danych.
7. Do tabeli Wykladowcy dodać nowe pole o nazwie Kwota typu rzeczywistego, które reprezentuje
informację o cenie egzaminu u danego egzaminatora. Zdefiniować nazwany warunek integralności, który
zapewni, iż wartość wprowadzana do tego pola będzie zawsze większa od 10.
8. W tabeli Wykladowcy nadać polu Kwota wartość domyślną równą 25.
9. W tabeli Wykladowcy wyłączyć kontrolę warunku integralności pola Kwota.
10. Utworzyć nową tabelę Lublin_stud, w której znajdą się informacje o słuchaczach (Nazwisko, Imie,
Id_student), mieszkających w Lublinie. Informacje wybrać z tabeli Studenci.
11. Dla tabeli Lublin_stud zdefiniować klucz podstawowy oparty na polu Id_student.
12. Zdefiniować związek między tabelami Lublin_stud oraz Zaliczenia oparty na polach Id_student (w tabeli
Lublin_stud) i Id_sluchacz (w tabeli Zaliczenia).
13. Dla tabeli Lublin_stud usunąć klucz podstawowy.
14. Na podstawie danych zawartych w tabeli Egzaminy podać ile egzaminów przeprowadzili poszczególni
egzaminatorzy? Podać identyfikator, imię, nazwisko egzaminatora oraz liczbę przeprowadzonych
egzaminów. Informacje zapisać w nowej tabeli o nazwie L_Egzaminator.
15. Utworzyć tabelę o nazwie Max_Ucz zawierającą dane o egzaminatorach, którzy przeprowadzili
najwięcej egzaminów w poszczególnych ośrodkach oraz dane o liczbie egzaminów. Wykorzystać dane
zawarte w tabelach Egzaminy, Egzaminatorzy oraz Osrodki.
16. Utworzyć tabelę LBS_egz, która będzie zawierać informacje o egzaminach przeprowadzonych
w ośrodku o nazwie LBS. Wykorzystać dane z tabel Egzaminy, Studenci, Egzaminatorzy oraz
Przedmioty.
17. Usunąć następujące tabele:
•
Wykladowcy, Sluchacze, Tematy, Uczelnie, Zaliczenia
•
Lublin_stud
•
L_Egzaminator
•
Max_Ucz
•
LBS_egz.
©Piotr Muryjas, Katedra Informatyki, Politechnika Lubelska
5
Część 4. Perspektywy.
1. Zdefiniować perspektywę o nazwie p_studenci opartą na tabeli studenci, przez którą widoczne będą
jedynie następujące informacje o studentach: Id_student, Nazwisko, Imie, Data_ur, Nr_ECDL, Miasto.
2. Korzystając z perspektywy p_studenci wyświetlić informacje o studentach z Lublina.
3. Zdefiniować perspektywę o nazwie p_CKMP, przez którą widoczne będą informacje (na podstawie
tabeli Egzaminy) tylko o egzaminach przeprowadzonych w ośrodku o nazwie CKMP.
4. Korzystając z perspektywy p_CKMP, określić liczbę egzaminów przeprowadzonych przez
poszczególnych egzaminatorów w ośrodku CKMP.
5. Zdefiniować perspektywę, która umożliwi wyświetlenie informacji na temat:
Z których przedmiotów przeprowadzono najwięcej egzaminów w poszczególnych ośrodkach? Podać
identyfikator i nazwę ośrodka oraz identyfikator i nazwę przedmiotu.
6. Zdefiniować perspektywę, która umożliwi wyświetlenie informacji na temat:
Którzy studenci zdawali najwięcej egzaminów u poszczególnych egzaminatorów? Podać identyfikator,
imię i nazwisko egzaminatora oraz identyfikator, imię i nazwisko studentów.
7. Zdefiniować perpektywę, która umożliwi wyświetlenie szczegółowych informacji o liczbie egzaminów
zdawanych przez poszczególnych studentów. Proszę uwzględnić także tych studentów, którzy nie
zdawali jeszcze żadnego egzaminu.
8. Zdefiniować perpektywę, która umożliwi wyświetlenie szczegółowych informacji o liczbie egzaminów
przeprowadzonych w poszczególnych ośrodkach. Podać identyfikator i nazwę ośrodka. Proszę
uwzględnić także te ośrodki, w których nie przeprowadzono jeszcze żadnego egzaminu.
9. Zdefiniować perspektywę, która umożliwi wyświetlenie informacji o tych ośrodkach, w których
przeprowadzono najmniej i najwięcej egzaminów. Podać identyfikator i nazwę ośrodka oraz liczbę
przeprowadzonych egzaminów.
10. Usunąć perspektywy p_studenci i p_CKMP oraz wszystkie pozostałe utworzone w trakcie realizacji
powyższych zadań.
©Piotr Muryjas, Katedra Informatyki, Politechnika Lubelska
6