You are on page 1of 13

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

SQL w mgnieniu oka


Autor: Ben Forta
Tumaczenie: Rafa Joca, Paulina Soba
ISBN: 83-7361-469-9
Tytu oryginau: Teach Yourself SQL
in 10 Minutes, 2nd Edition
Format: B5, stron: 248

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

Na temat jzyka SQL napisano ju wiele ksiek. Wiele z nich, o niekwestionowanej


jakoci, obarcza jednak czytelnika mnogoci dodatkowych informacji na temat teorii
relacyjnych baz danych, ich projektowania i administrowania nimi.
Mimo fundamentalnego znaczenia tych zagadnie uytkownik chciaby jednak skupi
si na szczegach samego jzyka SQL, poczynajc od jego najprostszych elementw,
by dopiero pniej, w miar doskonalenia swej wiedzy i poznawania coraz bardziej
zoonych elementw SQL sign do tematyki o charakterze bardziej oglnym.
Niniejsza ksika jest wolna od opisanego syndromu, a kady z jej rozdziaw
czyta si w cigu 10 minut. Pasjonujca przygoda z jzykiem SQL rozpoczyna si
ju w pierwszym rozdziale; w kolejnych Czytelnik zapoznaje si z coraz bardziej
zoonymi zagadnieniami, jak:
Podstawowe elementy baz danych tabele, kolumny, wiersze i klucze
Pobieranie danych z tabeli i ich sortowanie
Filtrowanie danych za pomoc fraz WHERE i operatorw AND, OR, IN, NOT i LIKE
Tworzenie unii
Wstawianie, aktualizacja i usuwanie danych
Tworzenie i modyfikowanie tabel
Tworzenie i wykorzystywanie perspektyw
Wykorzystywanie procedur zapamitanych
Zarzdzanie transakcjami
Indeksowanie i powizania midzy tabelami za pomoc kluczy
Zastosowanie jzyka SQL na gruncie Visual C++ i Visual Basica
oraz popularnych systemw baz danych, jak SQL Server 6x, 7
i 2000, MS Access, MS Query i MS ASP

Spis treci
O Autorze......................................................................8
Wprowadzenie ...............................................................9
Rozdzia 1. Podstawy jzyka SQL...................................................13
Podstawy baz danych ............................................................................ 13
Jzyk SQL ............................................................................................. 18
wicz .................................................................................................... 19
Podsumowanie ...................................................................................... 19

Rozdzia 2. Pobieranie danych .......................................................21


Instrukcja SELECT ............................................................................... 21
Pobranie konkretnej kolumny ............................................................... 22
Pobranie wielu kolumn ......................................................................... 23
Pobranie wszystkich kolumn ................................................................ 24
Podsumowanie ...................................................................................... 25

Rozdzia 3. Sortowanie otrzymywanych danych ..............................27


Sortowanie danych................................................................................ 27
Sortowanie wzgldem wielu kolumn.................................................... 29
Sortowanie wzgldem pooenia kolumny ........................................... 30
Okrelenie kierunku sortowania............................................................ 31
Podsumowanie ...................................................................................... 33

Rozdzia 4. Filtrowanie danych ......................................................35


Stosowanie frazy WHERE.................................................................... 35
Operatory frazy WHERE ...................................................................... 36
Podsumowanie ...................................................................................... 40

Rozdzia 5. Zaawansowane filtrowanie danych ...............................41


czenie fraz WHERE.......................................................................... 41
Operator IN ........................................................................................... 45
Operator NOT ....................................................................................... 46
Podsumowanie ...................................................................................... 48

SQL w mgnieniu oka

Rozdzia 6. Filtrowanie za pomoc znakw wieloznacznych.............49


Korzystanie z operatora LIKE .............................................................. 49
Wskazwki dotyczce uywania znakw wieloznacznych .................. 54
Podsumowanie ...................................................................................... 54

Rozdzia 7. Tworzenie pl obliczanych............................................55


