Professional Documents
Culture Documents
Podstawy Relacyjnych Baz Danych Wyklad Cz2 SQL
Podstawy Relacyjnych Baz Danych Wyklad Cz2 SQL
Podstawy Relacyjnych Baz Danych Wyklad Cz2 SQL
Wprowadzenie do SQL
Wprowadzenie do SQL
SQL zapewnia obsug:
zapyta - wyszukiwanie danych w bazie
operowania danymi - wstawianie, modyfikowanie i usuwanie
definiowania danych - dodawanie do bazy danych nowych tabel
sterowania danymi - ochrona przed niepowoanym dostpem
SELECT kolumna1,kolumna2
FROM nazwa-tabeli;
W klauzuli SELECT zostaj okrelone nazwy kolumn.
Klauzula FROM suy do okrelenia tabeli (tabel), ktrej
dotyczy zapytanie.
SELECT *
FROM nazwa-tabeli;
Gwiazdka oznacza, e naley wyszuka wszystkie kolumny
tabeli
Utwrz zapytanie, ktre wywietli ca tabel KSIKA.
SELECT *
FROM Ksika;
[nazwa_tabeli].nazwa_kolumny,[nazwa
_tabeli].nazwa_kolumny
10
Uporzdkowanie wierszy
Utwrz zapytanie, ktre z tabeli KSIKA wywietli
nastpujce pola: Sygnatura,Tytu, Nazwisko_A i posortuje
rekordy wedug Nazwiska autora:
Uporzdkowanie wierszy
Utwrz zapytanie, ktre wywietli ca tabel CZYTELNIK i
posortuje rekordy wedug Nazwiska czytelnika, raz rosnco, a
raz malejco:
SELECT *
FROM Czytelnik
ORDER BY Nazwisko_Cz ASC ;
SELECT *
FROM Czytelnik
ORDER BY Nazwisko_Cz DESC ;
11
12
Uporzdkowanie wierszy
Utwrz zapytanie, ktre z tabeli CZYTELNIK wywietli
nastpujce dane: ID czytelnika, Nazwisko, imi, typ
czytelnika. Posortuj rekordy wedug Nazwiska i typu
czytelnika:
SELECT ID, Nazwisko_Cz, Imi_Cz, [typ czytelnika]
FROM Czytelnik
ORDER BY Nazwisko_Cz, [typ czytelnika];
Uporzdkowanie wierszy
Utwrz zapytanie, ktre z tabeli CZYTELNIK wywietli
nastpujce dane: ID czytelnika, Nazwisko, imi, typ
czytelnika. Posortuj rekordy wedug Nazwiska i typu
czytelnika, uywajc numerw kolumn:
SELECT ID, Nazwisko_Cz, Imi_Cz, [typ czytelnika]
FROM Czytelnik
ORDER BY 2, 4 ;
13
14
15
18
operator_porwnania warto
19
SELECT *, Nazwisko_A
FROM Ksika
WHERE Nazwisko_A = Boratyn;
Logiczne porwnania
IN (lista wartoci)
BETWEEN (przedzia wartoci)
LIKE 'napis wyszukiwania'
NULL test wartoci
21
22
SELECT *
FROM Ksika
WHERE [Rok wydania] <> 1995;
NUMDZ = 30 OR NUMDZ = 40
Co jest rwnowane:
25
27
"zaczynajcy si od napisu"
"koczcy si na napisie"
"zawierajcy napis"
Znaki uniwersalne:
29
32
31
Formuowanie warunku
Wartoci NULL nie podlegaj adnym operacjom
porwnania, gdy jest ona traktowana jako warto
nieznana
SQL umoliwia testowanie pl w poszukiwaniu wartoci
NULL
Uycie w klauzuli WHERE zwrotu IS NULL jest
wykorzystywane do sprawdzania czy pole zawiera t
warto
Zamiast standardowego operatora porwnania pojawia
si sowo IS
Sowo NULL nie jest zawarte w cudzysowie
Mona dokona przeszukania danych w celu wybrania
obiektw posiadajcych wartoci
W tym celu uywa si wyraenia IS NOT NULL
SELECT ...
FROM ...
WHERE warunek AND warunek;
33
SELECT ...
FROM ...
WHERE warunek OR warunek;
35
37
38
Formuowanie warunku
W wyniku porwnania powstaje warto logiczna TRUE (prawda) lub
FALSE (fasz)
Wartoci logiczne mona czy w wyraenia logiczne za pomoc
operatorw logicznych AND, OR i NOT
Priorytet operatorw wykorzystywanych w budowie wyrae:
operatory porwnania, NOT, AND, OR
Porwnywanie tekstw - dwa teksty s rwne, jeli wystpuj w nich
kolejno te same znaki
Przy tecie nierwnociowym tekstw, tzn. przy wykonywaniu
porwna takich jak < lub >=, o wartoci porwnania decyduje, czy
kolejne znaki z tekstu z lewej strony s alfabetycznie wczeniejsze, czy
dalsze w stosunku do znakw z tekstu umieszczonego po prawej stronie
wyraenia
Przykady
Adamski > Adamowicz
Adam < Adamowicz
Rzutowanie i selekcja
Selekcja - jest to utworzenie poziomego podzbioru wierszy z
pojedynczej tabeli. Ten rodzaj klauzuli SELECT zwraca niektre
wiersze i wszystkie kolumny z tabeli:
SELECT *
FROM Czytelnik
WHERE wydzia=ZiE;
Projekcja - jest to utworzenie pionowego podzbioru z kolumn z
pojedynczej tabeli. Ten rodzaj klauzuli SELECT zwraca niektre
kolumny i wszystkie wiersze z tabeli:
SELECT sygnatura,tytu,nazwisko_A
FROM Ksika;
39
41
42
Wynik zapytania
Tytu
MSAccess 2.0 System. Oblicze. Ku aplikacjom
MSAccess 2.0 System. Oblicze. Ku aplikacjom
MSAccess 2.0 System. Oblicze. Ku aplikacjom
MSAccess 2.0 System. Oblicze. Ku aplikacjom
MSAccess 2.0 System. Oblicze. Ku aplikacjom
Alchemia pamici
Alchemia pamici
Alchemia pamici
Spjrz w okna Windows
Spjrz w okna Windows
Spjrz w okna Windows
Spjrz w okna Windows
Obiektowe bazy danych
Obiektowe bazy danych
Obiektowe bazy danych
Obiektowe bazy danych
Obiektowe bazy danych
Podstawy rachunkowoci
Podstawy rachunkowoci
Wprowadzenie do psychologii matematycznej
Wprowadzenie do psychologii matematycznej
Wprowadzenie do psychologii matematycznej
Wprowadzenie do psychologii matematycznej
Wprowadzenie do psychologii matematycznej
Wprowadzenie do filozofii
Wprowadzenie do filozofii
Wprowadzenie do filozofii
44
Wynik zapytania
Tytu
Alchemia pamici
MSAccess 2.0 System. Oblicze. Ku aplikacjom
Obiektowe bazy danych
Podstawy rachunkowoci
Spjrz w okna Windows
Wprowadzenie do filozofii
Wprowadzenie do psychologii matematycznej
Funkcje agregujce
Funkcja COUNT(nazwa_kolumny)
Funkcja SUM(nazwa_kolumny)
Funkcja AVG(nazwa_kolumny)
Funkcja MIN(nazwa_kolumny)
Funkcja MAX(nazwa_kolumny)
45
46
GROUP BY
Alchemia pamici
Alchemia pamici
Alchemia pamici
Podstawy rachunkowoci
Podstawy rachunkowoci
Obiektowe bazy danych
Wprowadzenie do filozofii
Wprowadzenie do filozofii
Spjrz w okna Windows
Spjrz w okna Windows
47
48
Podstawy rachunkowoci
Alchemia pamici
1
2
60
20
40
100
50
49
50
GROUP BY
Alchemia pamici
Alchemia pamici
Alchemia pamici
Podstawy rachunkowoci
Podstawy rachunkowoci
Obiektowe bazy danych
Wprowadzenie do filozofii
Wprowadzenie do filozofii
Spjrz w okna Windows
Spjrz w okna Windows
Podstawy rachunkowoci
Alchemia pamici
1
2
60
20
40
100
50
51
52
50
Alchemia pamici
53
54
55
56
57
58
Podzapytania
Podzapytania to oddzielna instrukcja SELECT, ujta w nawiasy,
zawierajca wszystkie konstrukcje SQL, za wyjtkiem UNION i
ORDER BY:
SELECT ....
FROM ...
WHERE warunek (podzapytanie)
Podzapytanie jest wykonywane jako pierwsze i jego wynik jest
zapisywany do pamici. Warto lub wartoci s przekazywane do
warunku w zapytaniu gwnym.
59
60
NAZWP
Szymaski
Andrzejewski
Walczak
J asiski
Marcinkowski
Bielecki
Ceglarek
Szkutnik
Szefowicz
Turek
Adamski
J aneczko
Felek
Miler
ZATRUD
ZAROB PROW
NUMDZ
1999-12-17
800
20
1991-02-20
1600
300
30
1991-02-22
1250
500
30
1991-04-02
2975
20
1991-09-28
1250
1400
30
1991-05-01
2850
30
1994-06-09
2450
10
1992-12-09
3000
20
1991-11-17
5000
10
1991-09-08
1500
0
30
1993-01-12
1100
20
1991-12-03
950
30
1991-12-03
3000
20
1992-01-23
1300
10
Podzapytania
NAZWDZ
KSIGOWO
BADANIA
SPRZEDA
OPERACJ E
LOKALIZACJA
WARSZAWA
GDASK
KRAKW
POZNA
Podzapytania
STANOWISKO KIER
URZDNIK
7902
SPRZEDAWCA
7698
SPRZEDAWCA
7698
KIEROWNIK
7839
SPRZEDAWCA
7698
KIEROWNIK
7839
KIEROWNIK
7839
ANALITYK
7566
PREZES
SPRZEDAWCA
7698
URZDNIK
7788
URZDNIK
7698
ANALITYK
7566
URZDNIK
7782
Tabela PRACOWNIK
NUMP
7369
7499
7521
7566
7654
7698
7782
7788
7839
7844
7876
7900
7902
7934
Tabela DZIA
NUMDZ
10
20
30
40
61
62
Podzapytania
Wybra pracownikw, ktrzy pracuj w
Warszawie:
SELECT *
FROM pracownicy
WHERE numdz IN
(SELECT numdz
FROM dzia
WHERE lokalizacja = Warszawa);
Podzapytania
Wybra pracownikw, ktrzy zarabiaj mniej
ni wynosi rednia pensja:
SELECT *
FROM pracownicy
WHERE zarob <
(SELECT AVG(zarob)
FROM pracownicy);
63
64
Podzapytania
Podzapytanie samo w sobie moe zawiera jedno lub wicej
podzapyta. Mwimy, e podzapytania s zagniedone.
Podzapytania uyte w wicej ni jednym predykacie:
SELECT ....
FROM ...
WHERE warunek1 (podzapytanie1)
AND warunek2 (podzapytanie2)
Podzapytania
SELECT *
FROM pracownicy
WHERE numdz IN
65
66
Podzapytania
Ktrzy pracownicy z tego samego miejsca
pracy co Kowalski zarabiaj mniej ni
wynosi rednia pensja?
67
68
Podzapytania
ANY
Suy do porwnywania wartoci z kad wartoci zwracan przez podzapytanie.
Liczba > ANY (lista liczb) wiksze ni przynajmniej jeden element z
listy.
<
=
ALL
Suy do porwnywania wartoci ze wszystkimi wartociami zwracanymi przez
podzapytanie:
Liczba > ALL (podzapytanie zwracajace list liczb)
>=
<=
predykat jest prawdziwy, gdy liczba po lewej stronie jest wiksza ni kada liczba
na licie.
Podzapytania
Kto zarabia wicej ni ktokolwiek o nazwisku Nowak?
69
70
Podzapytania
#rwnowany zapis z IN
Podzapytania
Wskaza wszystkich pracownikw (NUMP, NAZWP, NUMDZ,
STANOWISKO, ZAROB), ktrych pensja jest wysza ni pensja
wszystkich kierownikw
71
72
Podzapytania skorelowane
W tym typie podzapytania warto z gwnego
zapytania jest przekazywana do podzapytania,
aby mogo by ono wykonane.
Wynik podzapytania skorelowanego uywany
jest do obliczenia wartoci predykatu gwnego
zapytania i do znalezienia wierszy, ktre maj
by wywietlane. Nowy wynik jest obliczany dla
kadego wiersza tabeli z gwnym zapytaniu.
Podzapytania skorelowane
Podzapytania skorelowane s wykonywane
za pomoc etykiet tabelowych (nazw
skorelowanych) i odwoa skorelowanych.
Etykieta dodawana jest do nazw tabel w gwnym zapytaniu i
podzapytaniu.
Odwoanie skorelowane dodaje si do klauzuli WHERE
podzapytania , aby powiza podzapytanie z wartoci
(wartociami) w wierszu tabeli gwnego zapytania, ktry jest
aktualnie rozpatrywany.
73
74
Podzapytania skorelowane
Ktrzy ludzie zarabiaj mniej ni wynosi rednia pensja wszystkich na
tym samym stanowisku co on lub ona?
Podzapytania skorelowane
W wyniku dziaania podzapytania skorelowanego
zostanie obliczona warto AVG(zarob), ale nie dla
wszystkich wierszy z tabeli. Musi by wiadomo, ktre
wiersze maj t sam warto STANOWISKO co wiersz
tabeli rozpatrywany w gwnym zapytaniu.
Jeeli wiersz w tabeli ma np. warto URZEDNIK", to
warto ta zostaje przekazana do podzapytania po to, aby
dla wszystkich wierszy z wartoci STANOWISKO
rwn URZDNIK mogo by obliczone wyraenie
AVG(zarob).
75
76
Podzapytania skorelowane
Warto STANOWISKO z gwnego
zapytania jest przekazywana do
podzapytania, aby mg by obliczony wynik
podzapytania
Podzapytanie jest wykonywane dla kadego
wiersza wybranego w gwnym zapytaniu.
Podzapytania skorelowane
Wyniki
podzapytania
Wyniki podzapytania dla
kadego wiersza s
sprawdzane z predykatem
gwnego zapytania
Predykat gwnego
Zapytania
Wiersz 1 zarob < A
Wiersz 2 zarob < B
................................
Wiersz n zarob < N
77
78
Podzapytania skorelowane
W tego typu zapytaniach podzapytanie
trzeba wykona wielokrotnie, za kadym
razem, gdy zmienia si przypisanie wartoci
wyraenia w podzapytaniu, ktre zaley z
kolei od wartoci zmiennych w krotkach
tworzonych za zewntrz podzapytania.
Podzapytania skorelowane
Wska pracownikw (NUMP, NAZWP, NUMDZ, STANOWISKO,
ZAROB), ktrzy maj najwysz pensj w swoim dziale.
79
80
Podzapytania skorelowane
Wska dziay (NUMDZ, NAZWDZ, LOK), ktre maj kierownika lub
kierownikw przyjtych do pracy pniej ni jeden z jego podwadnych
Podzapytania skorelowane
Wska pracownikw na stanowisku KIEROWNIK, ktrzy nie maj
pracownikw na stanowisku ANALITYK.
81
82
Wykorzystanie EXISTS
Wykorzystanie EXISTS
83
84
Nazwisko
Kowalski
Adam
Marian
Nowak
Malinowski
Waldemar Pawlak
Jan
Imi
85
86
87
88
89
90
91
92
Typy danych
93
94
Typy danych
95
96
Okrelanie kluczy
97
98
99
100
czenie tabel
czenie tabel
Problem z instrukcj SELECT polega na tym, e zwraca ona kad
kombinacj wierszy z dwch tabel - jeeli jedna tabela zawiera 8 wierszy
a druga 10 wierszy to zapytanie zwrci 80 wierszy
Zapytanie poniej, przy zaoeniu 9 wierszy w pierwszej i 9 w drugiej
tabeli da w wyniku tabel z 81 wierszami
SELECT *
FROM NAZWISKA, NOWA;
czenie tabel
101
102
czenie tabel
czenie tabel
Zenon
Ewa
Adam
Marian
Waldemar
Jan
Davies
Miler
Musia
Nowak
Malinowski
Pawlak
Kowalski
Nazwisko
3 000,00 z
8 000,00 z
2 000,00 z
1 100,00 z
3 000,00 z
900,00 z
Pensja
1 000,00 z
5 000,00 z
4 000,00 z
900,00 z
1 200,00 z
200,00 z
600,00 z
Premia
4 500,00 z
8 000,00 z
12 000,00 z
2 900,00 z
2 300,00 z
3 200,00 z
1 500,00 z
WYPATA
103
104
Posta zapytania:
SELECT N.Numer, N.Imi, N.Nazwisko, N.Pensja, P.Premia,
N.Pensja+P.Premia AS WYPATA
FROM NAZWISKA AS N, NOWA AS P
WHERE N.Numer = P.Nr_ident;
Paul
Dobija
3 500,00 z
Mieczysaw
Norton
Imi
Peter
Numer
czenie tabel
Z-008
Z-007
Z-006
Z-005
Z-004
Z-003
Z-002
Z-001
1 000,00 z
900,00 z
500,00 z
400,00 z
300,00 z
700,00 z
3 000,00 z
500,00 z
Waldemar
Waldemar
Jan
Jan
Malinowski
Pawlak
Pawlak
Kowalski
Kowalski
Z-006
Z-007
Z-002
Z-008
Z-001
Z-005
700,00 z
500,00 z
900,00 z
3 000,00 z
1 000,00 z
500,00 z
400,00 z
105
106
7
2
czenie tabel
Posta polecenia czcego tabele NAZWISKA i ZLECENIA:
Marian
Malinowski
Z-003
300,00 z
Jest to przykad
relacji jeden do
wiele: pole Numer
jest kluczem
gwnym tabeli
Nazwiska a pole
Nr_prac w tym
przypadku jest
kluczem obcym w
tabeli Zlecenia
Marian
Malinowski
Z-004
Imi
Marian
Nowak
Numer
Adam
czenie tabel
107
108
czenie tabel
Kolejny krok, jeli w zapytaniu obecna jest klauzula GROUP BY, polega
na sortowaniu pozostaych wierszy w tabeli wedug wybranych kolumn
Jeli na licie SELECT znajduj si funkcje agregujce, to w tym
momencie s one wykonywane, a tabela zostaje zastpiona przez now,
zawierajc wyniki funkcji agregujcych dla grup (jeli GROUP BY jest
uyte)
Nastpnie klauzula HAVING jest stosowana dla tabeli podzielonej na
grupy, wiersze nie speniajce warunkw okrelonych w tej czci s
odrzucane
Na kocu wybrane s z tabeli kolumny zawarte na licie SELECT,
wyliczone odpowiednie wyraenia i tak powstaje wynik kocowy
Przykad zapytania z funkcj agregujc i grupowaniem suma zlece
poszczeglnych pracownikw
SELECT N.Numer, N.Imi, N.Nazwisko,
SUM(P.Warto_zlecenia) AS SUMA_ZLECE
FROM Nazwiska AS N, Zlecenia AS P
WHERE N.Numer=P.Nr_prac
GROUP BY N.Numer, N.Imi, N.Nazwisko
ORDER BY N.Numer;
czenie tabel
2 100,00 z
4 000,00 z
900,00 z
Nazwisko SUMA_ZLECE
Numer
1
Waldemar Pawlak
Kowalski
2
Marian
Malinowski
1 000,00 z
109
110
Z-008
3 000,00 z
Waldemar Pawlak
Z-002
Imi
1
Waldemar Pawlak
Numer
2
900,00 z
Marian
Malinowski Z-007
2 100,00 z 4 400,00 z
SUMA_ZLECE WYPATA
300,00 z 3 200,00 z
Premia
Malinowski 1 100,00 z 1 200,00 z
Kowalski
900,00 z
Pensja
Jan
2 000,00 z
4 000,00 z 7 200,00 z
Numer
Wynik zapytania:
Imi
Nazwisko
1
Marian
Nowak
200,00 z
900,00 z 2 400,00 z
Adam
3 000,00 z
600,00 z
Waldemar Pawlak
900,00 z
Unie
111
prawnik
Malinowski
Pawlak
ekonomista
Kowalski
ekonomista
1200
Marian
Waldemar
200
Jan
600
112
Unie
Aby wyniki byy bardziej czytelne mona zmieni nazwy kolumn i doda
opcj ALL do operatora UNION
Uycie operatora UNION do poczenia kilku zapyta powoduje, e
adne powtarzajce si wiersze nie s wybierane, a wyniki s
automatycznie sortowane wedug kolumn od lewej do prawej
Wszystkie wiersze bez sortowania pojawiaj si po uyciu opcji ALL
Ilustruje to zapytanie sformuowane poniej:
prawnik
ekonomista
1200
200