Pojcie pl obliczanych ........................................................................ 55
Konkatenacja pl................................................................................... 56
Przeprowadzanie oblicze matematycznych ........................................ 62
Podsumowanie ...................................................................................... 63

Rozdzia 8. Modyfikacja danych za pomoc funkcji ........................65


Czym s funkcje.................................................................................... 65
Stosowanie funkcji................................................................................ 67
Podsumowanie ...................................................................................... 73

Rozdzia 9. Funkcje agregujce .....................................................75


Funkcje agregujce ............................................................................... 75
Agregacja tylko rnorodnych wartoci ............................................... 81
czenie funkcji agregujcych.............................................................. 83
Podsumowanie ...................................................................................... 83

Rozdzia 10. Grupowanie danych .....................................................85


Omwienie grupowania danych............................................................ 85
Tworzenie grup ..................................................................................... 86
Filtrowanie grup.................................................................................... 88
Grupowanie i sortowanie ...................................................................... 90
Kolejno fraz instrukcji SELECT ....................................................... 92
Podsumowanie ...................................................................................... 92

Rozdzia 11. Zapytania zagniedone ...............................................93


Zagniedanie zapyta .......................................................................... 93
Filtrowanie na podstawie zapyta zagniedonych .............................. 94
Zapytania zagniedone jako pola obliczane........................................ 97
Podsumowanie ...................................................................................... 99

Rozdzia 12. czenie tabel ...........................................................101


Czym s zczenia? ............................................................................. 101
Tworzenie zcze............................................................................... 104
Podsumowanie .................................................................................... 110

Rozdzia 13. Tworzenie rozbudowanych zcze..............................111


Stosowanie aliasw tabel .................................................................... 111
Typy zcze ....................................................................................... 113
Zczenia i funkcje agregujce............................................................ 119
Zczenia i ich warunki ....................................................................... 120
Podsumowanie .................................................................................... 120

Rozdzia 14. czenie zapyta .......................................................121


czenie zapyta................................................................................. 121
Tworzenie unii .................................................................................... 122
Podsumowanie .................................................................................... 126

Spis treci

Rozdzia 15. Wstawianie danych ...................................................127


Wstawianie danych ............................................................................. 127
Kopiowanie z jednej tabeli do innej.................................................... 133
Podsumowanie .................................................................................... 134

Rozdzia 16. Aktualizacja i usuwanie danych .................................135


Aktualizacja danych ............................................................................ 135
Usuwanie danych ................................................................................ 137
Wskazwki zwizane z aktualizacj lub usuwaniem danych ............. 138
Podsumowanie .................................................................................... 139

Rozdzia 17. Tworzenie i modyfikacja tabel ....................................141


Tworzenie tabel................................................................................... 141
Aktualizacja tabel................................................................................ 147
Usuwanie tabel.................................................................................... 148
Zmiana nazwy tablicy ......................................................................... 149
Podsumowanie .................................................................................... 149

Rozdzia 18. Stosowanie perspektyw.............................................151


Perspektywy ........................................................................................ 151
Tworzenie widokw............................................................................ 154
Podsumowanie .................................................................................... 160

Rozdzia 19. Korzystanie z zapamitanych procedur .......................161


Zapamitane procedury....................................................................... 161
Dlaczego warto uywa zapamitanych procedur .............................. 162
Wykonywanie zapamitanych procedur ............................................. 164
Tworzenie zapamitanych procedur ................................................... 165
Podsumowanie .................................................................................... 168

Rozdzia 20. Zarzdzanie transakcjami ..........................................169


Dziaanie transakcji............................................................................. 169
Sterowanie transakcjami ..................................................................... 171
Podsumowanie .................................................................................... 175

Rozdzia 21. Kursory .....................................................................177


Dziaanie kursorw ............................................................................. 177
Praca z kursorami................................................................................ 178
Podsumowanie .................................................................................... 182

Rozdzia 22. Zaawansowane funkcje jzyka SQL ............................183


Ograniczenia ....................................................................................... 183
Omwienie indeksw.......................................................................... 189
Wyzwalacze ........................................................................................ 191
Bezpieczestwo baz danych................................................................ 193
Podsumowanie .................................................................................... 194

Dodatek A Skrypty przykadowych tabel......................................195


Omwienie przykadowych tabel........................................................ 195
Tworzenie przykadowych tabel ......................................................... 199
Wypenienie przykadowych tabel......................................................... 202

SQL w mgnieniu oka

Dodatek B Praca z popularnymi aplikacjami ................................213


Konfiguracja rde danych ODBC....................................................... 213
Allaire ColdFusion.............................................................................. 215
Allaire JRun 3.x .................................................................................. 215
DB2 ..................................................................................................... 216
Informix Dynamic Server 7.x ............................................................. 216
Microsoft Access................................................................................. 217
Microsoft ASP..................................................................................... 218
Microsoft Query.................................................................................. 219
Microsoft SQL Server 6.x................................................................... 220
Microsoft SQL Server 7...................................................................... 220
Microsoft SQL Server 2000................................................................ 221
Microsoft Visual Basic........................................................................ 221
Microsoft Visual C++ ......................................................................... 222
Oracle 8 ............................................................................................... 223
Query Tool .......................................................................................... 223
Sybase ................................................................................................. 224

Dodatek C Skadnia instrukcji SQL..............................................225


ALTER TABLE .................................................................................. 225
COMMIT ............................................................................................ 226
CREATE INDEX................................................................................ 226
CREATE PROCEDURE .................................................................... 226
CREATE TABLE ............................................................................... 227
CREATE VIEW.................................................................................. 227
DELETE.............................................................................................. 227
DROP .................................................................................................. 228
INSERT............................................................................................... 228
INSERT SELECT ............................................................................... 228
ROLLBACK ....................................................................................... 229
SELECT .............................................................................................. 229
UPDATE............................................................................................. 229

Dodatek D Typy danych jzyka SQL.............................................231


Tekstowe typy danych ........................................................................ 232
Numeryczne typy danych.................................................................... 233
Typy danych daty i czasu.................................................................... 234
Binarne typy danych ........................................................................... 235

Dodatek E

Sowa kluczowe jzyka SQL .......................................237


Skorowidz .................................................................241

Rozdzia 10.

Grupowanie danych
W tym rozdziale opisana jest funkcja grupowania danych, ktra umoliwia
podsumowywanie podzbiorw tabeli. Wprowadzone s te dwie nowe frazy
instrukcji : 
i .

Omwienie grupowania danych


W poprzednim rozdziale opisywaem funkcje agregujce jzyka SQL uywane
do tworzenia podsumowa danych. Umoliwiay one zliczanie wierszy, obliczanie sumy i redniej, a take znajdowanie wartoci najwikszej i najmniejszej. Wszystko to odbywao si bez potrzeby pobierania wszystkich danych.
Do tej pory obliczenia przeprowadzane byy na wszystkich danych w tabeli,
lub na danych speniajcych warunek okrelony we frazie . Oto krtkie
przypomnienie poniszy przykad zwraca wszystkie produkty oferowane
przez dostawc :

 
 

!"#$%&'(%)


************
+

86

SQL w mgnieniu oka

W jaki sposb pobra liczb produktw oferowanych przez poszczeglnych


producentw? Jak uzyska dane dotyczce tylko tych producentw, ktrzy oferuj jeden produkt lub oferuj powyej 10 produktw?
W takiej sytuacji niezastpione jest grupowanie. Umoliwia ono podzielenie
danych na logiczne zbiory i przeprowadzenie funkcji agregujcych na kadej
z grup osobno.

Tworzenie grup
Grupy tworzy si za pomoc frazy 
w instrukcji . Najatwiej
zrozumie to na przykadzie:

#, 
 

-./#)

#
******************
.'(0
&'(+
 -'(1

Powysza instrukcja  okrela dwie kolumny,  (ktra zawiera


identyfikator dostawcy) i  !"# (ktra jest polem obliczanym za pomoc
funkcji agregujcej  $%&&. Fraza 
sprawia, e SZBD sortuje wyniki i grupuje je wzgldem . Powoduje to obliczanie  !"# dla
kadego unikalnego , zamiast zbiorowo dla caej tabeli. W ten sposb
mona si dowiedzie, i dostawca  oferuje 3 produkty, dostawca 
4 produkty, a dostawca ' 2 produkty.
Poniewa pojawia si fraza 
, nie trzeba byo okrela kadej grupy, by
pozna jej warto. Wszystko zostao wykonane automatycznie. Fraza 

powoduje, e system zarzdzania najpierw grupuje dane, a nastpnie przeprowadza funkcj agregujc osobno dla kadej grupy, zamiast dla wszystkich
wynikw.

Rozdzia 10. Grupowanie danych

87

Zanim jednak rozpocznie si stosowanie frazy 


, warto dokadniej pozna jej dziaanie:
 Fraza 
moe zawiera dowoln liczb kolumn. Umoliwia to

tworzenie zagniedonych grup, a tym samym bardziej szczegowe


opracowywanie danych.
 W przypadku wprowadzenia kilku nazw kolumn we frazie, dane

podsumowywane s dla ostatniej okrelonej kolumny (dla jej grup).


Oznacza to, e nie jest moliwe uzyskanie danych dla wszystkich
wymienionych kolumn.
 Wszystkie kolumny wymienione we frazie 
musz by

kolumnami pobieranymi z bazy lub penymi wyraeniami (ale nie


funkcjami agregujcymi). Jeli wyraenie wystpuje po , w takiej
samej postaci musi si znale we frazie 
. Nie mona w tym
wypadku stosowa aliasw.
 Wikszo implementacji SQL nie dopuszcza, aby we frazie 

znalazy si kolumny typw danych o zmiennej dugoci (na przykad


pola tekstowe lub memo).
 Wszystkie kolumny wystpujce w instrukcji  musz si take
znale we frazie 
(nie dotyczy to funkcji agregujcych).
 Jeli grupowana kolumna zawiera wiersz z wartoci  , powstanie
osobna grupa o nazwie  . Jeli istnieje kilka wierszy o wartoci  ,

zostan one scalone w jedn grup.


 W przypadku wystpowania dodatkowych fraz, funkcja 
musi
si pojawi po frazie , ale przed  .
Fraza . Pewne implementacje SQL (na przykad Microsoft SQL
Server) obsuguj opcjonaln fraz  dla 
. Fraza ta moe posuy do zwrcenia wszystkich grup, nawet tych, dla ktrych
agregacja spowodowaaby zwrcenie wartoci  . Szczegw
naley szuka w dokumentacji SZBD.

Okrelanie kolumn za pomoc pooe wzgldnych. Niektre implementacje SQL umoliwiaj podanie we frazie 
pooe
kolumn z listy . Mona wtedy na przykad napisa 

() , aby grupowanie najpierw odbyo si wzgldem drugiej kolumny,
a nastpnie pierwszej. Cho ten skrtowy zapis jest bardzo kuszcy, nie obsuguj go wszystkie implementacje, a dodatkowo
niesie ze sob ryzyko pojawienia si bdw po zmianie kolejnoci
kolumn.

C:\Andrzej\PDF\SQL w mgnieniu oka\r10-06.doc

(04-05-28) 87

88

SQL w mgnieniu oka

Filtrowanie grup
Poza sam moliwoci grupowania danych, jzyk SQL oferuje take filtrowanie na podstawie danych zebranych dla poszczeglnych grup. Na przykad
mona wywietli wszystkich klientw, ktrzy dokonali przynajmniej dwch
zamwie. Takie filtrowanie musi si odbywa wobec penych grup, a nie poszczeglnych wierszy.
Nie jest moliwe posuenie si tutaj fraz  opisan w rozdziale 4., gdy
powoduje ona filtrowanie wierszy i to jeszcze przed rozpoczciem grupowania. Inaczej mwic, fraza  nie wie, czym jest grupowanie.
Jaka jest wic alternatywa dla ? Jzyk SQL wprowadza dodatkow fraz
. Jest ona bardzo podobna do . W zasadzie wszystkie opisane do
tej pory techniki filtrowania zwizane z  mog zosta take uyte we
frazie . Jedyna rnica polega na tym, i  filtruje wiersze, a 
grupy.
Fraza  obsuguje wszystkie operatory frazy . Rozdziay 4.
i 5. opisyway proste i zaawansowane filtrowanie danych. Wszystkie opisane tam operatory mona z powodzeniem stosowa we
frazie . Skadnia jest identyczna, zmienia si tylko sowo
kluczowe.

Oto przykad filtrowania grup:

, 
 2345
62345
-./
" 78 - 
9$1)

2345
*********************
(''''''''(1

Pierwsze trzy wiersze s bardzo podobne do wczeniejszego przykadu z tego


rozdziau. Ostatni wiersz wprowadza fraz , ktra przepuszcza tylko te
grupy, ktre posiadaj minimum dwa zamwienia  $%& *+ (.

Rozdzia 10. Grupowanie danych

89

Mona si przekona, i fraza  nie przeprowadziaby poprawnego filtrowania, poniewa musi ono bazowa na wartoci z agregacji grupy, a nie wartoci znajdujcych si w poszczeglnych wierszach.
Rnica midzy  i . Mona na to zagadnienie spojrze
inaczej. Fraza  filtruje dane przed grupowaniem, natomiast
 po. Jest to wana rnica wiersze wyeliminowane przez
fraz  w ogle nie zostan wzite pod uwag przy tworzeniu
grup. Powoduje to zmian wartoci pl obliczanych, a tym samym
zmian wywietlanych grup, gdy przeprowadzane jest filtrowanie.

Czy zachodzi potrzeba jednoczesnego stosowania fraz  i  w jednym zapytaniu? W pewnych sytuacjach jest ona nawet konieczna. Przypumy
na przykad, i poprzednie zapytanie powinno zwrci dowolnych klientw
z wicej ni jednym zamwieniem, ale pod uwag naley bra tylko ostatni rok.
W takiej sytuacji fraza  spowoduje przeanalizowanie zamwie tylko
z ostatnich 12 miesicy, a fraza  wskae tylko klientw z co najmniej
dwoma zamwieniami.
Oto inny przykad. Zapytanie powoduje wywietlenie listy dostawcw z wicej ni jednym produktem o cenie powyej 10 zotych.

#, 
 

!"459$('
-./#
" 78 - 
9$1)

#
******************
.'(0
 -'(1

Zapytanie to wymaga krtkiego wyjanienia. Pierwszy wiersz to prosta instrukcja  z funkcj agregujc podobnie jak w poprzednich przykadach. Fraza  filtruje wszystkie wiersze, ktrych "#,-! jest mniejsza od
10 zotych. Nastpnie dane s grupowane pod ktem , a fraza 
przepuszcza tylko grupy zawierajce wicej ni jedno zamwienie. Bez frazy
 zostaby pobrany dodatkowy wiersz, poniewa dostawca  sprzedaje
trzy produkty po cenie poniej 10 zotych.

C:\Andrzej\PDF\SQL w mgnieniu oka\r10-06.doc

(04-05-28) 89

90

SQL w mgnieniu oka

#, 
 

-./#
" 78 - 
9$1)

#
******************
.'(0
&'(+
 -'(1

Stosowanie  i . Fraza  jest tak podobna do frazy


, e wikszo SZBD traktuje je identycznie, jeli nie okrelono frazy 
. Mimo to warto samemu jasno rozdziela obie
frazy, czyli  stosowa tylko z 
, a  uywa do
filtrowania na niszym poziomie.

Grupowanie i sortowanie
Trzeba zda sobie spraw z tego, i frazy 
i  s bardzo rne,
cho wykonuj podobne zadanie. Tabela 10.1 wymienia rnice wystpujce
midzy obiema frazami.
Tabela 10.1. Frazy ORDER BY i GROUP BY
ORDER BY

GROUP BY

Sortuje wygenerowane wyjcie.

Grupuje wiersze. Wyjcie nie musi by jednak


posortowane wzgldem grup.

Mona stosowa dla dowolnych


kolumn (take tych, ktre nie s
zwracane).

Mona zastosowa tylko wobec zwracanych


kolumn lub wyrae. Wystpi musz wszystkie
zwracane kolumny lub wyraenia.

Stosowanie frazy nie jest zawsze Stosowanie frazy jest konieczne, jeli uywa si
wymagane.
kolumn (lub wyrae) z funkcjami agregujcymi.

Pierwsza rnica wymieniona w tabeli 10.1 jest niezmiernie wana. Cho nie
jest to wymagane, to najczciej grupy bd wywietlane w sposb posortowany. Co wicej, cho dany system moe zawsze sortowa grupy po zastosowaniu frazy 
, konieczny moe okaza si inny sposb sortowania. Cho
grupowanie odbywa si w taki, a nie inny sposb, nie oznacza to jednoczenie,

Rozdzia 10. Grupowanie danych

91

i sortowanie take musi odbywa si w ten sam sposb. Zawsze mona zastosowa opcjonaln fraz  , aby wymusi odpowiednie sortowanie pogrupowanych danych.
Nie zapominaj o frazie  . Oglnie rzecz ujmujc, za kadym
razem, gdy stosuje si fraz 
, powinno si take stosowa fraz  , gdy jest to jedyny sposb zapewnienia odpowiedniego sortowania danych. Nigdy nie naley polega na sortowaniu za pomoc 
.

Oto krtki przykad, ktry zademonstruje uycie fraz 


i  .
Przedstawione zapytanie  jest bardzo podobne do poprzednich. Pobiera
numery zamwie i liczb zamawianych elementw dla wszystkich zamwie
zawierajcych minimum trzy elementy.

2524, 
 44245
4245 62345
-./2524
" 78 - 
9$0)

252444245
*****************
1''':0
1''';<
1'''=<
1'''>0

Aby posortowa wyjcie na podstawie liczby zamwionych elementw, wystarczy tylko doda odpowiedni fraz  .

2524, 
 44245
4245 62345
-./2524
" 78 - 
9$0
&./44245 ,2524)

252444245
*****************
1''':0

C:\Andrzej\PDF\SQL w mgnieniu oka\r10-06.doc

(04-05-28) 91

92

SQL w mgnieniu oka

1'''>0
1''';<
1'''=<

W tym przykadzie fraza 


suy do grupowania danych na podstawie
numeru zamwienia (kolumna !.-/.,#), wic funkcja  $%& zwraca liczb
elementw w poszczeglnych zamwieniach. Fraza  filtruje dane, wic
zwracane s tylko zamwienia z wicej ni dwoma elementami. Na kocu wyniki s sortowane za pomoc frazy  .

Kolejno fraz instrukcji SELECT


Nadszed chyba najlepszy czas na omwienie kolejnoci wystpowania fraz
w instrukcji . Tabela 10.2 zawiera poprawn kolejno wszystkich omwionych do tej pory fraz.
Tabela 10.2. Frazy instrukcji SELECT i ich kolejno
Fraza

Opis

Wymagane



zwracanie kolumn lub wyrae

tak



pobranie danych zawartych


w tabelach

tylko, gdy wymagane s dane z tabel

!"

filtrowanie wierszy

nie

-./

tworzenie grup

tylko do obliczania funkcji


agregujcych na grupach

" 78 -

filtrowanie grup

nie

&./

sortowanie wyjcia

nie

Podsumowanie
W rozdziale 9. czytelnik zapozna si z zastosowaniem funkcji agregujcych.
W powyszym rozdziale wykorzysta fraz 
do przeprowadzania funkcji agregujcych wzgldem okrelonych grup elementw. Fraza  suy
do filtrowania grup. Dodatkowo w rozdziale pojawio si dokadne wyjanienie
rnic midzy 
i  oraz midzy  i .

You might also like