Podstawy SQL`a Cwiczenia

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

1

Rozdzia 1. Jak korzysta z wicze

wiczenia te s

kierowane do osób, które chc

si

nauczy

j zyka SQL i mam nadziej ,

#e w znacznym stopniu oka# si one pomocne. Do nauki j zyka SQL potrzebny jest jego interpreter,
czyli baza danych. Do studiowania j zyka SQL zosta)y wykorzystane:
baza danych InterBase firmy Inprise (Borland) oraz baza danych DB2 firmy IBM.

Dlaczego InterBase? Dlaczego IBM DB2? Po pierwsze s to systemy relacyjnej bazy danych,
w których zosta)a zaimplementowana pe)na sk)adnia j zyka SQL. Po drugie zarówno InterBase firmy
Inprise (Borland) i DB2 firmy IBM w wersji Personal Edition s dost pne za darmo. Po trzecie s to w
pe)ni profesjonalne i popularne systemy, które dodatkowo s )atwe w obs)udze i administrowaniu.

Oba systemy bazy, jak ju# wspomnia)em s dost pne w Internecie za darmo. Na pewno wi kszo7
z czytelników wybierze InterBase'a z powodów obj to7ci wersji instalacyjnej. Prawd jest, #e DB2
firmy IBM posiada wi cej mo#liwo7ci, ale je7li chodzi o zakres interpretowanego j zyka SQL oba
systemy s sobie równe. Dla osób nie posiadaj cych ) cza do Internetu o wi kszej ni przeci tna
przepustowo7ci, InterBase b dzie lepszym wyborem.

Dlaczego nie MS Access

Nie chc umniejsza mo#liwo7ciom MS Access. W pewnych zastosowaniach, jest to w pe)ni
funkcjonalny i wystarczaj cy system bazy danych. MS Access zosta) szczelnie obudowany
pomocniczymi narz dziami, które u)atwiaj zarz dzanie danymi oraz u)atwiaj zarz dzanie samym
systemem bazy MS Access. Pomimo ze istnieje mo#liwo7 „rozmowy" z MS Access za pomoc
j zyka SQL, jest ona niewygodna do tego stopnia, #e

staje si

nieprzyjemna

i zniech caj ca.

Studiowanie wicze z InterBase

Aby móc pracowa z InterBase, musimy go najpierw zainstalowa . Instalacja InterBase zosta)a
opisana w rozdziale 13. Tam równie# znajdziemy informacje o miejscu sk d mo#na skopiowa wersj
instalacyjn . Serwer bazy danych InterBase dost pny jest równie# z wi kszo7ci produktów, narz dzi
programistycznych firmy Inprise (Borland), min: Delphi, JBuilder, C++ Builder. W rozdziale 13.
znajduje si równie# opis narz dzi InterBase, które umo#liwiaj na prac z baz danych i które
oczywi7cie umo#liwi wykonywanie wicze@. Przed rozpocz ciem studiowania wicze@, ale ju# po
zainstalowaniu InterBase nale#y:
1. Stworzy baz WYPAUT. Informacje o tym, jak to zrobi znajdziemy w sekcji „Tworzenie bazy

danych w Interbase" w rozdziale 13.

2. Po stworzeniu bazy WYPAUT musimy uruchomi skrypty tworz ce i wype)niaj ce danymi tabele

w bazie WYPAUT. Skrypty te mo#na skopiowa

z serwera ftp wydawnictwa Helion

(ftp://ftp.helion.com.pl/przyklady/cwsql.zip - znajdziesz skrypty dla DB2 i InterBase'a). Skrypty te
znajduj si równie# na ko@cu tych wicze@. Zosta)y one jednak opublikowane dla DB2.
Informacje o tym, jak je dostosowa dla InterBase'a znajdziesz w rozdziale 14. w sekcji „Skrypty
tworz ce struktur bazy WYPAUT".

3. Po zainstalowaniu InterBase'a oraz stworzeniu bazy WYPAUT i jej struktury jeste7my gotowi do

pracy z wiczeniami, które polegaj na wykonywaniu polece@ SQL.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

2

Studiowanie wicze z DB2

Poni#ej zamieszone informacje pozwol nam na usystematyzowanie czynno7ci, jakie musimy
wykona , aby móc swobodnie korzysta z wicze@, pracuj c z systemem DB2. Nale#y przej7 przez
nast puj ce kroki:
1. Musimy zainstalowa DB2. Zosta)o to opisane w rozdziale 10. W tym rozdziale znajdziemy

równie# informacje o tym, sk d zdoby kopi instalacji DB2 w wersji 7.1 Personal Edition.

2. Nast pnie musimy uruchomi mened#era DB2. Do tego celu s)u#y polecenie db2start, które nale#y

wyda w wierszu polece@ systemu operacyjnego lub z poziomu menu Start | Uruchom. W wersji
DB2 dla Windows 95 lub 98 mened#er DB2 startuje automatycznie. W Windows NT równie#
mo#e okaza si to niekonieczne, gdy podczas instalacji DB2 wyraOnie zaznaczymy, #e mened#er
DB2 ma startowa automatycznie podczas startu systemu operacyjnego. Je#eli posiadamy system
Windows NT, mo#emy u#y narz dzia Us)ugi z Panelu sterowania. Tam równie# mo#emy
uruchomi mened#era DB2.

3. Po upewnieniu si , #e mened#er DB2 zosta) uruchomiony, tworzymy baz danych WYPAUT

w aplikacji Command Lin Processor. Opis procesu tworzenia bazy WYPAUT znajduje si
w rozdziale 12. Narz dzia DB2 w sekcji „Tworzenie bazy" opisuj cej narz dzie Command Lin
Processor.

4. Teraz musimy dokona pewnych ustawie@ w narz dziu Tools Settings. Musimy okre7li znak

7rednika jako znak oddzielaj cy poszczególne wyra#enia SQL wprowadzane m.in. w aplikacji
Command Center oraz w skryptach tworz cych struktur bazy danych. Wi cej informacji na temat
tych ustawie@ znajdziesz w rozdziale 12. „Narz dzia DB2" w sekcji „Ustawienia narz dzi DB2".

5. Po stworzeniu bazy WYPAUT i ustaleniu znaku 7rednika jako znaku oddzielaj cego poszczególne

zapytania w skrypcie, musimy uruchomi skrypty tworz ce i wype)niaj ce danymi tabele w bazie
WYPAUT. Skrypty te mo#na skopiowa z serwera ftp://ftp.helion.com.pl/przyklady/cwsql.zip.
Skrypty te znajduj si równie# na ko@cu tych wicze@. Je#eli nie mamy dost pu do Intemetu,
nale#y skrypty przepisa do plików, a nast pnie je uruchomi . Wykonywanie skryptów zosta)o
opisane w rozdziale 12. „Narz dzia DB2" w sekcji opisuj cej narz dzie Command Center.

6. Po wykonaniu powy#szych zada@ jeste7my gotowi do pracy z wiczeniami, które polegaj na

wykonywaniu polece@ SQL.

Zapraszam do wicze

Uff. Mam nadziej , #e wszyscy przebrn przez powy#sze i b d si czu swobodnie podczas
studiowania tych wicze@. Równie dobrze mo#na zacz od poznania systemu, jak i narz dzi
wchodz cych w sk)ad systemu DB2 lub InterBase. Po zapoznaniu si z nimi i nabraniu pewnej
wprawy w pos)ugiwaniu si nimi, mo#emy przej7 do realizacji zada@ wypunktowanych powy#ej.

Rycz mi)ej lektury Autor

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

3

Rozdzia 2. Koncepcja bazy danych

W tym rozdziale przedstawiona zostanie koncepcja bazy danych, jej podstawowe elementy sk)adowe
jak tabele i widoki. Omówione zostan

równie# typy danych, definiowanie tabel oraz rola

i zastosowanie j zyka SQL w relacyjnych bazach danych.

Tradycyjne bazy danych

W czasie kiedy komputery nie by)y wykorzystywane tak powszechnie jak dzisiaj,
informacje by)y gromadzone na papierze.

Pracownik firmy musia) r cznie organizowa dane. Zapisywa) je, wyszukiwa), aktualizowa) itd.
Dzisiaj, oprócz operacji, które musi wykona r cznie, pozosta)e wykonuje za pomoc funkcji, które
dostarcza relacyjny system bazy danych.

Rys.2.1.

Relacyjny system bazy danych

Relacyjny system bazy danych przechowuje wszystkie dane w tabelach. Ka#da tabela zawiera dane na
konkretny temat, np dane o klientach, dane o pracownikach, towarach itp. System bazy danych
zarz dza tymi danymi, pozwala m.in. na szybsze ich wyszukanie i zorganizowanie

Za ka#dym razem gdy potrzebujemy informacji z bazy danych, musimy „zapyta " system bazy
danych w j zyku, który on rozumie. Tym j zykiem jest SQL - Structured Qu-ery Language

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

4

Rys.2.2.

Wydobywanie informacji z tradycyjnej bazy danych oraz z systemu relacyjnej
bazy danych

Do dzisiaj istniej tzw. tradycyjne bazy danych. S to bazy informacji, których no7nikiem jest po
prostu papier. Wiele instytucji w tym niestety policja oraz szpitale korzysta do dzi7 z takich baz.
Scenariusz wydobywania danych w takich instytucjach jest nast puj cy:

l osoba potrzebuj ca danych np. prze)o#ony prosi drug osob o pewne dane;

pracownik po otrzymaniu polecenia szuka informacji w7ród dokumentów, które zosta)y z)o#one
albo w archiwum lub w po prostu w szafie;
pracownik po zebraniu pewnej ilo7ci segregatorów z danego okresu przegl da je, a nast pnie
przygotowuje zbiorczy dokument zawieraj cy # dane informacje;
l po wydobyciu danych i zorganizowaniu ich do odpowiedniej formy wysy)a je do prze)o#onego.

Czas wykonania tych operacji jest ró#ny i zale#y od wielko7ci organizacji, jej struktury,
ilo7ci potrzebnych danych oraz od pracowito7ci osób je zbieraj cych.

Rys.2.3

W systemie relacyjnej bazy danych wszystkie powy#sze operacje sprowadzaj si do sformu)owania
tego samego pytania o dane ale w formie zrozumia)ej dla komputera, a 7ci7lej mówi c, w formie
zrozumia)ej dla systemu bazy danych.

Ca)a operacja wydobywania danych trwa w tym przypadku znacznie krócej. Jako7 tych danych jest
przy tym lepsza.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

5

Mamy wi cej pewno7ci, #e dane s prawdziwe, e kto7 si nie pomyli) lub pomin ) pewn cz 7
danych przy zestawianiu # danych informacji.

Rys.2.4.

SQL - Strukturalny j)zyk zapyta

J zyk SQL jest wykorzystywany w wi kszo7ci relacyjnych systemów baz danych. SQL jest
zaimplementowany m.in. w takich systemach baz danych, jak: DB2, Oracie, Inter-Base, MySQL,
dBase, Paradox. Sk)adnia j zyka SQL dzieli si na trzy typy:

j zyk definiowania struktur danych - DDL (Data Definition Language);
R j zyk do wybierania i manipulowania danymi - DML (Data Manipulation Language);
l j zyk do zapewniania bezpiecze@stwa dost pu do danych - DCL (Data Control Language).

Rys.2.5.

Sk)adnia j zyka SQL wchodz ca w sk)ad j zyka DDL jest u#ywana przez administratorów systemu
relacyjnej bazy danych w celu utrzymania struktury bazy danych, obiektów bazy danych takich jak
m.in. tabele.

J zyk DCL jest u#ywany przez administratorów do zapewnienia bezpiecze@stwa dost pu do danych,
m.in. do nadawania uprawnie@ do danych.

J zyk DML jest u#ywany przez wszystkich u#ytkowników, którzy maj dost p do bazy danych. Za
pomoc tego typu sk)adni j zyka SQL u#ytkownicy mog otrzymywa , zmienia dane, dodawa nowe
itp.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

6

Tabela

Tabela sk)ada si z wierszy i kolumn. Wiersze w tabeli s przechowywane w dowolnym porz dku.
Dla ka#dego wiersza ka#da z kolumn posiada jedno pole z warto7ci . Wszystkie warto7ci w kolumnie
s tego samego typu.

Rys.2.6.

W ró#nych systemach relacyjnej bazy danych jak np. DB2, Oracie, InterBase czy dBase lub Paradox,
ka#da tabela jest przechowywana w osobnym zbiorze na dysku twardym lub kilka tabel w jednym
zbiorze. Sposób przechowywania danych z tabeli na dysku twardym jest tematem drugorz dnym.

wiczenia te maja przede wszystkim na celu nauczenie j zyka SQL. Teraz wystarczy tylko wiedzie ,

#e sposób przechowywania tabel zale#y od implementacji systemu relacyjnej bazy danych.

Konstrukcja nazwy tabeli

Nazwa tabeli sk)ada si z dwóch cz 7ci. Pierwsza cz 7 to kwalifikator, a druga z kolei to nazwa
tabeli. Kwalifikator i nazwa tabeli oddzielone s kropka. Ka#da tabela musi mie unikatow nazw
w granicach kwalifikatora.

Rys.2.7.

Taka konstrukcja nazwy tabeli nie stosuje si we wszystkich relacyjnych bazach da nych. Mi dzy
innymi w opisywanym tutaj systemie InterBase. W InterBase odwo)anii do tabeli nast puje wprost,
np.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

7

SELECT * PROM KLIENCI . . .

w systemie DB2

SELECT * FROM DB2ADMIN.KLIENCI

Typy danych

W ró#nych systemach relacyjnej bazy danych inaczej nazywaj si typy danych. Jednak ich zakres i
typ jest cz sto identyczny. Ka#dy system relacyjnej bazy danych posiada w swojej dokumentacji
sekcj , która opisuje typy danych u#ywanych w tym systemie. Poni#ej znajduj si przyk)adowe typy
danych wraz z ich opisem.

Tabela 2.1. numeryczne typy danych

Typ danych

Opis

SMALLINT

liczby ca)kowite z przedzia)u –32768 do +32767 (czasami ten zakres jest
mniejszy)

INTEGER

liczby ca)kowite z przedzia)u –2147483648 do +2147483647 (lub
mniejszy)

DECIMAL (m,n)

liczby rzeczywiste, gdzie m oznacza ca)kowit liczb cyfr, a n oznacza
liczb cyfr po przecinku

Tabela 2.2. znakowae typy danych

Typ danych

Opis

CHAR (n)

typ znakowy o sta)ej d)ugo7ci (max. 255 znaków)

VARCHAR (n)

typ znakowy o zmiennej d)ugo7ci

Tabela 2.3.typy danych daty i czasu

Typ danych

Opis

DATE

typ daty (wyst puj ró#ne standardy zapisywania daty)

TIME

typ czasu (wyst puj ró#ne standardy zapisywania czasu)

Tworzenie tabeli - CREATE TABLE

Tworzenie tabeli polega na definiowaniu jej kolumn. Dla ka#dej kolumny nale#y okre7li nazw
kolumny, typ danych i d)ugo7 (w zale#no7ci od typu) oraz to, czy jest dozwolone pozostawienie
warto7ci pustej w kolumnie.

CREATE TABLE UZYTKOWNIK.PRACOWNICY (

ID_PRACOW CHAR(6)NOT

NULL,

IMIE

VARCHAR(18)NOT NULL,

NAZWISKO

VARCHAR(24) NOT NULL,

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

8

STANOWISKO

VARCHAR(12)NOT NULL,

DZIAL

VARCHAR(12) NOT NULL,

DATA_URODZ

DATE,

TELEFON_DOM

CHAR(12));

Warto- pusta NULL

Warto7

NULL

jest to warto7 nieokre7lona, która mo#e zosta u#yta w ka#dym polu tabeli niezale#nie

od typu kolumny. Warto7

NULL

jest ró#na od zera lub spacji.

W tabeli na rysunku 2.8 osobom, które nie posiadaj firmy, w kolumnach: FIRMA oraz NIP
przypisano warto7

MULL

.

R

YS

.2.8.

Przy konstruowaniu tabeli poleceniem

CREATE TABLE

w poprzedniej sekcji okre7lili7my dla pewnych

kolumn parametr

NOT NULL

. Oznacza to, #e przy wstawianiu nowych wierszy musimy okre7li

warto7ci dla tych kolumn, nie mog one by warto7ci

NULL

. Definicja kolumny w poleceniu

CREATE

TABLE

pozostawiona bez klauzuli

NOT NULL

okre7la, #e dozwolone jest wstawienie do tej kolumny

warto7ci

NULL

. Istnieje jeszcze opcja o nast puj cej sk)adni:

NOT NULL WITH DEFAULT ( (warto7 )]
gdzie parametr warto7 okre7la domy7ln warto7 dla kolumny. Warto7 domy7lna zostanie nadana
dla kolumny automatycznie, gdy nie okre7limy jej wprost przy wstawianiu nowego wiersza do tabeli.

Autoryzacja dost)pu do tabeli

Mo#emy udost pni nasze dane innym u#ytkownikom, a 7ci7lej mówi c mo#emy udost pni tabele
innemu u#ytkownikowi. W tym celu stosuje si polecenie j zyka SO[

GRANT

. Poni#szy przyk)ad

nadaje uprawnienia u#ytkownikowi o nazwie URYTKOWNIK do tabeli PRACOWNICY. Od tej pory
URYTKOWNIK mo#e wybiera (wykonywa zapytania

SELECT

) dane z naszej tabeli.

GRANT SELECT ON PRACOWNICY TO U"YTKOWNIK;

Prawa do tabeli mo#na odebra poleceniem

REVOKE

. Oto przyk)ad:

REVOKE SELECT ON PRACOWNICY FROM U"YTKOWNIK;

Powy#szy przyk)ad u#ycia polecenia

GRANT

umo#liwia tylko wybieranie danych z tabeli. Poni#szy

przyk)ad umo#liwia wybieranie, wstawianie i aktualizowanie danych w tabeli.

GRANT SELECT, INSEKT, UPDATE ON PRACOWNICY TO UZYTKOWNIK;

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

9

Widoki

Za pomoc widoków mo#emy ograniczy zakres danych dost pnych dla u#ytkownika. Widok
mo#e ogranicza dane z jednej tabeli lub mo#e to by kompozycja danych z kilku tabel. Dane
w widoku mog by ograniczone do kilku kolumn lub do pewnego zakresu wierszy.

Widoki stosuje si w ró#nych celach:

w celu zabezpieczenia danych przed niepowo)anym dost pem;

uproszczenia korzystania z danych dla ko@cowego u#ytkownika.

Przyk)adem zwi kszenia bezpiecze@stwa mo#e by widok, który nie obejmuje kolumny z danymi o
zarobkach. Wiadomo, #e nie wszyscy u#ytkownicy powinni mie dost p do takich danych.

Rys.2.9.

P

odsu

m

ow

anie

–w

iczeniapraktyczne¶

1. Relacyjna baza danych jest kolekcj tabel.

2. U#ytkownicy nie musza si martwi o to, jak dane s przechowywane w bazie danych oraz jak s

wydobywane.

3. SQL jest j zykiem do komunikowania si z baza danych.

4. J zyk SQL jest u#ywany do:

wydobywania danych (

SELECT

);

manipulowania danymi (

IHSERT

,

UPDATE

,

DELETE

);

definiowania, redefiniowania i usuwania obiektów wchodz cych w sk)ad
struktury bazy danych (

CREATE

,

ALTER

,

DROP

);

definiowania uprawnie@ do danych (

GRANT

,

REVOKE

).

5. U#ytkownicy mog mie dost p do danych poprzez widoki.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

10

Rozdzia 3. Zapytania SQL.

Polecenie

SELECT

jest u#ywane do pobierania danych z bazy danych (z tabel lub widoków). W tym

rozdziale zapoznamy si ze sk)adni polecenia

SELECT

.

Rozdzia) ten ma na celu nauczenie formu)owania zapyta@ SQL do wy7wietlana wsstkich wierszy z
tabeli, wybierania okre7lonych kolumn, u#ywania warunków, u#ywania stów kluczowych
BETWEEN, IN, LIKE Oraz DISTINCT.

Struktura polecenia SELECT

Tabela 3.1

SELECT

opisuje nazwy kolumn, wyra#enia arytmetyczne, funkcje

FROM

nazwy tabel lub widoków

WHERE

warunek (wybieranie wierszy)

GROUP BY

nazwy

kolumn

HAVING

warunek (grupowanie wybieranych wierszy)

ORDER BY

nazwy kolumn lub pozycje kolumn

Ka#de polecenie

SELECT

musi posiada klauzule

SELECT

oraz

FROM

, pozosta)e klauzule s opcjonalne.

Inne klauzule wchodz ce w sk)ad polecenia

SELECT

zostan szczegó)owo omówione póOniej.

Wybieranie wszystkich kolumn

Poni#sze polecenie

SELECT

wy7wietla wszystkie kolumny i wiersze z tabeli PRACOWNICY.

SELECT

*

FROM DB

2

ADMIN

.

PRACOWNICY

;

Rys. 3.1.

Wybieranie wszystkich kolumn i wierszy ma sens tylko w przypadku ma)ych tabel, W praktyce
buduje si zapytania, które znacznie ograniczaj wynik zapytania.

Wybieranie okre-lonych kolumn

Polecenie

SELECT

, którego u#yjemy za chwil , wy7wietla kolumny IMI\, NAZWISKO i DZIA[ z

tabeli PRACOWNICY.

SELECT IMIE, NAZWISKO, DZIAL FROM DB2ADMIN.PRACOWNICY;

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

11

Rys.3.2

Wybieranie i jednoczesnym porz3dkowaniem

Nast puj ce polecenie

SELECT

wy7wietla kolumny IMI\, NAZWISKO i DZIA[ z tabeli

PRACOWNICY i jednocze7nie porz dkuje dane wed)ug nazwiska.

SELECT IMIE, NAZWISKO, DZIAL FROM DB2ADMIN.PRACOWNICY

ORDER BY NAZWISKO ASC;

Rys.3.3.

Wynik wykonania zapytania jest uporz dkowany wed)ug kolumny wskazanej w klauzuli ORDER BY.

S)owo kluczowe

ASC

mówi o tym, #e sortowanie zostanie dokonane w porz dku rosn cym.

Sortowanie rosn ce jest domy7lne wi c s)owo kluczowe

ASC

nie musi by wyspecyfikowane.

Porz dek malej cy uzyskuje si przez zastosowanie s)owa

DESC

.

W zale#no7ci od implementacji bazy danych kolumna wyst puj ca w klauzuli ORDER

BY

musi by

cz 7ci wyniku wykonania zapytania.

Mo#liwe jest wskazanie wi kszej liczby kolumn w klauzuli

ORDER BY

. Przyk)adowo mo#e istnie

potrzeba wybrania danych w tabeli z jednoczesnym sortowaniem wed)ug stanowiska, na którym dana
osoba pracuje, a nast pnie wed)ug nazwiska.

SELECT IMI&, NAZWISKO, STANOWISKO, DZIA'

FROM DB2ADMIN.PRACOWNICY ...

ORDER BY STANOWISKO ASC, NAZWISKO ASC;

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

12

Rys.3.4.

Istnieje inny sposób na wskazanie kolumn w klauzuli

ORDER BY

. Zamiast nazywa kolumny, mo#emy

je wskaza poprzez ich pozycje na li7cie

SELECT

.

SELECT IMIE, NAZWISKO, STANOWISKO, DZIAL FROM DB2ADMIN.PRACOWNICY

ORDER BY 3 ASC, 2 ASC;

Inne przyk)ady:

ORDER BY 3 ASC, NAZWISKO ASC

ORDER BY 3 ASC, 2 ASC, DZIAL ASC;

Dozwolona jest tylko jedna klauzula

ORDER BY

w zapytaniu

SELECT

. Klauzul

ORDER BY

okre7la si

jako ostatni w ca)ym zapytaniu

SELECT

.

Wybieranie niepowtarzaj3cych si) wierszy

S)owo kluczowe

DISTINCT

zapewnia, #e wynik zwrócony z zapytania zawiera

b dzie tylko

niepowtarzaj ce si wiersze. Wszystkie powtarzaj ce si warto7ci nie zostan wy7wietlone.

SELECT DISTINCT STANOWISKO FROM DB2ADMIN.PRACOWNICY;

Rys.3.5.

S)owo kluczowe

DISTINCT

musi wyst powa zaraz po s)owie kluczowym

SELECT

.

SELECT DISTINCT STANOWISKO, DZIA' FROM DB2ADMIN. PRACOWNICY;

Takie zapytanie wy7wietli wszystkie stanowiska obejmowane w danych dzia)ach. Je#eli w danym
dziale pojawi si dwa takie same stanowiska, tylko jedno zostanie wy7wietlone.

S)owo

DISTINCT

eliminuje wiersze, które posiadaj

duplikaty we wszystkich kolumnach

wyspecyfikowanych w wyra#eniu

SELECT

. Tylko jedno s)owo

DISTINCT

mo#e zosta u#yte w ca)ym

zapytaniu

SELECT

.

Wybieranie okre-lonych wierszy

Do wybrania okre7lonych wierszy z tabeli u#ywa si klauzuli

WHERE

, która s)u#y do okre7lenia

kryterium wyboru wierszy. W klauzuli WHERE specyflkujemy warunek, który musi by spe)niony
dla szukanych wierszy.

SELECT IMI&, NAZWISKO, STANOWISKO, DZIAL

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

13

PROM DB2ADMIN.PRACOWNICY

WHERE STANOWISKO = 'SPRZEDAWCA

;

Rys.3.6.

W przypadku kolumn typu znakowego, daty lub czasu, warto7ci dla których sprawdzany jest warunek
musz by otoczone apostrofem. Przy porównywaniu kolumn typu znakowego nale#y pami ta , #e
rozró#niane s wielkie i ma)e litery. Dla kolumn typu numerycznego jak np. INTEGER, SMALLINT,
warto7ci do porównania nie s otaczane apostrofem.

SELECT NR_KLIENTA, NR_SAMOCHODU, NR_PRACOW_WYP, CENA_JEDN

FROM DB2ADMIN.WYPOZYCZENIA

WHERE CENA_JEDN >= 100;

Operatory logiczne u5ywane w klauzuli WHERE

SELECT NR_KLIENTA, NR_SAMOCHODU, NR_PRACOW WYP, CENA_JEDN

FROM DB2ADMIN. WYPOZYCZENIA

WHERE CENA_JEDN = 100 - równa

CENA_JEDN <> 100 - nie równa

CENA_JEDN > 100 - wi ksza ni

CENA_JEDN >= 100 - wi ksza lub równa

CENA_JEDN < 100 - mniejsza ni

CENA_JEDN <= 100 - mniejsza lub równa

Operatory AND oraz OR

Kiedy w warunku u#ywamy operatora

AND

, aby wiersz zosta) zawarty w wyniku, oba warunki

po) czone operatorem

AND

musz zosta spe)nione, tzn. musz zwróci warto7 prawdy (TRUE).

Warunek z operatorem

OR

zwróci warto7 TRUE, gdy przynajmniej jedna ze stron zwróci warto7

TRUE.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

14

Rys.3.7.

SELECT IMIE, NAZWISKO, STANOWISKO, DZIAL

FROM DB2ADMIN.PRACOWNICY

WHERE STANOWISKO = 'SPRZEDAWCA'

AND DZIAL = 'OBS'UGA KLIENTA’;

Takie zapytanie SQL zwróci w wyniku wszystkich pracowników pracuj cych na stanowisku
sprzedawca w dziale obs)ugi klienta.

SELECT IMIE, NAZWISKO, STANOWISKO, DZIAL

FROM DB2ADMIN.PRACOWNICY

WHERE STANOWISKO = 'SPRZEDAWCA'

OR DZIAL = 'TECHNICZNY';

Rys.3.8.

Nast pne zapytanie zwróci wszystkich pracowników pracuj cych na stanowisku sprzedawca oraz
wszystkich pracowników pracuj cych w dziale technicznym niezale#nie od tego, czy pracuj na
stanowisku sprzedawca.

Operatorów

AND

i

OR

mo#emy u#ywa razem do budowy bardziej z)o#onych warunków. Nast puj ce

zapytanie zwróci wszystkich pracowników pracuj cych na stanowisku kierownika w dziale obs)ugi
klienta oraz wszystkich pracowników z dzia)u technicznego.

Wiersze zostan uporz dkowane wg dzia)u a nast pnie wg nazwiska.

SELECT IMIE, NAZWISKO, STANOWISKO, DZIAL

FROM DB2ADMIN.PRACOWNICY

WHERE STANOWISKO = 'KIEROWNIK'

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

15

AND DZIAL = 'OBS'UGA KLIENTA'

OR DZIAL = 'TECHNICZNY'

ORDER BY DZIAL, NAZWISKO;

Rys.3.9.

W poprzednim przyk)adzie widoczna jest wy#szo7 operatora

AND

nad operatorem

OR

. Nast pne

zapytanie posiada w klauzuli

WHERE

warunki otoczone nawiasami. Nawiasy pozwalaj okre7li

kolejno7 sprawdzania warunków.

SELECT IMIE, NAZWISKO, STANOWISKO, DZIAL

FROM DB2ADMIN.PRACOWNICY

WHERE STANOWISKO = 'KIEROWNIK

AND (DZIAL = 'OBS'UGA KLIENTA' OR DZIA' = 'TECHNICZNY')

ORDER BY DZIAL, NAZWISKO;

Zapytanie wy7wietli osoby pracuj ce tylko na stanowisku kierownika w dziale obs)ugi klienta lub w
dziale technicznym.

Rys.3.10.

Predykat IN

Predykat

IN

pozwala porówna warto7 do warto7ci ze zbioru. Warto7ci typu znakowego, daty i czasu

musz by otoczone apostrofem.

SELECT IMIE, NAZWISKO, STANOWISKO, DZIAL

FROM DB2ADMIN.PRACOWNICY

WHERE STANOWISKO IN ('SPRZEDAWCA

, 'KIEROWNIK');

Rys.3.11.

Warto7ci mog by typu numerycznego, znakowego, typu daty lub czasu.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

16

SELECT MARKA, TYP, ROK_PROD, POJ_SILNIKA

FROM DB2ADMIN. SAMOCHODY

WHERE POJ_SILNIKA IN (1400, 1600);

Rys.3.12.

Predykat BETWEEN

Predykat

BETWEEN

pozwala sprawdzi , czy dana warto7 zawiera si mi dzy dwoma wskazanymi

warto7ciami.

SELECT MARKA, TYP, ROK_PROD, KOLOR, POJ_SILNIKA

FROM DB2ADMIN.SAMOCHODY

WHERE POJ_SILNIKA BETWEEN 1100 AND 1800;

Rys.3.13.

Zapytanie zwróci)o dane o samochodach, których pojemno7 silnika zawiera si miedzy 1100 a 1800
cm sze7ciennych.

Klauzula:

WHERE POJ_SILNIKA BETWEEN 1100 AND 1800;

jest równa nast puj cemu zapisowi:

WHERE POJ_SILNIKA >= 1100 AND POJ_SILNIKA <= 1800;

Wybieranie warto-ci NULL

Wybieranie wierszy z tabeli, w których jedno z pól zawiera warto7 pust

NULL

, polega na u#yciu

predykatu

NULL

.

W przyk)adzie u#ycia predykatu

NULL

wybieramy wszystkich klientów, którzy nie posiadaj karty

kredytowej. Zwrócone zostan wiersze z danymi o klientach, którzy w polu NR_ KARTY_KREDYT
nie posiadaj #adnego wpisu.

SELECT IMI&, NAZWISKO, ULICA, MIASTO

PROM DB2ADMIN.KLIENCI

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

17

WHERE NR_KARTY_KREDYT IS NULL;

Mo#liwe jest wybranie wszystkich klientów posiadaj cych kart kredytow . Wtedy w klauzuli

WHERE

dla sprawdzenia warto7ci w polu NR_KARTY_KREDYT u#ywamy równie# predykatu

NULL

, ale z

zaprzeczeniem.

SELECT IMIE, NAZWISKO, NR_KARTY_KREDYT, MIASTO

FROM DB2ADMIN.KLIENCI

WHERE NR_KARTY_KREDYT IS NOT NULL;

Rys.3.14.

Wyszukiwanie cz)-ciowe - predykat LIKE

Cz sto istnieje konieczno7 wyszukania np. nazwisk klientów, które zaczynaj si od konkretnej
litery.

SELECT IMIE, NAZWISKO, ULICA, MIASTO

FROM DB2ADMIN.KLIENCI

WHERE NAZWISKO LIKE 'K%';

Rys.3.15.

Inne przyk)ady u#ycia predykatu

LIKE

:

SELECT IMIE, NAZWISKO, ULICA, MIASTO

FROM DB2ADMIN.KLIENCI

WHERE NAZWISKO LIKE '%SKI';

Rys.3.16.

Zapytanie zwróci wiersze z danymi o klientach, których nazwiska ko@cz si na „ski".

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

18

W nast pnym przyk)adzie wyszukamy klientów, którzy w swoim nazwisku posiadaj litery „K" oraz
„A" w wymienionym porz dku.

SELECT IMIE, NAZWISKO, ULICA, MIASTO

FROM DB2ADMIN.KLIENCI

WHERE NAZWISKO LIKE '%K%A%';

Rys.3.17.

W zapytaniach z predykatem

LIKE

mo#na stosowa zaprzeczenie NOT oraz operatory

AND

i OR. Oto

przyk)ady:

SELECT IMIE, NAZWISKO, ULICA, MIASTO

FROM DB2ADMIN.KLIENCI ,

WHERE NAZWISKO NOT LIKE 'K%';

Rys.3.18.

Nast puj ce zapytanie wyszuka wszystkich klientów, których nazwiska nie zaczynaj si na liter „K"
oraz „D".

SELECT IMIE, NAZWISKO, ULICA, MIASTO

FROM DB2ADMIN.KLIENCI

WHERE NAZWISKO NOT LIKE 'K%'

AND NAZWISKO NOT LIKE 'D%' ;

Mo#liwe jest równie# wyszukanie np. klientów, których nazwiska zawieraj drug liter „O". Znak
„_" zast puje dowolny pojedynczy znak.

SELECT IMIE, NAZWISKO, ULICA, MIASTO

FROM DB2ADMIN.KLIENCI

WHERE NAZWISKO LIKE '_0%';

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

19

Rys.3.19.

Oto drugi przyk)ad, w którym pomijamy dwie pierwsze litery nazwiska:

SELECT IMIE, NAZWISKO, ULICA, MIASTO

FROM DB2ADMIN.KLIENCI

WHERE NAZWISKO LIKE '_C%';

Podsumowanie

1. Do wybierania danych z tabeli s)u#y polecenie

SELECT

.

2. Mo#na wybiera wszystkie i okre7lone kolumny tabeli.

3. Mo#na wybiera wszystkie i okre7lone wiersze.

4. Mo#na wybiera dane i jednocze7nie je uporz dkowa .

5. W zapytaniu

SELECT

mo#na u#y s)ów kluczowych:

DISTINCT

- w celu wyszukania nie powtarzaj cych si wierszy;

LIKE

- w celu okre7lenia warto7ci dla warunku;

IN - w celu wskazania zbioru warto7ci dla warunku;

BETWEEN

- w celu wskazania zakresu warto7ci dla warunku.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

20

Rozdzia 4 . Wybieranie danych z wielu tabel.

W tym rozdziale zajmiemy si wyszukiwaniem danych z wielu tabel. Do tej pory wszystkie zapytania
wyszukuj ce koncentrowa)y si na jednej tabeli. Poza tym nauczymy si u#ywa skrótów w
odwo)ywaniu si do tabel w zapytaniach SQL. Poznamy równie# predykat

JOIN

.

R

YS

.4.1.

W naszej przyk)adowej bazie danych WYPAUT, dla ka#dego numeru miejsca (miejsca pracy
pracownika) w tabeli PRACOWNICY istnieje jeden wiersz w tabeli MIEJSCA.

Rys. 4.2.

DB2 odczytuje numer miejsca pracy pracownika z tabeli PRACOWNICY, a nast pnie przeszukuje
tabel MIEJSCA w celu znalezienia odpowiadaj cego temu numerowi wiersza, który opisuje
dok)adnie miejsce pracy tzn. adres, telefon itd. W j zyku baz danych, jakim jest SQL, pytanie
przedstawione na poprzednim rysunku mo#e wygl da tak:

SELECT DB2ADMIN.PRACOWNICY.NAZWISKO,

DB2ADMIN.PRACOWNICY.STANOWISKO,

DB2ADMIN.PRACOWNICY.DZIAL,

DB2ADMIN.MIEJSCA.MIASTO,

DB2ADMIN.MIEJSCA.ULICA

FROM DB2ADMIN.PRACOWNICY,DB2ADMIN.MIEJSCA

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

21

WHERE

DB2ADMIN.PRACOWNICY.NR_MIEJSCA=DB2ADMIN.MIEJSCA.NR_MIEJSCA

ORDER BY DB2ADMIN.PRACOWNICY.NAZWISKO;

Rys.4.3.

Wybieranie danych z wielu tabel nazywa si powszechnie z) czeniem (ang. join). W celu z) czenia
dwóch lub wi kszej ilo7ci tabel:

w klauzuli

SELECT

musimy wyspecyfikowa kolumny, które chcemy zawrze w zapytaniu;

w klauzuli

FROM

okre7lamy nazwy z) czanych tabel;

w klauzuli

WHERE

okre7lamy warunki z) czenia.

Sk7adnie z73czenia - predykat JOIN

Istniej dwa typy sk)adni zapytania z) czaj cego. Pierwszy typ zosta) zaprezentowany ju# w
poprzedniej sekcji. Oto zapytanie, które zosta)o zbudowane przy u#yciu tej sk)adni:

SELECT DB2ADMIN.PRACOWNICY.NAZWISKO,

DB2ADMIN.PRACOWNICY.STANOWISKO,

DB2ADMIN.PRACOWNICY.DZIAL,

DB2ADMIN.MIEJSCA.MIASTO,

DB2ADMIN.MI&JSCA.ULICA

FROM DB2ADMIN.PRACOWNICY,

DB2ADMIN.MIEJSCA

WHERE DB2ADMIN.PRACOWNICY.NR_MIEJSCA = DB2ADMIN.MIEJSCA.NR_MIEJSCA

ORDER BY DB2ADMIN.PRACOWNICY.NAZWISKO;

Przy z) czaniu dwóch tabel, do poprawnego wy7wietlenia wyniku klauzula

WHERE

musi zawiera

jeden warunek. Gdy z) czamy trzy tabele, klauzula WHERE musi zawiera przynajmniej dwa
warunki. Dwa pierwsze warunki w tym przyk)adzie dotycz z) czenia tabel, trzeci dotyczy warunku
wyboru wierszy. Oto przyk)ad:

SELECT DB2ADMIN. WYPO"YCZENIA.NR_WYPOZYCZENIA,

DB2ADMIN.PRACOWNICY.NAZWISKO,

DB2ADMIN.PRACOWNICY.STANOWISKO,

DB2ADMIN.PRACOWNICY.DZIAL,

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

22

DB2ADMIN.MIEJSCA.MIASTO,

DB2ADMIN.MIEJSCA.ULICA

FROM DB2ADMIN.PRACOWNICY,

DB2ADMIN.MIEJSCA,

DB2ADMIN.WYPOZYCZENIA

WHERE DB2ADMIN.PRACOWNICY.NR_MIEJSCA = DB2ADMIN.MIEJSCA.NR_MIEJSCA

AND DB2ADMIN.PRACOWNICY.NR_PRACOWNIKA = DB2ADMIN.WYPOZYCZENIA.NR_PRACOW_WYP

AND DB2ADMIN.MIEJSCA.MIASTO = 'WARSZAWA'

ORDER BY DB2ADMIN.PRACOWNICY.NAZWISKO;

Rys.4.4.

Inny typ z) czenia polega na zastosowaniu konstrukcji

JOIN

...

ON

.

SELECT DB2ADMIN.PRACOWNICY.NAZWISKO,

DB2ADMIN.PRACOWNICY.STANOWISKO, DB2ADMIN.PRACOWNICY.DZIAL,

DB2ADMIN.MIEJSCA.MIASTO, DB2ADMIN.MIEJSCA.ULICA

FROM DB2ADMIN.PRACOWNICY JOIN

DB2ADMIN.MIEJSCA ON

DB2ADMIN.PRACOWNICY.NR_MIEJSCA = DB2ADMIN.MIEJSCA.NR_MIEJSCA

WHERE DB2ADMIN.PRACOWNICY.STANOWISKO = 'SPRZEDAWCA'

ORDER BY DB2ADMIN.PRACOWNICY.NAZWISKO;

Kiedy u#ywamy s)owa

JOIN

w klauzuli

FROM

, warunki z) czenia musz by wyspecyfikowane po

klauzuli

ON

. W klauzuli

WHERE

mo#na okre7li

dodatkowe warunki. Oto wynik wykonania

powy#szego zapytania:

Rys.4.5.

Stosowanie aliasów w zapytaniu

Aliasy definiuje si w celu skrócenia nazwy tabeli. Jak wiemy na nazw tabeli sk)ada si kwalifikator i

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

23

nazwa tabeli. Kwalifikator mówi o tym, kto jest w)a7cicielem tabeli. W naszym przyk)adzie u#ycia
aliasów, alias P wskazuje na tabel DB2ADMIN.PRACOWNICY natomiast alias M opisuje tabel
DB2ADMIN.MIEJSCA.

SELECT P.NAZWISKO, P.STANOWISKO, P.DZIA' , M.MIASTO, M.ULICA

FROM DB2ADMIN.PRACOWNICY P,

DB2ADMIN.MIEJSCA M

WHERE

P.NR_MIEJSCA = M.NR_MIEJSCA AND P.STANOWISKO = 'SPRZEDAWCA'

ORDER BY P.NAZWISKO;

Wynik wykonania tego zapytania jest taki sam jak w ten w poprzedniej sekcji. Pocz wszy od tej sekcji
w przyk)adach b dziemy stosowa aliasy dla nazw tabel.

Podsumowanie

1. Dane mog by wydobywane z jednej lub wielu tabel.

2. W zapytaniu wybieraj cym dane z przynajmniej dwóch tabel mo#na u#y predykatu JOIN.

3. Je#eli w zapytaniu, które wybiera dane z przynajmniej dwóch tabel, nie zostanie

wyspecyfikowany warunek po s)owie kluczowym

WHERE

lub

ON

, to zwrócony wynik b dzie

przedstawia) iloczyn kartezja@ski.

4. W zapytaniach mo#na u#y aliasów zamiast nazw tabel.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

24

Rozdzia 5. Funkcje skalarne i arytmetyczne.

W tym rozdziale zajmiemy si u#ywaniem funkcji skalarnych i arytmetycznych. B dziemy u#ywa
funkcji arytmetycznych do przeliczania warto7ci w kolumnach. Poznamy podstawowe funkcje
skalarne m.in. funkcje operuj ce na datach i czasie. Pod koniec tego rozdzia)u poznamy sposób na
wybieranie warto7ci przy u#yciu wyra#enia

CASE

.

Wybieranie wyliczonych warto-ci

W zapytaniu SQL mo#emy u#y nast puj cych operatorów arytmetycznych w celu obliczenia
warto7ci:

+ dodawanie

- odejmowanie

* mno#enie

/ dzielenie

Operatorów tych mo#emy u#y do budowy bardziej rozbudowanych wyra#e@ matematycznych
w) cznie z u#yciem nawiasów w celu zaznaczenia kolejno7ci wykonywania dzia)a@.

SELECT P.IMI&, P.NAZWISKO, P.PENSJA, P.DODATEK, P.PENSJA + P.DODATEK

FROM DB2ADMIN.PRACOWNICY'P WHERE P.PENSJA > 1100

ORDER BY P,NAZWISKO;

Rys.5.1.

Wynik zapytania zawiera obliczon kolumn , która jest sum kolumn; PENSJA I DODATEK.
Kolumna z wynikiem zosta)a domy7lnie nazwana „5", poniewa# jest ona pi ta z kolei. Nazwa taka
zosta)a nadana w DB2 zainstalowanym pod kontrol systemu Windows NT. W innych systemach
operacyjnych, DB2 mo#e wy liczon kolumn nazywa inaczej.

Dla dwóch pracowników, którzy zajmuj stanowisko kierowników nie zosta)y obliczone warto7ci. Nie
posiadaj oni #adnego dodatku. ]ci7lej mówi c, w polu DODATEK warto7 dodatku dla tych osób
wynosi

MOLL

. Warto7ci NULL nie mog bra udzia)u w obliczeniach. W dalszej cz 7ci tego rozdzia)u

dowiemy si , jak obej7 taki przypadek.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

25

Nazywanie wyliczone. Kolumny

Kolumn wynikow mo#emy nazwa . Poni#ej znajduje si identyczne zapytanie jak w poprzedniej
sekcji. Po s)owie kluczowym

AS

podana jest nazwa dla nowej wyliczonej kolumny.

SELECT P.IMIE, P.NAZWISKO, P.PENSJA, P.DODATEK,

P.PENSJA + P.DODATEK AS DO_WYPLATY

FROM DB2ADMIN.PRACOWNICY P

WHERE P. PENSJA > 1100

ORDER BX P.NAZWISKO;

Rys.5.2.

W tym przyk)adzie tak samo jak w przyk)adzie z poprzedniej sekcji do oblicze@ nie mog)a by wzi ta
pod uwag warto7

NULL

. St d puste pola widoczne na powy#szym rysunku. Zostanie to rozwi zane

w nast pnej sekcji.

Nazwa tabeli wyliczonej mo#e by otoczona cudzys)owem co pozwala na u#ycie nazwy sk)adaj cej
si z kilku s)ów. Ilustruje to poni#szy przyk)ad.

SELECT P.IMIE, P.NAZWISKO, P.PENSJA, P.DODATEK,

P.PENSJA + P.DODATEK AS "DO WYPLATY"

FROM DB2ADMIN.PRACOWNICY P

WHERE P.PENSJA > 1100 ORDER BY P.NAZWISKO;

Nowa nazwa kolumny wyliczonej nie mo#e by u#yta w klauzuli

WHERE

. W systemie DB2 mo#e by

natomiast u#yta w

ORDER BY

.

SELECT P.IMIE, P.NAZWISKO, P.PENSJA, P.DODATEK

P.PENSJA + P.DODATEK AS DO_WYPLATY

FROM D32ADMIN. PRACOWNICY P

WHERE P.PENSJA > 1100

ORDER BY DO_WYPLATY;

Jak wida w powy#szym przyk)adzie, nazwa kolumny DO_WYPLATY w klauzuli

ORDER BY

nie

mo#e by poprzedzona aliasem jak pozosta)e kolumny.

W systemie InterBase, nowa nazwa kolumny wyliczonej nie mo#e by u#yta w klauzuli

ORDER BY

.

Zamiast nazwy mo#emy wskaza numer kolumny, wzgl dem której b dziemy porz dkowa dane. Oto
przyk)ad tego samego polecenia dla systemu InterBase:

SELECT P.IMIE, P.NAZWISKO, P.PENSJA, P.DODATEK,

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

26

P.PENSJA + P.DODATEK AS DO_WYPLATY

FROM PRACOWNICY P WHERE P.PENSJA > 1100

Funkcja COALESCE

Funkcja

COALESCE

zosta)a zaimplementowana tylko w systemie DB2. Funkcja

COALESCE

jest funkcj

operuj c na warto7ci

NULL

. Zwraca pierwszy argument który nie jest warto7ci

NULL

. Funkcja ta jest

równowa#na funkcji

VALUE

. Funkcja

YALUE

jest synonimem funkcji

COALESCE

. ,

Poni#szy przyk)ad u#ycia funkcji

COALESCE

rozwi zuje nasz problem z poprzedniej sekcji. Dzia)anie

funkcji

COALESCE

najpierw w kolumnie DODATEK zamienia wszystkie wyst pienia warto7ci

NULL

na warto7 zera, a nast pnie robi to samo przy obliczaniu warto7ci do wyp)aty.

SELECT P.IMIE, P.NAZWISKO, P.PENSJA,

COALESCE ( P.DODATEK, O ) AS DODATEK,

P.PENSJA + COALESCE (P.DODATEK, 0) AS DO_WYP'ATY

FROM DB2ADMIN.PRACOWNICY P

WHERE P,PENSJA > 1100 ORDER BY P.NAZWISKO;

Rys.5.3.

W kolejnym przyk)adzie funkcja

COALESCE

zosta)a u#yta w celu zast pienia wszystkich-wyst pie@

warto7ci

NULL

na ci g „nie posiada". Wy7wietleni zostali wszyscy klienci.

Dla tych, którzy nie posiadaj karty kredytowej, w polu NRJCARTY zosta) wpisany ci g „nie
posiada".

SELECT K.IMIE, K.NAZWISKO,

COALESCE<K.NR_KARTY_KREDYT, 'Nie posiada') AS NR__KARTY

FROM DB2ADMIN.KLIENCI K;

Rys.5.4.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

27

Dziesi)tna reprezentacja warto-ci

Funkcja

DECIMAL

zosta)a zaimplementowana tylko w systemie DB2. Funkia DBCIMAL zwraca

dziesi tn reprezentacj warto7ci numerycznej.

Pierwszy parametr zawiera warto7 do reprezentacji, drugi parametr okre7la ilo cyfr przed
przecinkiem, trzeci parametr okre7la liczb miejsc po przecinku.

SELECT P.IMIE, P.NAZWISKO, P.PENSJA,

DECIMAL ( (P.PENSJA * 11.3)/100, 8, 2} AS KWOTA_PODWYZKI

FROM DB2ADMIN.PRACOWNICY P ORDER BY P.NAZWISKO;

Przyk)ad oblicza kwot 11.3% podwy#ki.

Rys.5.5.

Zaokr3glanie wyników

Funkcja

ROUND

zosta)a zaimplementowana tylko w systemie DB2. S)u#y ona do zaokr glania

wyników, Funkcja ta w pierwszym argumencie musi zawiera warto7 do zaokr glenia, w drugim
natomiast podaje si liczb miejsc po przecinku, do jakiej ma zosta zaokr glona

warto7 . Poni#szy przyk)ad zaokr gla warto7ci do liczb ca)kowitych. Warto7ci dziesi tne poni#ej 0,50
zosta)y zaokr glone do zera, natomiast powy#ej 0,50 do jedno7ci.

SELECT P.IMIE, P.NAZWISKO, P.PENSJA,

ROUND ( (P.PENSJA * 11.31/100, 0) AS KWOTA_PODWYZKI

FROM DB2ADMIN.PRACOWNICY P

ORDER BY P.NAZWISKO;

Rys.5.6.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

28

Porównania daty

Kolumny typu daty lub czasu mog by porównywane z innymi warto7ciami reprezentuj cymi dat
lub czas. Warto7ci przedstawiaj ce dat lub czas musz by otoczone pojedynczym cudzys)owem. W
poni#szym przyk)adzie zostan wy7wietlone dane

pracowników zatrudnionych w lub po dacie 1998-01-01.

SELECT P.IMIE, P.NAZWISKO, P.DZIAL,

P.STANOWISKO, P.DATA_ZATR

FROM DB2ADMIN. PRACOWNICY P

WHERE P.DATA_ZATR >= '1998-01-01'

ORDER BY P.NAZWISKO;

Rys.5.7.

Kolejne zapytanie wybiera pracowników zatrudnionych co najmniej 2 lata. Porównywana warto7
020000 przedstawia 02 rok, 00 miesi cy i 00 dni. Funkcja

CURRENT DAT\

zwraca bie# c dat .

Funkcja ta nie jest dost pna w systemie InterBase.

SELECT P.IMIE, P.NAZWISKO, P.DZIAL,

P.STANOWISKO, P.DATA__ZATR

FROM DB2ADMIN.PRACOWNICY P

WHERE CURRENT DATE - P.DATA_ZATR >= 020000

ORDER BY P.NAZWISKO;

Rys.5.8.

Oprócz funkcji

CORRENT DAT\

, która zwraca bie# c dat , mamy do wykorzystania funkcj

zwracaj c bie# cy czas

CURRENT TIME

oraz funkcj

CURRENT TIMESTAMP

zwracaj c dok)adny

bie# cy czas. Obie pozosta)e funkcje równie# nie s dost pne w systemie InterBase.

Funkcje daty

Funkcja

YEAR

pozwala odczyta rok z pe)nego formatu daty. Funkcja

YEAR

oraz wszystkie pozosta)e

w tej sekcji nie zosta)y niestety zaimplementowane w InterBase. Kolejny przyk)ad jest identyczny do
tego z poprzedniej sekcji z tym wyj tkiem, #e dodatkowa kolumna przedstawia ilo7 przepracowanych
lat przez pracownika, który pracuje d)u#ej ni# dwa lata.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

29

SELECT P.IMIE, P.NAZWISKO, P.DZIAL, P.STANOWISKO, P.DATA_ZATR,

YEAR (CURRENT DAT" -

P.DATA_ZATR) AS ILOSC_LAT

FROM DB2ADMIN.PRACOWNICY P

WHERE CURRENT DATE -

P.DATA_ZATR >= 020000

ORDER BY P.NAZWISKO;

Rys.5.9.

Poza funkcj

YEAR

mamy do dyspozycji funkcje

MDNTH

oraz

DAY

, które odpowiednio wydobywaj z

daty miesi c i dzie@. Oto przyk)ad:

SELECT P. IMI&, P. NAZWISKO, P.DATA_ZATR

YEAR(P.DATA_ZATR) AS ROK,

MONTH(P.DATA_ZATR) AS MIESIAC,

DAY(P.DATA_ZATR) AS DZIEN

FROM DB2ADMIN.PRACOWNICY P;

Rys.5.10.

W naszej przyk)adowej bazie danych znajduje si tabela WYPORYCZENIA, która m.in. przechowuje
dane o dacie wypo#yczenia samochodu i o dacie jego oddania. Nast pny przyk)ad b dzie oblicza)
ilo7 dni, przez które samochód by) wypo#yczony.

SELECT K.NAZWISKO, W.NR_WYPOZYCZENIA,

W.DATA_WYP, W.DATA_ODD,

DAYS(W.DATA_ODD)- DAYS(W.DATA_WYP) + l AS ILOSC_DNI

FROM DB2ADMIN.KLIENCI K, DB2ADMIN.WYPO"YCZENIA W

WHERE K.NR_KLIENTA = W.NR_KLIEHTA AND W.DATA_ODD IS NOT NULL;

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

30

Rys.5.11.

Ci g DAYS(W.DATA_ODD) - DAYS (W. DAT_WYP) + l AS ILOSC_DNI wyst puj cy w
zapytaniu odejmuje od daty oddania dat wypo#yczenia samochodu i dodaje jeden. Dodanie jednego
dnia ma na celu zaznaczenie sytuacji, gdy klient odda) samochód w dniu wypo#yczenia. W takim
przypadku ró#nica tych dat równa jest zero. W pozosta)ych przypadkach równie# dodawana musi by
liczba jeden, aby zawrze w wyniku pierwszy dzie@ wypo#yczenia. Funkcja

DAYS

odczytuje z daty

ilo7 dni od daty l stycznia 0001 roku plus jeden.

Nast pny przyk)ad u#ycia funkcji

DAYS

polega na odj ciu od istniej cych dat dwóch dni. Mo#emy

równie# pos)u#y si funkcj

YEARS

oraz

MONTHS

, które odpowiednio oznaczaj lata i miesi ce.

SELECT K. NAZWISKO, W. NR_WYPOZYCZENIA,

W.DATA_WYP, W.DATA_ODD

W.DATA_WYP - 2 DAYS, W. DATA_ODD - 2 DAYS

FROM DB2ADMIN.KLIENCI K,

DB2ADMIN.WYPO"YCZENIA W

WHERE K.NR_KLIENTA = W. NR_KLIENTA

AND W.DATA_ODD IS NOT NULL

AND K.MIASTO = 'WARSZAWA';

Rys.5.12.

Wybieranie pod7a cucha

W razie potrzeby wybrania tyko pewnej cz 7ci )a@cucha musimy zastosowa funkcj

SUBSTR

. Na

poni#szym rysunku funkcja

SUBSTR

wybiera ci g o d)ugo7ci sze7ciu znaków pocz wszy od trzeciego

znaku.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

31

Rys.5.13.

SELECT SUBSTR(K.NAZWISKO, 3, 4), K.NAZWISKO

FROM DB2ADMIN.KLIENCI K;

Rys.5.14.

W InterBase funkcj

SUBSTR

nale#y „uaktywni ". Polega to na zadeklarowaniu funkcji, która zostanie

pobrana z zewn trznej biblioteki do) czanej dynamicznie DLL. Aby funkcja ,.'."

SUBSTR

by)a aktywna

w InterBase, wykonaj poni#sze polecenie w Interactive SQL.

DECLARE EXTERNAL FUNCTION SUBSTR

CSTRING(80), SMALLINT, SMALLINT

RETURNS CSTRING(SO) FREE_IT

ENTRY_POINT 'IB_UDF_Substr' MODULE_NAME 'ib_udf.dll';

Po wykonaniu powy#szego polecenia, mo#emy przej7 do opcji IBConsole, aby zobaczy t funkcj ,
klikaj c w panelu po lewej stronie w ikon External Function.

Inaczej ni# w DB2, w InterBase funkcja

SUBSTR

wybiera ci g pocz wszy od pozycji podanej w

drugim argumencie a sko@czywszy na trzecim argumencie. Zatem polecenie:

SELECT SUBSTR(K.NAZWISKO, 3, 4), K.NAZWISKO

FROM KLIENCI K;

zwróci nast puj ce wyniki:

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

32

Rys.5.15.

<3czenie 7a cuchów

Funkcja

CONCAT

pozwala ) czy ci gi znaków w jeden )a@cuch wynikowy. Funkcja ta jest dost pna

tylko w DB2. Poni#szy przyk)ad zapytania wy7wietli list klientów wraz z adresem zamieszkania.
Taka lista mo#e pos)u#y jako Oród)o do korespondencji seryjnej.

SELECT K.IMIE CONCAT ' ' CONCAT K.NAZWISKO AS KLIENT,

'ul. ' CONCAT K.DLICA CONCAT ' ' CONCAT K. NUMER AS ULICA,

K. KOD CONCAT ' ' CONCAT K. MIASTO AS MIASTO

FROM DB2ADMIN.KLIENCI K

ORDER BY K.NAZWISKO;

Zamiast funkcji

CONCAT

mo#na u#y znaków | |:

SELECT K.IMI& | | ' ' | | K.NAZWISKO AS KLIENT, ...

Rys.5.16.

Wyra5enie CASE

Wyra#enie

CASE

pozwala na wybranie pewnej warto7ci w zale#no7ci od warto7ci w innej

kolumnie.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

33

Wyra#enie

CASE

dost pne jest tylko w systemie DB2. W przyk)adzie poni#ej sprawdzamy, czy klient

pochodzi z Warszawy; je#eli tak, to w kolumnie wpisywana jest warto7 „Klient oddzia)u
macierzystego", w przeciwnym razie jest to „Klient z przedstawicielstwa".

SELECT K.IMIE, K.NAZWISKO, K.MIASTO,

CASE K.MIASTO

WHEN 'WARSZAWA' THEN 'Klient oddziaFu macierzystego'

ELSE 'Klient z przedstawicielstwa'

END

FROM DB2ADMIN.KLIENCI K ORDER BY K.NAZWISKO;

Rys.5.17.

Podsumowanie

1. Funkcje arytmetyczne mog by u#ywane w klauzuli

SELECT

orazw HERE.

2. Kolumny wyliczone mog by nazwane przez zastosowanie klauzuli

AS

.

3. Funkcje skalarne mog by u#ywane do zmiany reprezentacji danych - funkcje: DECIMAL,

SUBSTR, CONCAT.

4. Funkcje skalarne mog by u#yte do wydobycia lat, miesi cy oraz dni z ró#nych formatów daty.

5. Wyra#enie CASE pozwala na wybór warto7ci dla kolumny w zale#no7ci od zdefiniowanego

warunku.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

34

Rozdzia 6.Funkcje kolumnowe i grupuj+ce

W tym rozdziale poznamy funkcje operuj ce na kolumnach, które mog by u#yte w celu wydobycia
wyników z jednego lub wi kszej ilo7ci wierszy Poznamy równie# zasady grupowania wierszy

Funkcje kolumnowe

Do funkcji kolumnowych zalicza si ftmkcje

SUM

,

AVG

,

MIN

,

MAX

oraz

COUNT

Funkcje te s

u#ywane w klauzulach

SELECT

lub

HAVING

SUM

- funkcja s)u# ca do obliczenia sumy warto7ci w okre7lonych kolumnach,

AVG

- oblicza 7redni warto7ci \v kolumnie,

MIN

- znajduje minimaln warto7 ,

MAX

- znajduje maksymaln warto7 ,

COUNT

- 7luzy do zliczania wyst pie@ pewnej warto7ci w wierszach

Poni#szy przyk)ad wy7wietli ca)kowit sum wszystkich pensji pracowników, 7redni pensj ,
minimaln i maksymalna pensj oraz ilo7 pracowników

SELECT SUM(P.PENSJA) AS PENSJA,

AVG(P.PENSJA) AS SREDNIA,

MIN (P.PENSJA) AS PENSJA_MIN,

MAX(P.PENSJA) AS PENSJA_MAX,

COUNT(*) AS ILOSC FROM DB2ADMIN PRACOWNICY P,

Rys.6.1.

W poprzednim przyk)adzie funkcja

COUNT

zosta)a u#yta do zliczenia wszystkich wierszy w tabeli

(

COUNT

(*)), mo#e by ona u#yta równie# do zliczenia wierszy zawieraj cych powtarzaj c si

warto7 w kolumnie. W tym przyk)adzie zliczamy liczb dzia)ów i stanowisk w firmie.

SELECT COUNT(DISTINCT P.DZIAL) AS ILOSC_DZIALOW,

COUNT(DISTINCT P.STANOWISKO) AS ILOSC_STANOWISK

FROM DB2ADMIN.PRACOWNICY P;

Rys.6.2.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

35

Stosowanie funkcji kolumnowych mo#na przeprowadzi równie# na pewnym podzbiorze wierszy,

SELECT SUM(P.PENSJA) AS PENSJA,

AVG(P.PENSJA) AS SREDNIA,

MIN(P.PENSJA) AS PENSJA_MIN,

MAX(P.PENSJA) AS PENSJA_MAX,

COUNT(*) AS ILOSC FROM DB2ADMIN.PRACOWNICY P

WHERE P.DZIAL = 'OBSLUGA KLIENTA

;

Rys.6.3.

Klauzula GROUP BY

Klauzula

GROUP BY

grupuje wiersze o tej samej warto7ci wyszczególnionych kolumn. Funkcje

agreguj ce SQL (

AYG

,

MAX

,

MIN

,

SUM

oraz

COUNT

) w klauzuli

SELECT

operuj na ka#dej grupie

osobno.

Rys.6.4.

Nast puj cy przyk)ad zapytania pogrupuje wiersze wed)ug stanowiska.

SELECT P.STANOWISKO, SUM (P.PENSJA) AS PENSJA,

AYG(P.PENSJA) AS SREDNIA,

MIN(P.PENSJA) AS PENSJA_MIN,

MAX(P.PENSJA) AS PENSJA_MAX,

COUNT(*) AS ILOSC

FROM DB2ADMIN. PRACOWNICY P

GROUP BY P.STANOWISKO

ORDER BY P.STANOWISKO;

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

36

Rys.6.5.

Klauzula HAUING

Klauzula

HAYING

u#ywana jest w po) czeniu z klauzul

GROUP BY

w celu ograniczenia wy7wietlanych

grup. Warunek szukania musi zawiera funkcj agreguj c . Po zgrupowaniu wierszy przez klauzul

GROUP BY

, klauzula

HAYING

wy7wietla tylko te wiersze spo7ród zgrupowanych, które spe)niaj

warunki wyszczególnione w klauzuli

HAYING

.

Rys.6.6.

Klauzula

HAYING

mo#e by u#yta tylko wówczas, gdy w zapytaniu znajduje si klauzula

GROUP

BY.

Nast pny przyk)ad zapytania wy7wietla wszystkich pracowników, którzy wypo#yczyli samochody na
) czn jednostkow warto7 powy#ej 400 z).

SELECT P.NAZWISKO, SUM (W.CENA_JEDN)

FROM DB2ADMIN.PRACOWNICY P,

DB2ADMIN.WYPOZYCZENIA W

WHERE P.NR_PRACOWNIKA = W.NR_PRACOW_WYP

GROUP BY P.NAZWISKO;

HAVING SUM(W.CENA_JEDN) > 400

ORDER BY P.NAZWISKO;

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

37

Rys.6.7.

Podsumowanie

1. Funkcje kolumnowe mog by u#yte tylko w klauzulach

SELECT

i

HAVING

.

2. Klauzula

SELECT

mo#e zawiera tylko funkcje kolumnowe oraz kolumny wskazane w klauzuli

ORDER BY

.

3. Klauzula

HAVING

mo#e zawiera

dowolne funkcje kolumnowe operuj ce na dowolnych

kolumnach tabeli. Te kolumny nie musza by wyspecyfikowane w klauzuli SELECT.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

38

Rozdzia 7. Klauzula UNION.

W tym rozdziale zapoznamy si z klauzul

UNION

, która pozwala na ) czenie dwóch lub wi cej

wyników wykonania zapytania

SELECT

. Poznamy sk)adni wyra#enia

UNION

, zasady dla listy w

klauzuli

SELECT

oraz ró#nice mi dzy klauzul

UNION

i

UNION ALL

.

<3czenie wielu wyników zapytania

Klauzula

UNION

) czy dwa lub wi cej polecenia

SELECT

w jedn tabel wynikow . Klauzula

SELECT

musi zwraca t sam liczb kolumn. Kolumny pokrywaj ce si mu-sz mie t sam szeroko7 i typ
danych. Nazwy tych kolumn mog by ró#ne.

Rys.7.1.

Klauzula UNION ) czy dwa zestawy wyników w jeden i jednocze7nie usuwa duplikaty. Poni#szy
rysunek ilustruje zastosowanie klauzuli

UNION

. Jak wida , powtarzaj ce si wiersze na szarym tle

zosta)y umieszczone tylko raz w ko@cowym wyniku zapytania z klauzul

UNION

.

W kolejnym przyk)adzie s zwracane dane o imieniu i nazwisku wszystkich klientów i pracowników,
których nazwiska ko@cz si na „ski". Tylko jedna osoba o imieniu i nazwisku Jan Kowalski
wyst puje jednocze7nie w tabeli klientów i pracowników.

SELECT IMIE, NAZWISKO

FROM DB2ADMIN.KLIENCI

WHERE NAZWISKO LIKE '%SKI'

UNION

SELECT IMIE, NAZWISKO

FROM DB2ADMIN. PRACOWNICY

WHERE NAZWISKO LIKE '%SKI';

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

39

Rys.7.2.

Za ka#dym razem zapytania ) cz ce wyniki z klauzul

UNION

wy7wietlaj wyniki posortowane

rosn co. Je#eli chcemy zawrze klauzul ORDER BY, która posortuje nam wynik malej co, musi ona
by umieszczona na ko@cu zapytania.

SELECT IMIE, NAZWISKO

FROM DB2ADMIN.KLIENCI

WHERE NA2WISKO LIKE '%SKI'

UNION

SELECT IMIE, NAZWISKO

FROM DB2ADMIN.PRACOWNICY

WHERE NAZWISKO LIKE '%SKI'

ORDER BY NAZWISKO DESC;

Rys.7.3.

W systemie InterBase powy#sze zapytanie nale#y zmodyfikowa poprzez zast pienie ostatniej
klauzuli

ORDER BY

nast puj c :

ORDER BY 2 DESC;

InterBase nie pozwala w zapytaniach ) cz cych wyniki na specyfikowanie nazwy kolumny w klauzuli

ORDER BY

.

Klauzula

UNION ALL

Ró#nica pomi dzy klauzul

UNION

a

UNION

ALL polega na tym, #e wynik ) czenia zapyta@ klauzul

UNION ALL

zawiera powtarzaj ce si wiersze.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

40

Rys.7.4.

Klauzula

UNION ALL

dziafa szybciej ni#

UNION

. Tak wi c, gdy ) czymy kilka wyników zapytania, i

gdy jeste7my pewni, #e ) czone wyniki nie zawieraj duplikatów, mo#emy u#ywa klauzuli

UNION

ALL

.

Podsumowanie

1. Wyniki zapytania

SELECT

z t sam liczb kolumn b d cych tego samego typu danych mog by

) czone poprzez u#ycie klauzuli

UNION

.

2. Klauzula

UNION

sortuje dane wynikowe i usuwa duplikaty.

3. Klauzula

UNION ALL

dzia)a szybciej ni#

UNION

.

4. U#yj klauzuli

UNION ALL

gdy jeste7 pewien, #e ) czone wyniki nie zawieraj duplikatów.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

41

Rozdzia 8. Podzapytania.

Rozdzia) ten opisuje u#ywanie podzapyta@. Znajduj

si

tutaj informacje, jak konstruowa

podzapytania, jak u#ywa podzapyta@ w klauzuli

WHERE

oraz w klauzuli

HAYING

oraz jak budowa

podzapytania ze s)owami kluczowymi

IN

,

ALL

,

ANY

lub

SOME

.

U5ywanie podzapyta

Przypu7 my, #e musimy znaleO pracowników, którzy otrzymuj wynagrodzenie na kwot wi ksz
ni# wynosi 7rednia. Musimy najpierw sprawdzi , jaka jest 7rednia dla ka#dego pracownika.

SELECT AVG(P.PENSJA)

FROM DB2ADMIN.PRACOWNICY P;

Wynik wynosi: 1530,00

Teraz szukamy pracowników, którzy zarabiaj poni#ej tej 7redniej:

SELECT P.IMIE, P.NAZWISKO, P.DZIAL, P.STANOWISKO

FROM DB2ADMIN.PRACOWNICY P WHERE P.PENSJA > 1530;

Rys.8.1.

Wykonali7my zadanie. ZnaleOli7my pracowników, którzy zarabiaj

powy#ej 7redniej. Ale

dokonali7my tego w dwóch krokach za pomoc dwóch zapyta@.

Teraz otrzymamy ten sam wynik, ale przy u#yciu podzapytania.

SELECT P,IMIE, P.NAZWISKO, P.DZIAL, P.STANOWISKO

FROM DB2ADMIN.PRACOWNICY P

WHERE P.PENSJA > (SELECT AVG(P.PENSJA)

FROM DB2ADMIN.PRACOWNICY P);

Podzapytania z u5yciem s7owa kluczowego IN

S)owo kluczowe

IN

pozwala na zidentyfikowanie wszystkich elementów w zbiorze A które nie

wyst puj w zbiorze B.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

42

Rys.8.2.

Zapytanie wy7wietla list samochodów, których do tej pory nie wypo#yczy) #aden klient. Zapytanie
wybiera te samochody, które nie znajduj si w tabeli WYPORYCZENIA, czyli te, które nie by)y do
tej pory przedmiotem wypo#yczenia.

SELECT S.NR_SAMOCHODO, S.MARKA, S,TYP

FROM D32ADMIN.SAMOCHODY S

WHERE S.NR_SAMOCHODU

NOT IN

(SELECT W.NR_SAMOCHODU

FROM DB2ADMIN.WYPOZYCZENIA W);

Rys.8.3.

Podzapytania z u5yciem s7owa kluczowego ALL

Przyk)adowe podzapytanie ze s)owem

ANY

b dzie wykonane w dwóch krokach. Jako pierwsze jest

wykonywane podzapytanie, które znajduje 7redni pensj w ka#dym dziale. W drugim kroku, ka#da
pensja pracownika porównywana jest z list 7rednich pensji. Wy7wietleni zostan pracownicy, których
pensja jest wy#sza od wszystkich 7rednich pensji obliczonych w podzapytaniu.

Rys.8.4.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

43

Podzapytania z u5yciem s7owa kluczowego ANY lub SOHE

Zapytanie z rysunku 8.5 jest wykonywane w dwóch krokach. Jako pierwsze jest wykonywane
podzapytanie, które znajduje 7redni pensj w ka#dym dziale. W drugim kroku, ka#da pensja
pracownika porównywana jest z list 7rednich pensji. Ostatecznie wy7wietleni zostan wszyscy
pracownicy, których pensja jest wy#sza od najmniejszej 7redniej pensji obliczonej w podzapytaniu.

Rys.8.5.

Podzapytania w klauzuli HAVING

Musimy znaleO dzia)y, w których 7rednia pensja pracowników jest wy#sza od 7redniej pensji w
firmie. Do 7rednich pensji nie b d brani pod uwag kierownicy dzia)ów.

Gdyby7my musieli wykona to zadanie „r cznie", to musieliby7my przej7 przez trzy kroki. W
pierwszym kroku musieliby7my znaleO 7redni pensj w firmie, nie bior c pod uwag kierowników.

SELECT AVG(P.PENSJA)

FROM DB2ADMIN.PRACOWNICY P

WHERE P.STANOWISKO <> 'KIEROWNIK

;

Rys.8.6.

W drugim kroku obliczyliby7my 7rednie pensje pracowników w poszczególnych dzia)ach, nie bior c
przy tym pod uwag kierowników.

SELECT P.DZIAL, AVG(P.PENSJA) AS SREDNIA_PENSJA

FROM DB2ADMIN.PRACOWNICY P

WHERE P.STANOWISKO <> 'KIEROWNIK'

GROUP BY P.DZIAL

ORDER BY SREDNIA_PENSJA;

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

44

Rys.8.7.

Je#eli u#ywasz InterBase, zamie@ ostatni wiersz powy#szego polecenia na:

ORDER BY 2;

W trzecim kroku musieliby7my porówna warto7ci 7rednich pensji poszczególnych dzia)ów ze 7redni
pensj w firmie.

Ostatecznie wykonujemy to zadanie za pomoc pojedynczego zapytania z podzapytaniem w klauzuli

HAVING

.

SELECT P.DZIAL, AVG(P.PENSJA) AS SREDNIA_PENSJA

FROM DB2ADMIN.PRACOWNICY P

WHERE P.STANOWISKO <> 'KIEROWNIK

GROUP BY P.DZIAL

HAVING AVG(P.PENSJA) > (SELECT AVG(P.PENSJA)

FROM DB2ADMIN.PRACOWNICY P

WHERE P.STANOWISKO <> 'KIEROWNIK') ORDER BY SREDNIA_PENSJA;

Rys.8.8.

Podsumowanie

1. Podzapytania musz by otoczone nawiasami.

2. Podzapytania nie mog zawiera klauzuli

UNION

,

UNION

ALL lub

ORDER BY

.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

45

Rozdzia 9. Utrzymywanie danych.

W tym rozdziale nauczymy si tworzy tabele i widoki. Poznamy sk)adni j zyka SQL niezb dn do
ich tworzenia. Nauczymy si równie# wstawia wiersze do tabeli, zmienia dane w tabeli, usuwa
wiersze oraz usuwa tabele.

Tworzenie tabel

Na rysunku 9.1 znajdziesz wype)nion danymi tabel KLIENCIJTEST, na której b dziemy wiczy
zagadnienia poruszane w tym rozdziale.

Rys.9.1.

Nast puj ce wyra#enie

CREATE TABLE

tworzy tabel KLIENCI_TEST.

CREATE TABLE DB2ADMIN.KLIENCI_TEST (

NR_KLIENTA

CHAR(8) NOT NULL,

IMIE

VARCHAR(20) NOT NULL,

NAZWISKO

VARCHAR(20) NOT NULL,

NR_KARTY_KREDYT CHAR(20)

,

ULICA

VARCHAR(24) NOT NULL,

NUMER

CHAR(8) NOT NULL,

MIASTO

VARCHAR(24) NOT NUIi,

KOD

CHAR(6) NOT NULL,

NRJTELEFONU

CHAR (16),

PRIMARY KEY (NR_KLIENTA) ) ;

Definiuj c tabel musimy okre7li jej nazw np. KLIENCI_TEST. Nast pnie okre7li kolumny dla tej
tabeli. Ka#da kolumna musi posiada : unikatow nazw w obr bie tabeli oraz typ danych, jakie b d
przechowywane w kolumnie. Dodatkowo przy definiowaniu kolumn okre7li mo#na, czy dozwolone
jest pozostawienie jej pustej; je#eli nie, dodajemy klauzul

NOT NULL

do definicji kolumny. Np.

kolumna NR_KARTY_ KREDYT nie jest wymagana - podczas wstawiania nowego wiersza - pole w
tej kolumnie mo#emy pozostawi puste. Mo#e dzi7 (prawie) ka#dy posiada kart p)atnicz , ale nie
ka#dy posiada kart kredytow . Dodatkowo nie ka#dy klient ma #yczenie p)aci kart kredytow .

S)owo kluczowe

PRIMARY KEY

okre7la klucz g)ówny dla tabeli. Klucz g)ówny oraz klucz obcy

zostanie opisany w nast pnym rozdziale.

Tabel mo#emy przebudowa , dodaj c now kolumn lub j usuwaj c, mo#emy zmieni typ danych
kolumny, jak równie# zmieni inne cechy tabeli oraz kolumn w niej zawartych. Do zmiany struktury
tabeli s)u#y wyra#enie SQL

ALTER TABLE

.

Kolejne polecenie

ALTER TABLE

doda dwie kolumny: FIRMA oraz NIP do tabeli KLIENCI_TEST.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

46

ALTER TABLE DB2ADMIN.KLIENCI_TEST

ADD FIRMA VARCHAR(40)

ADD NIP CHAR(12) ;

W InterBase kolejne wiersze ze s)owem

ADD

w powy#szym poleceniu nale#y oddzieli

przecinkiem. Aby zapobiec b) dom, musimy wykona polecenie

ALTER TABLE

. Nast pne przyk)ady

b d operowa równie# na tych kolumnach.

Tworzenie widoków

Dane zawarte w widoku nie s jej fizycznymi danymi a danymi nale# cymi do tabeli lub kilku tabel z
których widok czerpie dane. Widoki przede wszystkim s tworzone w celu ograniczenia dost pu do
danych w tabelach bazy danych. Do tworzenia widoków s)u#y polecenie

CREATE VIEW

.

Poni#szy przyk)ad tworzy widok zawieraj cy dane klientów, którzy posiadaj firm .

CREATE VIEW DB2ADMIN.KLIENCI_FIRMY AS

SELECT K.IMIE, K.NAZWISKO, K.FIRMA, K.NIP, K.MIASTO

FROM DB2ADMIN.KLIENCI K

WHERE K.FIRMA IS NOT NULL;

Teraz mo#emy wybiera dane z widoku tak, jak do tej pory wybierali7my dane z tabeli.

SELECT *

FROM DB2ADMIN.KLIENCI_FIRMY;

Rys.9.2.

Nast pny przyk)ad tworzy widok, który ogranicza dane pracowników do wszystkich danych oprócz
informacji na temat dodatku i pensji.

CREATE VIEW DB2ADMIN.V__PRACOWNICY AS

SELECT P.NR_PRACOWNIKA, P.IMIE, P.NAZWISKO,

P.DATA_ZATR, P.DZIAL, P.STANOWISKO,

P.NR_MIEJSCA, P.NRJTELEFONU

FROM DB2ADMIN.PRACOWNICY P;

Dodawanie i usuwanie rekordów

Aby doda jeden lub wi cej rekordów do istniej cej tabeli, nale#y pos)u#y si wyra#eniem SQL

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

47

INSERT

. Aby doda rekord do tabeli KLIENCI_TEST zdefiniowanej w sekcji „Tworzenie tabel",

napisz i wykonaj poni#sze wyra#enie SQL. Upewnij si , #e tabela KLIENCIJTEST posiada kolumny
FIRMA oraz NIP, które dodali7my do struktury tabeli poleceniem

ALTER TABLE

.

INSERT INTO DB2ADMIN.KLIENCI_TEST

VALUES ( '00000031', 'MARIUSZ', 'DOLATA', NULL, 'KOCHANOWSKIEGO

, '3',

'WROC'AW', '37-300', '167-763-234', 'KWIATY', '2224-444-224');

Dodaj jeszcze kilka rekordów:

INSERT INTO DB2ADMIN.KLIENCI_TEST

YALUES ('00000032', 'TOMASZ', 'DOMAGA'A

, 'HX 145345678', 'RÓ"ANA', '4/9',

'WARSZAWA

,

'01-900', '46-744-431', NULL, NULL);

INSERT INTO DB2ADMIN.KLIENCI_TEST

VALUES ('00000033', 'PAWE'', 'MALCZYKOWSKI' , 'HF 14565661', 'S'ONECZNA',
'9', 'WARSZAWA

1

, '01-900', '16-742-114', NULL, NULL);

INSERT INTO DB2ADMIN.KLIENCI_TEST

VALUES ('00000034', 'PIOTR', 'MUSZYOSKI' , 'DD 72325221',

'SZYBOWCOWA', '22A

,

'WARSZAWA', '01-200', '44-342-116',

'WULKANIZACJA', '4356-098-876');

INSERT INTO DB2ADMIN.KLIENCI_TEST

VALUES ('00000035', 'ANNA', 'MIKOLAJCZYK

,NULL , 'JA'OWCOWA', '24',

'WROC'AW', '37-200', '144-188-415', 'FRYZJERSTWO', '2343-112-345');

Powy#sze wyra#enia doda)y nowe wiersze do tabeli KLIENCI_TEST. Ka#de z tych wyra#e@ wype)nia
warto7ciami wszystkie kolumny tabeli. Aby wstawi dane tylko do wybranych kolumn, nale#y je
okre7li , a nast pnie poda warto7ci:

INSEKT INTO DB2ADMIN. KLIENCI_TEST {NR_KLIENTA, IMIE, NAZWISKO, ULICA, NUMER,
MIASTO, KOD)

VALUES ('00000036

,

'MAGDALENA', 'BRZOZA' , 'ALEJE LIPOWE', '4/3', _

'QWIDNICA, '58-100');

Powy#sze polecenie

INSEKT

doda)o nowy wiersz do tabeli KLIENCI_TEST. Wype)nione zosta)y

wszystkie kolumny oprócz kolumny NR_KARTY_KREDYT i kolumny TELEFON. Warto7ci dla
tych kolumn nie s wymagane wi c wstawienie nowego wiersza przebieg)o bez b) du.

Istnieje mo#liwo7 dodania wielu wierszy za jednym razem. Wstawienie kilku rekordów w jednym
poleceniu polega na u#yciu klauzuli

SELECT

. Oto przyk)ad:

INSERT INTO DB2ADMIN.KLIENCI_TEST (NR_KLIENTA, IMIE, NAZWISKO, ULICA, NUMER,
MIASTO, KOD)

SELECT NR_KLIENTA, IMIE, NAZWISKO, ULICA, NUMER, MIASTO, KOD

FROM DB2ADMIN.KLIENCI

WHERE FIRMA IS NULL;

Aby usun rekordy z tabeli, u#yj polecenia

DELETE

FROM np.

DELETE FROM DB2ADMIN.KLIENCI_TEST WHERE FIRMA IS NOT NULL;

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

48

Polecenie

DELETE FROM

bez klauzuli

WHERE

usuwa wszystkie rekordy z tabeli, np.

DELETE FROM DB2ADMIN.KLIENCI_TEST;

Zmienianie danych w tabeli

Polecenie

UPDATE

zmienia warto7ci we wskazanych kolumnach tabeli dla jednego lub wi kszej ilo7ci

wierszy. Poni#sze polecenie

UPDATE

zwi ksza kwot

dodatku pracownika zatrudnionego na

stanowisku sprzedawcy o 50 z).

UPDATE DB2ADMIN.PRACOWNICY

SET DODATEK = DODATEK + 50

WHERE STANOWISKO = 'SPRZEDAWCA';

Teraz mo#emy sprawdzi , czy warto7ci dodatku dla sprzedawców zosta$y zmienione:

SELECT *

FROM DB2ADMIN.PRACOWNICY

WHERE STANOWISKO = 'SPRZEDAWCA

;

Je#eli zmieniamy warto7ci wi cej ni# jednej kolumny, musz one by oddzielone przecinkiem.
Poni#sze polecenie zwi ksza dodatek dla kierowników o 30 z) oraz zwi ksza pensje o 10%.

UPDATE DB2ADMIN.PRACOWNICY

SET DODATEK = DODATEK + 30,

PENSJA = PENSJA + (PENSJA *10) /100

WHERE STANOWISKO = 'KIEROWNIK';

Usuwanie tabel

Tabela KLIENCI_TEST nie b dzie nam ju# wi cej potrzebna. Aby usun tabel , musimy u#y
polecenia

DROP TABLE

:

DROP TABLE KLIENCI TEST;

Polecenie usuwaj ce tabel usuwa jednocze7nie wszystkie dane zawarte w tabeli oraz usuwa
wszystkie widoki które czerpi dane z usuwanej tabeli.

Podsumowanie

1. Usuni cie tabeli powoduje usuni cie danych i widoków zwi zanych z usuwan tabel .

2. Mo#emy okre7li wiersze, które maj zosta usuni te lub zmienione poprzez zamieszczenie

odpowiedniego warunku w klauzuli

WHERE

.

3. Opuszczenie klauzuli

WHERE

w pleceniach

UPDATE

lub

DELETE

powoduje, #e wszystkie wiersze

zostan zmienione lub usuni te.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

49

Rozdzia 10. Ograniczenia i integralno5 referencyjna

W tym rozdziale dowiemy si istotnych informacji o ograniczeniach, integralno7ci danych tabeli oraz
o integralno7ci referencyjnej. Wszystkie te zagadnienia sk)adaj si na bezpiecze@stwo i jako7
danych gromadzonych w bazie danych.

Ograniczenia

Mo#esz zdefiniowa ograniczenie sprawdzaj ce poprawno7 wpisywanych danych do tabeli poprzez
okre7lenie warunku sprawdzaj cego

CHECK

.

Poni#szy przyk)ad ilustruje wyra#enie zmieniaj ce struktur tabeli PRACOWNICY poprzez dodanie
ograniczenia zapobiegaj cego wpisaniu kwoty dodatku wi kszej od kwoty pensji.

ALTER TABLE DB2ADMIN.PRACOWNICY ADD CHECK (PENSJA > DODATEK);

Je#eli wpiszesz teraz wyra#enie dodaj ce wiersz do tabeli pracownicy, który b dzie zawiera)
w kolumnie DODATEK warto7 wi ksz ni# w kolumnie PENSJA np.

INSERT INTO DB2ADMIN.PRACOWNICY

VALUES ('0011', 'JOLANTA', 'NOWAKOWSKA

1

, '1999-05-01', 'OBSLUGA

KLIENTA

, 'SPRZEDAWCA', 1100, 1200, '000001' , '433-451-154' ) ;

Baza DB2 wygeneruje komunikat o b) dzie, który mówi o naruszeniu ograniczenia sprawdzaj cego

CHECK

:

DB21034E The command was processed as an SQL statement

because it was not a valid Comnand LinU Processor command.

During SQL processing it returned:

SQL0545N The reWuested operation is not allowed because a rów

does not satisfy the check constraint

"DB2ADMIN.PRACOWNICY.SQLQ10121215529810". SQLSTATE=23513

Integralno- danych - klucz g7ówny

Ka#da tabela bazy danych powinna zawiera klucz g)ówny. Klucz g)ówny tabeli to kolumna lub grupa
kolumn, która w sposób jednoznaczny identyfikuje wiersz w tabeli. Na przyk)ad, dla tabeli
zawieraj cej dane o pracownikach kluczem g)ównym mo#e by , kolumna o nazwie
NR_PRACOWNIKA, która jednoznacznie okre7la danego pracownika. Kluczem g)ównym mo#e by
numer telefonu w tabeli przechowuj cej dane abonentów operatora telefonicznego. Jak ju#
wspomnia)em, klucz g)ówny mo#e sk)ada si z wielu kolumn. Przyk)adem takiego klucza g)ównego
mo#e by kolumna NUMER oraz ROK w tabeli przechowuj cej dane o wystawionych fakturach,
gdzie kolumna NUMER okre7la numer faktury a kolumna ROK okre7la rok wystawienia. Warto7ci z
tych kolumn wzi te razem s ró#ne w ka#dym wierszu.

Jak ju# wspomnia)em, dla tabeli PRACOWNICY kluczem g)ównym mo#e by

kolumna

NR_PRACOWN1KA. Ustalenie klucza g)ównego (

PRIMARY KEY

) podczas tworzenia tabeli:

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

50

CREATE TABLE DB2ADMIN. PRACOWNICY (

NR_PRACOWNIKA CHAR(4)NOT

NULL,

IMIE

VARCHAR(20) NOT NULL,

NAZWISKO

VARCHAR(20) NOT NULL,

DATA_ZATR

DATE NOT NULL,

DZIAL

VARCHAR(20) NOT NULL,

STANOWISKO

VARCHAR(20) NOT NULL,

PENSJA DECIMAL(8,2),

DODATEK DECIMAL(8,2)

NR_MIEJSCA

CHAR(6) NOT NULL,

NRJTELEFONU CHAR(16)

PRIMARY KEY (NR_PRACOWNIKA));

zapobiegnie wstawieniu dwóch identycznych wierszy. W przypadku gdy dodamy drugi wiersz z
danymi pracownika o numerze ju# istniej cym w tabeli, DB2 wy7wietli b) d z informacj o
naruszeniu integralno7ci danych.

DB21034E The command was processed as an SQL statement because it was not a
valid Command LinU

Processor command. During SQL processing it

returned:SQL0803N One or morU

values in the INSERT statement, UPDATE

statement, or foreign key update caused by a DELETE statement arU not valici
because they would produce duplicate rows for a table with a primary key,
uniWue constraint,or uniWue index. SQLSTATE=23505

Integralno- refereicyjna - klucz obcy

Klucz obcy to jedna lub wi cej kolumn tabeli odwo)uj cych si do kolumny lub kolumn klucza
g)ównego w innej tabeli. Klucze obce s

wykorzystywane do utrzymywania integralno7ci

referencyjnej w bazie danych. Tworz c klucz obcy, definiujemy zwi zek mi dzy tabel klucza
g)ównego i tabel klucza obcego. Zwi zek taki powstaje podczas z) czania kolumn takich samych
typów danych z ka#dej tabeli. Z) czanie tabel przez odpowiednie kolumny chroni dane z tabeli klucza
obcego przed „osieroceniem", jakie mog)oby nast pi w wyniku usuni cia odpowiadaj cych im
danych z tabeli klucza g)ównego. Definiowanie kluczy obcych jest po prostu sposobem ) czenia
danych przechowywanych w ró#nych tabelach bazy danych.

Na przyk)ad, w tabeli PRACOWNICY widocznej na poni#szym zdj ciu kluczem obcym jest kolumna
NR_MIEJSCA. Ta kolumna czerpie warto7ci z tabeli MIEJSCA z kolumny NR_MIEJSCA (klucz
g)ówny w tabeli MIEJSCA). Gdy odczytamy numer miejsca z tabeli PRACOWNICY, mo#emy si
odwo)a do tabeli MIEJSCA i odczyta z niej pe)ny adres miejsca pracy pracownika. Rysunek 10.1
ilustruje zwi zek tabeli klucza obcego z tabel klucza g)ównego.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

51

Rys.10.1.

Rysunek 10.1 mo#na odczyta nast puj co: tabela klucza obcego PRACOWNICY jest z) czona z
tabel klucza g)ównego MIEJSCA poprzez kolumny NR_M1EJSCA. Zwi zek klucza obcego chroni
wiersze z tabeli PRACOWNICY przed osieroceniem na wypadek usuni cia jakiegokolwiek wiersza z
tabeli MIEJSCA.

Aby zapewni tak ochron , musimy zdefiniowa klucze obce we wszystkich tabelach, które
odwo)uj si do innych tabel. Taki zwi zek wyst puje m.in. w naszych przyk)adowych tabelach
PRACOWNICY oraz MIEJSCA.

ALTER TABLE DB2ADMIN.PRACOWNICY

ADD POREIGN KEY (NR_MIEJSCA)

REFERENCES MIEJSCA (NR MIEJSCA) ON DELETE RESTRICT;

Polecenie to ustanawia klucz obcy w tabeli PRACOWNICY w kolumnie NR_ MIEJSCA. Czytaj c
dalej to polecenie dowiadujemy si #e kolumna ta odwo)uje si do kolumny NR_MIEJSCA w tabeli
MIEJSCA. S)owa kluczowe

ON DELETE RESTRICT

mówi , #e niemo#liwe jest usuni cie wiersza z

tabeli MIEJSCA, gdy istnieje wiersz do niego si odwo)uj cy w tabeli PRACOWNICY. Dla systemu
InterBase zamiast s)owa

RESTRICT

jest honorowane s)owo

NO ACTION

.

W tabeli 10.1 znajduj si opisy wszystkich mo#liwych akcji, jakie zostan zainicjowane w chwili
usuwania wiersza w tabeli zale#nej:

Tabela 10.1.

Akcja

Opis

RESTRIC

Ograniczone usuwanie, które mówi, #e dopóki istniej w tabeli PRACOWNICY wiersze
odwo)uj ce do usuwanego adresu

lub dla InterBase

NO ACTION

nie mo#na go usun . Aby usun dane o adresie z tabeli MIEJSCA, najpierw nale#y
usun wszystkich pracowników pracuj cych w miejscu o którym informacje chcemy
usun

CASCADE

kaskadowe usuwanie, mówi, #e gdy usuwamy wiersze z tabeli MIEJSCA, to s

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

52

jednocze7nie usuwane wszystkie wiersze z danymi o pracownikach, którzy pracuj w
usuwanym miejscu

SET NULL

Wstaw warto7 NULL, mówi, #e je7li usuwamy dane o miejscach, to w tabeli
PRACOWNICY w kolumnie NR_MIEJSCA zostanie wstawiona warto7 NULL

Podsumowanie

1. Mo#esz zdefiniowa ograniczenie sprawdzaj'ce poprawno7 wpisywanych danych do tabeli

poprzez okre7lenie warunku sprawdzaj cego

CHECK

.

2. Integralno7 danych w tabeli zachowuje si dzi ki kluczom g)ównym.

3. Klucze obce s)u# do utrzymywania integralno7ci referencyjnej.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

53

Rozdzia 11.Instalacja DB2.

Rozdzia) ten opisuje instalacj DB2 w systemie Windows 98 oraz Windows NT. Zawiera równie#
istotne informacje o Oródle wersji instalacyjnej DB2.

Je#eli nie posiadamy wersji instalacyjnej DB2, mo#emy j skopiowa ze strony inter-netowej IBM
http://www-4.ibm.com/software/data/db2/udb/downloads.html. Informacje na tej stronie poprowadz
przez proces kopiowania DB2. Aby skopiowa DB2 Personal Edition wersj 7.1, musimy si najpierw
zarejestrowa . Po za)ogowaniu si jako zarejestrowany u#ytkownik, b dziemy musieli jeszcze
wype)ni ankiet . Wersja DB2 Personal Edition jest darmowa (z licencj na jednego u#ytkownika).
Mo#emy jej u#ywa do celów edukacyjnych. Nie mo#emy czerpa korzy7ci maj tkowych z pracy z
systemem DB2 Personal Edition.

Musimy skopiowa nast puj ce pliki:

-

winpecmn.zip o wielko7ci 142 572 kB

-

winpeen.zip o wielko7ci 48 467 kB

Niestety do instalacji s potrzebne oba.

:

Do rozpakowania powy#szych zbiorów musimy si zaopatrzy w program WinZIP, który mo#na
znaleO w Internecie na stronie http://www.winzip.com.

Nast pnym krokiem b dzie za)o#enie katalogu np. na dysku D:\DB2INST, do którego rozpakujemy
zbiory instalacyjne skopiowane z Internetu. Do tego samego katalogu nale#y rozpakowa pliki
winpecmn.zip oraz winpeen.zip.

Instalacja dla systemu Windows i Windows NT

Po pomy7lnym rozpakowaniu zbiorów musimy uruchomi plik setup.exe znajduj cy si w katalogu
D:\DB2INST (lub w innym, do którego rozpakowane zosta)y skomprymowane pliki). Pojawi si ekran
powitalny z pewnymi opcjami. Wybieramy opcj Install.

Rys.11.1.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

54

Je#eli w systemie zainstalowana jest wcze7niejsza wersja DB2. program instalacyjny nas o tym
powiadomi i zaproponuje usuni cie jej z systemu przed kontynuacj instalacji.

Rys.11.2.

Na rysunku 11.2 pokazany jest wybór sk)adników instalacji. Pe)na instalacja polega na wybraniu
wszystkich trzech sk)adników. Dla potrzeb wicze@ wystarczy pierwsza pozycja DB2 Personal
Edition.

Po naci7ni ciu klawisza Next pojawi si okno Selecl Installation Type. Na tym etapie mo#na wybra
instalacj Typical. Je#eli wybierzesz typ instalacji Gustom, to pojawi si okno Select Components, w
którym mo#esz wybra poszczególne sk)adniki oprogramowania. Je#eli wybierzesz typ instalacji
Typical, to w nast pnym oknie Choose Destination Location mo#emy zmieni docelowy katalog, w
którym zainstalowany zostanie system DB2.

Naciskamy przycisk Next. Je#eli DB2 jest instalowane dla Windows NT, zobaczymy okno dialogowe,
w którym musimy wprowadzi nazw u#ytkownika i has)o dla narz dzia Control Center Server.
Proponuj

u#y

domy7lnej nazwy u#ytkownika db2admin. Has)o prosz

ustawi

równie# na

db2admin. Wszystko w celu sprawnego wykonywania skryptów przedstawionych w niniejszych

wiczeniach. Inna nazwa u#ytkownika i has)a wymaga)aby naniesienia zmian w skryptach.

Zaznaczenie opcji Use the same values for the remaining DB2 Username and Password settings u do)u
okna spowoduje nadanie tej samej nazwy u#ytkownika i has)a dla pozosta)ych elementów DB2
Administration Server, oraz dla domy7lnej instancji DB2.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

55

Rys.11.3.

Ostatnie okno Start Copying Files informuje o wybranych parametrach instalacji. Naciskamy przycisk
Next. Na tym etapie instalator DB2 kopiuje potrzebne zbiory na dysk twardy.

W trakcie instalacji mo#e si okaza , #e posiadamy star wersj sterowników ODBC. Zostanie to
zasygnalizowane odpowiednim komunikatem.

Po zako@czeniu pracy instalatora musimy ponownie uruchomi komputer. Pomy7lne zako@czenie
instalacji zostanie zasygnalizowane oknem First Steps, które si pojawi po ponownym uruchomieniu
komputera.

Na koniec mo#emy sprawdzi w panelu sterowania w us)ugach, czy system DB2 zosta) poprawnie
uruchomiony.

Rys.11.4.

W Windows NT nie uruchomienie si us)ug DB2 mo#e by spowodowane star wersj Service Packa.
W takim przypadku nale#y ponownie zainstalowa mo#liwie najnowszego Service Packa w wersji
j zykowej odpowiadaj cej naszemu systemowi.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

56

Podsumowanie

1. Instalacja DB2 w systemie Windows 95 i 98 nie wymaga #adnych dodatkowych operacji.

2. Mo#na u#y narz dzia Us)ugi z Panelu sterowania w Windows NT w celu podgl dni cia czy

us)uga DB2 zosta)a poprawnie uruchomiona.

3. W Windows NT problem z uruchomieniem us)ugi DB2 mo#e by spowodowany star wersj

Service Pack.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

57

Rozdzia 12. Narz9dzia DB2.

W tym rozdziale poznamy takie narz9dzia jak: Control Center, Command Center, Command
Lin) Procesor oraz Information Center.

Control Center jest aplikacj

pozwalaj c

na zarz dzanie obiektami bazy danych. Narz dzie

Command Center b dziemy wykorzystywa do przygotowywania zapyta@ SQL i ich wykonywania.
To narz dzie pozwala równie# na wykonywanie skryptów SQL jak równie# na przegl danie wyników
wykonania zapytania. Narz dzie Command Lin Procesor (CLP) s)u#y do wykonywania polece@
systemowych DB2. Information Center jest systemem pomocy z bardzo wygodnym interfejsem.

Control Center

Control Center jest aplikacj , która pozwala na przegl danie, dodawanie, usuwanie i zmienianie
obiektów baz danych zdefiniowanych w DB2. Tymi obiektami s m.in. tabele i widoki. Dzi ki temu
narz dziu mo#emy zbudowa ca) baz danych, nie u#ywaj c j zyka SQL. W li7cie tabel, oprócz tabel
bazy danych WYPAUT, znajduj

si równie# tabele systemowe, z których mo#na wydoby

informacje na temat struktury bazy danych. Tabela SY-SIBM.SYSTABLES zawiera wszystkie tabele
zdefiniowane w bazie danych. Tabela SY-SIBM.SYSCOLUMNS zawiera wszystkie informacje o
kolumnach zdefiniowanych we wszystkich tabelach bazy danych. Tabela SYSIBM.SYSYIEWS
zawiera informacje o widokach zdefiniowanych w bazie danych. Panel po lewej stronie okna zawiera
informacje o systemie. Ikona Systems wskazuje na nazw komputera (WROR-JAKUBOAR).

Ikona Instances zawiera instancje DB2 zainstalowane w systemie. Mo#na definiowa wiele instancji
np. w celu oddzielenia bazy testowej od produkcyjnej. Nast pna ikona -Databses zawiera bazy danych
(w tym przypadku jedna - WYPAUT). Baza WYPAUT z kolei skupia wszystkie obiekty typu tabele,
widoki, indeksy, itd.

Rys.12.1.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

58

Command Center

Aplikacja Command Center b dzie najcz 7ciej wykorzystywanym narz dziem przy studiowaniu
niniejszych wicze@. Na poni#szym zdj ciu aplikacji Command Center widzimy zak)adki lnteractive,
Script, Ouery Results oraz Access Plan, których przeznaczenie zostanie opisane w nast pnych
sekcjach.

Rys.12.2.

Przygotowywanie zapyta SQL i ich wykonywanie

Podczas budowy zapyta@ przy bie# cej pracy z baz danych b dziemy korzysta z zak)adki
lnteractive. Aby wykona zapytanie, musimy si upewni , #e jeste7my pod) czeni do bazy danych, na
której chcemy pracowa . S dwa sposoby na pod) czenie si do bazy danych. Jeden z nich to wpisanie
polecenia SQL:

CONNECT TO WYPAUT USER db2admin USING db2admin;

w oknie Command na zak)adce lnteractive. Po naci7ni ciu kombinacji klawiszy Ctrl+Enter powy#sze
polecenie zostanie wykonane i zostaniemy pod) czeni do bazy danych. Zostanie to zakomunikowane
w oknie poni#ej okna Command nast puj cym komunikatem:

-------------------- Command Entered --------------------

CONNECT TO WYPAUT USER db2admin USING ********

---------------------------------------------

Database Connection Information

Database server = DB2/NT 7.1.0

SQL authorization ID = DB2ADMIN

Local database alias = WYPAUT

Oprócz tego komunikatu, w polu Database connection zobaczymy wpis informuj cy o aktualnym
po) czeniu. Mo#na to zobaczy na zdj ciu (JAKUB - DB2 - WYPAUT).

Drugi sposób pod) czenia si do bazy danych polega na wybraniu z okna Select Database (rysunek
12.3) konkretnej bazy danych. Okno Select Database wywo)uje si przez naci7ni cie myszk klawisza
z trzema kropkami znajduj cego si po prawej stronie pola Database connection.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

59

Rys.12.3.

Teraz gdy jeste7my pod) czeni do bazy WYPAUT, mo#emy wydawa inne polecenia lub zapytania
SQL w oknie Command.

Wykonywanie skryptów SQL

Przed tym, jak zaczniemy pracowa z wiczeniami musimy, po stworzeniu bazy danych, utworzy
tabele i wype)ni je danymi. Mo#emy to wykona poprzez okno Com-mand na zak)adce lnteractive
lub poprzez wykonanie skryptów uprzednio stworzonych. Wpisywanie wszystkich polece@
tworz cych tabele oraz polece@ wstawiaj cych dane jest zbyt czasoch)onne. Polecam wykonanie
skryptów, które zosta)y zamieszczone na serwerze ftp wydawnictwa. Aby wykona skrypt, musimy go
otworzy i uruchomi . Wybieramy w tym celu menu Script j Import... Pojawi si okno widoczne na
rysunku 12.4.

W tym oknie musimy najpierw wybra komputer, na którym znajduj si skrypty poprzez rozwini cie
listy System name i wybranie konkretnego systemu. Nast pnie przechodzimy do katalogu ze
skryptami i pojedynczo je otwieramy.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

60

Rys.12.4.

Zawarto7 skryptu zostanie wy7wietlona w oknie Script na zak)adce Script. Zobacz poni#sze zdj cie
okna Command Center.

Rys.12.5.

Aby wykona skrypt naciskamy kombinacj klawiszy Ctrl+Enter lub wybieramy myszk przycisk
Execute znajduj cy si pod menu g)ównym z lewej strony okna. Zobaczymy seri komunikatów u
do)u okna mówi cym o tym, #e wykonanie poszczególnych polece@ SQL w skrypcie zosta)o
zako@czone pomy7lnie, np.

DB20000I The SQL coinmand completed successfully-

Wy-wietlanie wyników wykonania zapytania

Wyniki wykonania zapyta@ SQL, które zosta)y wprowadzone na zak)adce lnteractive s wy7wietlane
na zak)adce Ouery Results aplikacji Command Center. Wyniki zapyta@ uruchomionych z poziomu
zak)adki Script s z kolei wy7wietlane u do)u w tym samym oknie.

Command lin) Processor

Command Lin Processor pozwala na wykonywanie polece@ systemowych DB2. Do polece@

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

61

systemowych zalicza si równie# polecenie

CREATE DATABASE

tworz ce baz danych. Inne polecenia

s)u# do wy7wietlania parametrów systemu DB2 i ustawianiu tych#e parametrów. Na rysunku 12.6
znajduje si zdj cie okna Command Lin Processor z wydanym poleceniem

LI ST ACTIVE DATABASES

.

Rys.12.6.

Poni#ej znajduj si opisy niektórych polece@ systemowych DB2. Pe)n ich list wraz z opisem
mo#esz znaleO w do) czonym systemie pomocy. Wystarczy wpisa znak zapytania i potwierdzi
klawiszem Enter. Mo#esz równie# uzyska krótk podpowiedz na temat konkretnego polecenia,
poprzedzaj c j znakiem zapytania w Command Lin Processor, np.

db2 ==> ? CONNECT TO

CONNECT TO database-alias - .- ..

[IN {SHARE MOD& l EXCLUSIVE MOD& [ON SINGLE NODE]}]

[USER username [{USING password

[NEW new-password CONFIRM confirm-password] |

CHANGE PASSWORD}]]

CONNECT TO

<nazwa bazy danych> -) czy aplikacj do bazy danych

Przyk)ad:

CONNECT TO WYPAUT USER db2admin USING db2admin

przy) cza aplikacj do bazy danych WYPAUT. Parametry

USER

oraz USING pozwalaj okre7li

u#ytkownika bazy danych oraz has)o.

CREATE DATABASE

<nazwa bazy danych> - tworzy baz danych.

Przyk)ad:

CREATE DATABASE WYPAUT

stworzy baz danych z domy7lnymi warto7ciami parametrów bazy.

DB2START/DB2STOP

- startuje (lub zatrzymuje) mened#era bazy danych.

DROP DATABASE

<nazwa bazy danych> - usuwa baz danych z systemu.

Przyk)ad:

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

62

DROP DATABASE WYPAUT

GET CONNECTION STATE

- wy wietla informacje o stanie po$'czenia z baz danych.

Je#eli jeste7my pod) czeni do bazy WYPAUT poleceniem CONNECT

TO WYPAUT, to wydanie polecenia GET

CONNECTION STATE

spowoduje wy7wietlenie podobnego

komunikatu:

Database Connection State

Connection state = Connectable and Connected

Connection modU

= SHARE

Local database = WYPAUT

alias

Database name = WYPAUT

GET

INSTANCE - wy7wietla informacje o instancji bazy danych zainstalowanej w systemie.

LIST ACTIYE

DATABASES - wy7wietla informacje o aktywnych bazach danych,

przy) czonych do nich aplikacjach i o 7cie#ce dost pu do zbiorów w których przechowywane
s dane z bazy danych.

LIST APPLICATIONS

- wy7wietla informacje o aktywnych aplikacjach pod) czonych do bazy

danych. Wykonanie tej komendy spowoduje wy7wietlenie podobnego komunikatu:

LIST DATABASE

DIRECTORY - wy7wietla informacje o systemowym katalogu DB2, w

którym przechowywane s wszystkie informacje o bazach danych. Na wydruku wida , #e
jedyn baz , jaka zosta)a utworzona do tej pory jest baza WYPAUT. Katalog D:\DB2 to
miejsce, gdzie przechowywany jest systemowy katalog.

System Database Directory

Number of entries in the directory = l

Database l entry:

Database alias = WYPAUT

Database name = WYPAUT

Database drive = D:\DB2

Database release level =9.00

Comment =

Directory entry type = indirect

Catalog node number = O

QUIT

- powoduje zamkni cie sesji z Command Line Processor.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

63

Tworzenie bazy

Polecenie systemowe

CREATE DATABASE

tworzy now baz danych. Dla potrzeb naszych wicze@

musimy tak baz stworzy . Poniewa# polecenie

CREATE DATABASE

nale#y do polece@ systemowych

DB2, musimy je wprowadzi i wykona w aplikacji Command Lin Processor.

Na rysunku 12.7 znajduje si okno aplikacji CLP z wykonanym poleceniem

CREATE DATABASE

WYPAUT. Po pomy7lnym wykonaniu tego polecenia ujrzymy komunikat: The CREATE
DATABASE command completed successfulty. Gdy ju# stworzymy baz WYPAUT, mo#emy
wykonywa dalsze czynno7ci, np. wykona skrypty SQL tworz ce tabele i wype)niaj ce je danymi.

Rys.12.7.

Ustawienia narz)dzi DB2

Do poprawnej pracy w aplikacji Command Center, a w szczególno7ci do wykonywania skryptów
musimy zmieni pewne domy7lne parametry.

Z poziomu aplikacji Control Center lub z np. aplikacji Command Center wybieramy menu Tools |
Tools Settings. Pojawi si okno widoczne na rysunku 12.8.

Rys.12.8.

Na zak)adce General musimy zaznaczy opcj Use statement termination character, która stanowi o
tym, #e znak 7rednika b dzie znakiem oddzielaj cym poszczególne wyra#enia SQL wprowadzane
m.in. w aplikacji Command Center.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

64

Information Center

Information Center jest aplikacj

wspomagaj c

u#ytkownika w wyszukiwaniu pomocnych

informacji. Jest to pewnego rodzaju system pomocy. Jego budowa i organizacja pozwala na szybkie
wyszukanie potrzebnych informacji.

Rys.12.9.

Znajdziemy tutaj pe)ny opis sk)adni j zyka SQL, jak równie# opis polece@ systemowych DB2.
Znajduj si tam równie# odpowiednie ) cza do stron WWW firmy IBM, gdzie mo#na znaleO
dodatkowe informacje. Polecam u#ywanie tej aplikacji za ka#dym razem, gdy istnieje potrzeba
sprawdzenia sk)adni danego polecenia lub np. odczytania informacji o b) dzie.

Podsumowanie

1. Do wykonywania systemowych polece@ DB2 s)u#y aplikacja Command Lin Processor.

2. Wykonywanie pojedynczych polece@ SQL oraz skryptów dokonuje si w aplikacji Command

Center.

3. Aplikacja Information Center pozwala na szybkie wyszukiwanie pomocnych informacji.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

65

Rozdzia 13. InterBase.

Serwer SQL InterBase firmy Inprise znajduje si

na stronie internetowej firmy BSC:

http://www.borland.com.pl. Jest to oczywi7cie wersja darmowa. Do pracy z wiczeniami potrzebny
nam jest jeden plik: ib_server_6_0_1.zip, który jest wersj Server i Client InterBase dla Windows.
Plik zajmuje 5,36 MB. Przy modemie pozwalaj cym na pr dko7 przesy)u 33,6 kb/s, transmisja
powinna trwa 30 minut. Wi c koszt skopiowania z Internetu InterBase jest niewielki. Jak si mo#na
póOniej zorientowa , mo#liwo7ci, jakie oferuje InterBase s naprawd du#e.

Instalacja InterBase 6.01

Po rozpakowaniu pliku ib_server_6_0_1.zip, utworzony zostanie katalog: ib_server_6_0_1. W tym
katalogu znajduje si jeszcze katalog - server, w którym znajduje si program instalacyjny setup.exe.
Po uruchomieniu go pojawi si ekran powitalny, z którego przejdziemy do nast pnego panelu
klawiszem Next. Panel, który teraz widzimy Important installation Information zawiera bardzo wa#ne
informacje o instalacji oraz informacje o tym, jak utworzy baz danych. Je#eli instalujemy InterBase
w 7rodowisku Windows NT musimy si upewni , #e system zosta) zaktualizowany przez Service Pack
5, odpowiedni w wersji j zykowej do posiadanego systemu.

PrzejdOmy do nast pnego panelu instalacyjnego przyciskiem Next. Pojawi si teraz tekst umowy
licencyjnej, który nale#y zaakceptowa , aby móc kontynuowa instalacj . Naciskamy przycisk Yes.
Pojawi si okno, które pozwala wybra komponenty InterBase'a. Okno to widoczne jest na poni#szym
zdj ciu. Prosz wybra wszystkie komponenty i ewentualnie zmieni katalog docelowy, w którym
zainstalowany zostanie system InterBase. Po sko@czeniu naciskamy przycisk Install.

Rys.13.1.

Nast puje kopiowanie plików na dysk twardy, a po ich skopiowaniu pojawi si jeszcze okno z
informacj , #e proces instalacji zosta) zako@czony. Naciskamy przycisk Finish.

Narz)dzie IBConsole

IBConsole jest odpowiednikiem narz dzia DB2 Control Center. Tutaj równie# mamy mo#liwo7
podgl dania obiektów bazy danych, jakimi s m.in. tabele i widoki. Przede wszystkim IBConsole jest
narz dziem, w którym mo#emy stworzy baz danych.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

66

Z poziomu IBConsole mo#emy równie# wywo)a narz dzie lnteractive SQL, które pozwala na
wykonywanie polece@ SQL. Okno aplikacji IBConsole znajduje si poni#ej.

Rys.13.2.

Tworzenie bazy danych w InterBase

Je#eli nie jeste7my w aplikacji IBConsole, musimy j uruchomi z Menu Start | Programy | Interbase |
IBConsole. Z menu Server wybieramy pozycj Login. W oknie, które si pojawi wpisujemy
u#ytkownika SYSDBA i has)o masterkey. Po za)ogowaniu si do mened#era bazy InterBase przejdO
do menu Database do pozycji Create Database, Okno, które si pojawi jest widoczne na rysunku 13.3.

Rys.13.3.

Aby stworzy baz danych, wype)nij to okno, jak mo#esz zauwa#y na rysunku 13.3. W ko@cu
naci7nij przycisk OK. Baza zosta)a utworzona. Teraz mo#emy przej7 do wykonywania skryptów,
które utworz tabele w bazie danych i wype)ni je danymi. Opis wykonywania skryptów znajduje si
w nast pnej sekcji.

Narz)dzie InterBase Manager

InterBase Manager mo#na wywo)a z menu Start | Programy l InterBase InterBase Server Manager.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

67

Pozwala on m.in. na ustalenie czy serwer InterBase ma by wywo)ywany automatycznie przy starcie
systemu operacyjnego.

Rys.13.4.

Narz)dzie Interactiue SQ1

Narz dzie lnteractive SQL pozwala na wprowadzanie polece@ SQL i ich wykonywania na bazie
danych. Wywo)uje sieje z poziomu aplikacji IBConsole z menu Tools | lnteractive SQL Wykonywanie
wprowadzonych polece@ SQL dokonuje si przez naci7ni cie kombinacji klawiszy Ctrl+E (Execute).

Rys.13.5.

Czasami gdy b dziemy wychodzi z Interactive SQL, b dziemy pytani, czy zatwierdzi transakcj .
Transakcj jest ka#da operacja na danych w bazie danych. Transakcja musi si wykona w ca)o7ci lub
zosta wycofana.

Oto okno dialogowe z pytaniem, czy zatwierdzi transakcj .

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

68

Rys.13.6.

Wszystkie polecenia SQL zawarte w tych wiczeniach wymagaj , aby ich dzia)anie by)o zatwierdzane
(przycisk Yes w okienku na rysunku 13.6).

Aplikacja Interactive SQL umo#liwia równie# wykonywanie skryptów SQL. Wykonywanie skryptów
SQL zosta)o opisane w kolejnej sekcji.

Wykonywanie skryptów

Aby wykona skrypty tworz ce tabele i wype)niaj ce je danymi, musimy przej7 do menu Query w
lnteractive SQL i wybra pozycj Load Script. Okno, które si pojawi pozwala na wybranie pliku
skryptu.

Na rysunku 13.7 znajdziesz okno aplikacji Interactive SQL z za)adowanym skryptem, który tworzy i
wype)nia danymi tabel KLIENCI.

Rys.13.7.

Po naci7ni ciu kombinacji klawiszy Ctrl+E skrypt zostanie wykonany i utworzona zostanie tabela
KLIENCI. Pozosta)e skrypty równie# musz zosta wykonane do utworzenia ca)ej struktury bazy
danych. Skrypt zostanie wykonany wtedy, gdy jeste7my pod) czeni do bazy WYPAUT. Na zdj ciu
powy#ej w pasku stanu na samym dole jest wy7wietlona informacja, #e baza, do której jeste7my
aktualnie pod) czeni to WYPAUT.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

69

Podsumowanie

1. InterBase jest równie dobrym systemem bazy danych do studiowania niniejszych wicze@.

2. Wykonywanie pojedynczych polece@ SQL oraz skryptów dokonuje si w aplikacji Interactive

SQL.

3. Aplikacja IBConsole pozwala na szybkie wyszukiwanie pomocnych informacji.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

70

Rozdzia 14. Struktura przyk adowej bazy danych.

Przyk)adowa baza wypo#yczalni samochodów WYPAUT sk)ada si z pi ciu tabel. Przechowuje ona
dane o klientach, pracownikach, samochodach, miejscach, z których samochody mo#na wypo#yczy
oraz dane o wypo#yczeniach.

Ka#de wypo#yczenie jest odnotowywane w tabeli WYPORYCZENIA. ^ ...... <«

Ka#dy: klient, samochód, miejsce wypo#yczenia i oddania, pracownik wypo#yczaj cy i przyjmuj cy
posiada numer, po którym jest identyfikowany w tabeli WYPORYCZENIA. Pojedynczy rekord z
tabeli WYPORYCZENIA opisuje jedno wypo#yczenie samochodu. Tak wi c, gdy odczytujemy ten
rekord, mo#emy odnaleO dane o kliencie, który wypo#yczy) dany samochód, dane o pracowniku
obs)uguj cym klienta oraz o miejscu wypo#yczenia i oddania samochodu.

Opis tabel

Szczegó)owy opis tabel wchodz cych w sk)ad przyk)adowej bazy danych wypo#yczalni
samochodów.

Tabela KLIENCI

Tabela KLIENCI przechowuje dane na temat klientów wypo#yczaj cych samochody. Mi dzy innymi
na podstawie tych danych mo#e zosta wystawiona faktura.

Tabela 14.1.

Tabela SAMOCHODY

Tabela SAMOCHODY zawiera informacje o dost pnych samochodach, które klient mo#e
wypo#yczy .

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

71

Tabela 14.2.

Tabela PRACOWNICY

Tabela PRACOWNICY zawiera dane wszystkich pracowników firmy wypo#yczaj cej samochody.

Tabela 14.3.

Tabela MIEJSCA

W tabeli MIEJSCA znajduj si informacje o miejscach, z których klient wypo#yczy) samochód, oraz
informacje o miejscach oddania.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

72

Tabela 14.4.

Tabela WYPOCYCZENIA

Tabela WYPORYCZENIA jest najbardziej rozbudowana tabela. Znajduj

si

tutaj wszelkie

informacje o wypo#yczonych samochodach, miejscu wypo#yczenia i oddania, klientach, dacie itd.

Tabela 14.5.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

73

Relacje pomi)dzy tabelami

Poni#ej znajduje si diagram zwi zków encji dla naszej przyk)adowej bazy danych wypo#yczalni
samochodów. Diagram przedstawia relacje pomi dzy tabelami.

Z diagramu mo#emy odczyta wszystkie wyst puj ce relacje miedzy tabelami. Jeden KLIENT mo#e
dokona wielu WYPORYCZEf niekoniecznie w tym samym czasie. Jeden SAMOCHÓD mo#e by
WYPORYCZANY wielokrotnie. Jeden PRACOWNIK mo#e obs)u#y wiele WYPORYCZEf.

Samochód mo#e zosta WYPORYCZONY/ODDANY wielokrotnie w ró#nych MIEJSCACH.

Rys.14.1.

Skrypty tworz3ce struktur) bazy WYPAUT

W nast pnych sekcjach znajduj si listingi skryptów tworz cych tabele bazy WYPAUT. Skrypty te
jednocze7nie wype)niaj tabele przyk)adowymi danymi. Poni#sze skrypty zosta)y przygotowane do
wykonania w systemie DB2. Aby wykona je w InterBase musimy:

usun wiersz, który ) czy si z baz danych

CONNECT

TO...;

usun wiersz, który usuwa tabel

DROP TABLE

, poniewa# InterBase przerywa przetwarzanie

skryptu, gdy wyst pi b) d. Taki Wad wyst pi, gdy po raz pierwszy uruchomimy skrypt. Polega on
na usuwaniu tabeli, która jeszcze nie istnieje;

usun kwalifikatory DB2ADMIN przed nazw tabeli w poleceniach

CREATE TABLE

oraz w

poleceniach

INSERT

. Fragment polecenia SQL tworz cego tabel oraz polecenia wstawiaj cego

wiersz w InterBase powinien wygl da tak:

CREATE TABLE KLIENCI ( ...

...INSERT INTO KLIENCI VALUES ( . . .

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

74

Rozdzia 15. Skrypty

Skrypt tworz3cy tabel) KLIENCI i wype7niaj3cy j3 danymi

CONNECT TO WYPAUT USER

DB

2

ADMIN

USING

DB

2

ADMIN

;

DROP TABLE DB2ADMIN.KLIENCI;

CREATE TABLE DB2ADMIN.KLIENCI (

NR_KLIENTA CHAR(8) NOT NULL,

IMIE VARCHAR(20) NOT NULL,

NAZWISKO VARCHAR(20) NOT NULL,

NR_KARTY_KREDYT CHAR(20) ,

FIRMA VARCHAR(40) ,

ULICA VARCHAR(24) NOT NULL,

NUMER CHAR(8)

NOT NULL,

MIASTO VARCHAR(24) NOT NULL,

KOD CHAR(6) NOT NULL,

NIP CHAR(12) ,

NR_TELEFONU CHAR(16),

PRIMARY KEY (NR_KLIENTA));

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000001', 'JAN', 'KOWALSKI', NULL, NULL, 'KOCHANOWSKIEGO', '3',
'WROCLAW', '37-300', NULL, '167-763-234');

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000002', 'TOMASZ', 'ADAMCZAK' , 'HH 12345678', 'KOWALSKI S.C.',
'KWIATOWA', '4/9', 'WARSZAWA', '01-900', '543-123-456', '46-744-431');

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000003', 'PIOTR', 'MALCZYK' , 'HF 12445661', 'ADA S.C.',
'ROZANA', '9', 'WARSZAWA', '01-900', '443-133-251', '16-742-114');

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000004', 'PAWEL', 'FIODOROWICZ' , 'DD 76545321', 'KRAWIECTWO',
'ARMII KRAJOWEJ', '22A', 'WARSZAWA', '01-200', '555-233-256', '44-342-116');

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

75

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000005', 'ANIELA', 'DALGIEWICZ' ,NULL , 'MODNA PANI', 'BOHATEROW
GETTA', '24', 'WROCLAW', '37-200', '456-134-153', '144-188-415');

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000006', 'JOANNA', 'KWIATKOWSKA', NULL, NULL, 'TUWIMA', '2/5',
'SWIDNICA', '58-100', NULL, '963-733-231');

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000007', 'BOZENA', 'MALINOWSKA', NULL, NULL, 'LELEWELA', '34/1',
'SWIDNICA', '58-100', NULL, '965-553-778');

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000008', 'TOMASZ', 'NOWAK', NULL, NULL, 'ZEROMSKIEGO', '5A/8',
'SWIDNICA', '58-100', NULL, '911-135-536');

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000009', 'KRZYSZTOF', 'DOMAGALA', NULL, NULL, 'LESNA', '5',
'SWIDNICA', '58-100', NULL, '922-233-232');

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000010', 'ARKADIUSZ', 'DOCZEKALSKI', NULL, NULL, 'LESNA', '2',
'SWIDNICA', '58-100', NULL, '922-233-267');

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000011', 'ANNA', 'KOWALSKA' ,'KJ 98765412' , 'MODNIARSTWO',
'POWSTANCOW SLASKICH', '4', 'WROCLAW', '37-200', '422-132-354', '444-283-
901');

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000012', 'KRZYSZTOF', 'DOBROWOLSKI' , NULL, 'KAMIENIARSTWO',
'STRZEGOMSKA', '124', 'WROCLAW', '37-400', '433-133-332', '443-285-202');

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000013', 'MARCIN', 'KRZYKALA' , NULL, NULL, 'KONOPNICKIEJ',
'1/4', 'WROCLAW', '37-400', NULL, '442-211-109');

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000014', 'ANETA', 'PAPROCKA' , NULL, NULL, 'TUWIMA', '2',
'WROCLAW', '37-400', NULL, '442-671-899');

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

76

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000015', 'SEBASTIAN', 'KOWNACKI' , NULL, NULL, 'GLOWACKIEGO',
'2/9', 'WROCLAW', '37-400', NULL, '423-681-129');

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000016', 'MICHAL', 'MICHALSKI' , NULL, NULL, 'KWIATOWA', '9/3',
'WROCLAW', '37-500', NULL, '499-621-921');

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000017', 'MICHAL', 'SZYKOWNY' , 'WW 12398765', NULL, 'LESNA',
'3', 'WARSZAWA', '00-100', NULL, '191-221-622');

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000018', 'MARCIN', 'MARCINKOWSKI' , 'WQ 14368781', NULL,
'OKREZNA', '33', 'WARSZAWA', '00-200', NULL, '122-127-647');

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000019', 'RAFAL', 'RAFALSKI' , 'WS 12358672', 'NAPRAWA
SAMOCHODOW', 'PRZEMYSLOWA', '1', 'WARSZAWA', '00-200', '999-765-120', '822-
324-742');

INSERT INTO DB2ADMIN.KLIENCI

VALUES ('00000020', 'ROBERT', 'NOWAK' , 'AS 61333699', 'TAPICERSTWO',
'MOSTOWA', '9B', 'WARSZAWA', '00-100', '987-765-333', '811-311-147');

Skrypt tworz3cy tabel) SAMOCHODY i wype7niaj3cy j3 danymi

CONNECT TO WYPAUT USER db2admin USING db2admin;

DROP TABLE DB2ADMIN.SAMOCHODY;

CREATE TABLE DB2ADMIN.SAMOCHODY (

NR_SAMOCHODU CHAR(6) NOT NULL,

MARKA VARCHAR(20) NOT NULL,

TYP VARCHAR(16) NOT NULL,

ROK_PROD DATE NOT NULL,

KOLOR VARCHAR(16) NOT NULL,

POJ_SILNIKA SMALLINT NOT NULL,

PRZEBIEG INTEGER NOT NULL,

PRIMARY KEY (NR_SAMOCHODU));

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

77

INSERT INTO DB2ADMIN.SAMOCHODY

VALUES ('000001', 'MERCEDES', '190D', '1999-01-01', 'BIALY', 1800, 23000);

INSERT INTO DB2ADMIN.SAMOCHODY

VALUES ('000002', 'MERCEDES', '230D', '1999-01-01', 'NIEBIESKI', 2000, 35000);

INSERT INTO DB2ADMIN.SAMOCHODY

VALUES ('000003', 'FIAT', 'SEICENTO', '2000-01-01', 'CZERWONY', 1100, 13000);

INSERT INTO DB2ADMIN.SAMOCHODY

VALUES ('000004', 'FIAT', 'SEICENTO', '1999-01-01', 'BIALY', 900, 10000);

INSERT INTO DB2ADMIN.SAMOCHODY

VALUES ('000005', 'FIAT', 'TIPO', '1998-01-01', 'BORDOWY', 1400, 43000);

INSERT INTO DB2ADMIN.SAMOCHODY

VALUES ('000006', 'POLONEZ', 'CARO', '1997-01-01', 'ZIELONY', 1600, 55000);

INSERT INTO DB2ADMIN.SAMOCHODY

VALUES ('000007', 'OPEL', 'CORSA', '2000-01-01', 'ZIELONY', 1100, 11000);

INSERT INTO DB2ADMIN.SAMOCHODY

VALUES ('000008', 'OPEL', 'VECTRA', '1999-01-01', 'SZARY', 1800, 36000);

INSERT INTO DB2ADMIN.SAMOCHODY

VALUES ('000009', 'MERCEDES', '190D', '1996-01-01', 'BRAZOWY', 1800, 69000);

INSERT INTO DB2ADMIN.SAMOCHODY

VALUES ('000010', 'FORD', 'ESCORT', '2000-01-01', 'NIEBIESKI', 1600, 8000);

INSERT INTO DB2ADMIN.SAMOCHODY

VALUES ('000011', 'FORD', 'ESCORT', '1999-01-01', 'BIALY', 1600, 23000);

INSERT INTO DB2ADMIN.SAMOCHODY

VALUES ('000012', 'FORD', 'KA', '1998-01-01', 'BORDOWY', 1100, 54000);

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

78

INSERT INTO DB2ADMIN.SAMOCHODY

VALUES ('000013', 'FIAT', 'SEICENTO', '1999-01-01', 'ZLOTY', 1100, 25000);

INSERT INTO DB2ADMIN.SAMOCHODY

VALUES ('000014', 'FIAT', 'SEICENTO', '2000-01-01', 'BIALY', 1100, 18000);

INSERT INTO DB2ADMIN.SAMOCHODY

VALUES ('000015', 'SEAT', 'IBIZA', '1998-01-01', 'ZOLTY', 1800, 63000);

INSERT INTO DB2ADMIN.SAMOCHODY

VALUES ('000016', 'FORD', 'SIERRA', '1995-01-01', 'CZERWONY', 1600, 87000);

INSERT INTO DB2ADMIN.SAMOCHODY

VALUES ('000017', 'OPEL', 'CORSA', '2000-01-01', 'ZIELONY', 1400, 9000);

INSERT INTO DB2ADMIN.SAMOCHODY

VALUES ('000018', 'FORD', 'KA', '1999-01-01', 'ZOLTY', 1400, 20000

Skrypt tworz3cy tabel) PRACOWNICY i wype7niaj3cy j3 danymi

CONNECT TO WYPAUT USER db2admin USING db2admin;

DROP TABLE DB2ADMIN.PRACOWNICY;

CREATE TABLE DB2ADMIN.PRACOWNICY (

NR_PRACOWNIKA CHAR(4) NOT NULL,

IMIE VARCHAR(20) NOT NULL,

NAZWISKO VARCHAR(20) NOT NULL,

DATA_ZATR DATE NOT NULL,

DZIAL VARCHAR(20) NOT NULL,

STANOWISKO VARCHAR(20) NOT NULL,

PENSJA DECIMAL(8,2) ,

DODATEK DECIMAL(8,2) ,

NR_MIEJSCA CHAR(6) NOT NULL,

NR_TELEFONU CHAR(16),

PRIMARY KEY (NR_PRACOWNIKA));

INSERT INTO DB2ADMIN.PRACOWNICY

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

79

VALUES ('0001', 'JAN', 'KOWALSKI', '1997-02-01', 'OBSLUGA KLIENTA',
'SPRZEDAWCA', 1100, 123, '000001', '987-231-123');

INSERT INTO DB2ADMIN.PRACOWNICY

VALUES ('0002', 'ANNA', 'KAMINSKA', '1997-01-01', 'OBSLUGA KLIENTA',
'SPRZEDAWCA', 1200, 115, '000002', '987-231-124');

INSERT INTO DB2ADMIN.PRACOWNICY

VALUES ('0003', 'KRZYSZTOF', 'ADAMSKI', '1997-05-01', 'OBSLUGA KLIENTA',
'KIEROWNIK', 2000, NULL, '000001', '987-231-125');

INSERT INTO DB2ADMIN.PRACOWNICY

VALUES ('0004', 'PIOTR', 'MICHALSKI', '1998-06-01', 'TECHNICZNY',
'MECHANIK', 1700, 76, '000001', '987-231-131');

INSERT INTO DB2ADMIN.PRACOWNICY

VALUES ('0005', 'BOZENA', 'DOMANSKA', '1997-02-01', 'OBSLUGA KLIENTA',
'SPRZEDAWCA', 1300, 134, '000003', '987-231-126');

INSERT INTO DB2ADMIN.PRACOWNICY

VALUES ('0006', 'WOJCIECH', 'BURZALSKI', '1998-12-01', 'TECHNICZNY',
'MECHANIK', 1800, 80, '000003', '987-231-132');

INSERT INTO DB2ADMIN.PRACOWNICY

VALUES ('0007', 'MARZENA', 'KOWNACKA', '1997-05-01', 'KSIEGOWOSC', 'KASJER',
1400, 105, '000001', '987-231-141');

INSERT INTO DB2ADMIN.PRACOWNICY

VALUES ('0008', 'DAMIAN', 'MACHALICA', '1997-05-01', 'TECHNICZNY',
'KIEROWNIK', 2200, NULL, '000001', '987-231-133');

INSERT INTO DB2ADMIN.PRACOWNICY

VALUES ('0009', 'ALICJA', 'MAKOWIECKA', '1999-07-01', 'OBSLUGA KLIENTA',
'SPRZEDAWCA', 1400, 120, '000004', '933-241-525');

INSERT INTO DB2ADMIN.PRACOWNICY

VALUES ('0010', 'WOJCIECH', 'BAGIELSKI', '1998-04-01', 'OBSLUGA KLIENTA',
'SPRZEDAWCA', 1200, 100, '000001', '457-531-143');

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

80

Skrypt tworz3cy tabel) MIEJSCA i wype7niaj3cy j3 danymi

CONNECT TO WYPAUT USER db2admin USING db2admin;

DROP TABLE DB2ADMIN.MIEJSCA;

CREATE TABLE DB2ADMIN.MIEJSCA (

NR_MIEJSCA CHAR(6) NOT NULL,

ULICA VARCHAR(24) NOT NULL,

NUMER CHAR(8) NOT NULL,

MIASTO VARCHAR(24) NOT NULL,

KOD CHAR(6) NOT NULL,

TELEFON CHAR(16) ,

UWAGI VARCHAR(40),

PRIMARY KEY (NR_MIEJSCA));

INSERT INTO DB2ADMIN.MIEJSCA

VALUES ('000001', 'LEWARTOWSKIEGO', '12', 'WARSZAWA', '10-100', '228-277-
097', NULL);

INSERT INTO DB2ADMIN.MIEJSCA

VALUES ('000002', 'ALEJE LIPOWE', '3', 'WROCLAW', '32-134', '388-299-086',
NULL);

INSERT INTO DB2ADMIN.MIEJSCA

VALUES ('000003', 'KOCHANOWSKIEGO', '8', 'KRAKOW', '91-200', '222-312-498',
NULL);

INSERT INTO DB2ADMIN.MIEJSCA

VALUES ('000004', 'LOTNICZA', '9', 'POZNAN', '22-200', '778-512-044', NULL);

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

81

Skrypt tworz3cy tabel) WYPOCYCZENIA i wype7nia jacy j3 danymi

CONNECT TO WYPAUT USER db2admin USING db2admin;

DROP TABLE DB2ADMIN.WYPOZYCZENIA;

CREATE TABLE DB2ADMIN.WYPOZYCZENIA (

NR_WYPOZYCZENIA CHAR(8) NOT NULL,

NR_KLIENTA CHAR(8) NOT NULL,

NR_SAMOCHODU CHAR(6) NOT NULL,

NR_PRACOW_WYP CHAR(4) NOT NULL,

NR_PRACOW_ODD CHAR(4) ,

NR_MIEJSCA_WYP CHAR(6) NOT NULL,

NR_MIEJSCA_ODD CHAR(6) ,

DATA_WYP DATE NOT NULL ,

DATA_ODD DATE ,

KAUCJA DECIMAL(8,2) ,

CENA_JEDN DECIMAL(8,2) NOT NULL,

PRIMARY KEY (NR_WYPOZYCZENIA));

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000001', '00000001', '000003', '0002', '0002', '000001', '000001',
'1998-09-18', '1998-09-23', 200, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000002', '00000003', '000004', '0001', '0001', '000001', '000001',
'1998-09-26', '1998-09-27', NULL, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000003', '00000002', '000004', '0009', '0009', '000002', '000002',
'1998-10-04', '1998-10-04', NULL, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000004', '00000004', '000003', '0010', '0010', '000003', '000003',
'1998-10-19', '1998-10-25', NULL, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000005', '00000006', '000007', '0010', '0010', '000003', '000003',
'1998-10-29', '1998-11-02', 200, 100);

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

82

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000006', '00000005', '000008', '0010', '0002', '000001', '000003',
'1998-11-07', '1998-11-09', 200, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000007', '00000008', '000011', '0009', '0002', '000001', '000001',
'1998-11-20', '1998-11-25', 200, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000008', '00000006', '000011', '0001', '0005', '000004', '000004',
'1998-11-28', '1998-12-02', 200, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000009', '00000007', '000017', '0002', '0002', '000001', '000002',
'1998-12-01', '1998-12-03', 200, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000010', '00000009', '000017', '0002', '0010', '000001', '000002',
'1998-12-15', '1998-12-17', 200, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000011', '00000010', '000001', '0005', '0005', '000003', '000003',
'1998-12-20', '1998-12-23', 200, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000012', '00000012', '000002', '0005', '0005', '000004', '000004',
'1999-01-04', '1999-01-14', 200, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000013', '00000011', '000005', '0001', '0005', '000003', '000001',
'1999-01-24', '1999-01-29', NULL, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000014', '00000013', '000005', '0001', '0001', '000004', '000001',
'1999-02-01', '1999-02-05', 200, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000015', '00000014', '000004', '0001', '0001', '000002', '000002',
'1999-02-04', '1999-02-04', 200, 100);

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

83

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000016', '00000015', '000018', '0009', '0009', '000002', '000002',
'1999-03-20', '1999-03-23', 200, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000017', '00000016', '000013', '0010', '0010', '000004', '000001',
'1999-03-20', '1999-03-22', 200, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000018', '00000020', '000014', '0001', '0001', '000001', '000001',
'1999-04-01', '1999-04-05', NULL, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000019', '00000019', '000015', '0005', '0005', '000004', '000004',
'1999-05-04', '1999-05-09', NULL, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000020', '00000017', '000017', '0002', '0002', '000003', '000001',
'1999-08-14', '1999-08-17', NULL, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000021', '00000018', '000009', '0002', NULL, '000001', NULL,
'1999-12-04', NULL, NULL, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000022', '00000017', '000001', '0001', NULL, '000002', NULL,
'1999-12-22', NULL, NULL, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000023', '00000009', '000003', '0010', NULL, '000002', NULL,
'2000-01-08', NULL, 200, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000024', '00000014', '000004', '0005', NULL, '000001', NULL,
'2000-01-24', NULL, 200, 100);

INSERT INTO DB2ADMIN.WYPOZYCZENIA

VALUES ('00000025', '00000010', '000004', '0009', NULL, '000002', NULL,
'2000-02-09', NULL, 200, 100);

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

84

Podsumowanie

1. Przyk)adowa baza WYPAUT sk)ada si z pi ciu tabel: KLIENCI, PRACOWNICY, MIEJSCA,

WYPOZYCZENIA i SAMOCHODY.

2. Wszystkie te tabele s ze sob powi zane relacjami.

3. Skrypty zamieszczone w tym rozdziale s

dost pne równie#

na serwerze:

ftp://ftp.helion.com.pl/przyklady/cwsql.zip.

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

85

Spis tre ci:

ROZDZIA< 1. JAK KORZYSTA? Z ?WICZEB.......................................................... 1

Dlaczego nie MS Access ........................................................................................................................................1

Studiowanie wicze3 z InterBase .........................................................................................................................1

Studiowanie wicze3 z DB2 ..................................................................................................................................2

Zapraszam do wicze3 ..........................................................................................................................................2

ROZDZIA< 2. KONCEPCJA BAZY DANYCH ........................................................... 3

Tradycyjne bazy danych.......................................................................................................................................3

Relacyjny system bazy danych .............................................................................................................................3

Wydobywanie informacji z tradycyjnej bazy danych oraz z systemu relacyjnej bazy danych......................4

SQL - Strukturalny j:zyk zapyta3.......................................................................................................................5

Tabela .....................................................................................................................................................................6

Konstrukcja nazwy tabeli .....................................................................................................................................6

Typy danych...........................................................................................................................................................7

Tworzenie tabeli - CREATE TABLE ..................................................................................................................7

Warto pusta NULL ............................................................................................................................................8

Autoryzacja dost:pu do tabeli..............................................................................................................................8

Widoki ....................................................................................................................................................................9

Podsumowanie .......................................................................................................................................................9

ROZDZIA< 3. ZAPYTANIA SQL. ............................................................................. 10

Struktura polecenia SELECT ............................................................................................................................10

Wybieranie wszystkich kolumn..........................................................................................................................10

Wybieranie okre lonych kolumn .......................................................................................................................10

Wybieranie i jednoczesnym porz'dkowaniem..................................................................................................11

Wybieranie niepowtarzaj'cych si: wierszy.......................................................................................................12

Wybieranie okre lonych wierszy........................................................................................................................12

Operatory logiczne u ywane w klauzuli WHERE............................................................................................13

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

86

Operatory AND oraz OR....................................................................................................................................13

Predykat IN..........................................................................................................................................................15

Predykat BETWEEN ..........................................................................................................................................16

Wybieranie warto ci NULL................................................................................................................................16

Wyszukiwanie cz: ciowe - predykat LIKE .......................................................................................................17

Podsumowanie .....................................................................................................................................................19

ROZDZIA< 4 . WYBIERANIE DANYCH Z WIELU TABEL. ..................................... 20

Sk$adnie z$'czenia - predykat JOIN ..................................................................................................................21

Stosowanie aliasów w zapytaniu.........................................................................................................................22

Podsumowanie .....................................................................................................................................................23

ROZDZIA< 5. FUNKCJE SKALARNE I ARYTMETYCZNE..................................... 24

Wybieranie wyliczonych warto ci......................................................................................................................24

Nazywanie wyliczone. Kolumny.........................................................................................................................25

Funkcja COALESCE..........................................................................................................................................26

Dziesi:tna reprezentacja warto ci......................................................................................................................27

Zaokr'glanie wyników........................................................................................................................................27

Porównania daty..................................................................................................................................................28

Funkcje daty ........................................................................................................................................................28

Wybieranie pod$a3cucha ....................................................................................................................................30

H'czenie $a3cuchów.............................................................................................................................................32

Wyra enie CASE.................................................................................................................................................32

Podsumowanie .....................................................................................................................................................33

ROZDZIA< 6.FUNKCJE KOLUMNOWE I GRUPUJFCE ........................................ 34

Funkcje kolumnowe ............................................................................................................................................34

Klauzula GROUP BY..........................................................................................................................................35

Klauzula HAUING ..............................................................................................................................................36

Podsumowanie .....................................................................................................................................................37

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

87

ROZDZIA< 7. KLAUZULA UNION........................................................................... 38

H'czenie wielu wyników zapytania ....................................................................................................................38

Klauzula

UNION ALL

............................................................................................................................................39

Podsumowanie .....................................................................................................................................................40

ROZDZIA< 8. PODZAPYTANIA............................................................................... 41

U ywanie podzapyta3 .........................................................................................................................................41

Podzapytania z u yciem s$owa kluczowego IN .................................................................................................41

Podzapytania z u yciem s$owa kluczowego ALL..............................................................................................42

Podzapytania z u yciem s$owa kluczowego ANY lub SOHE...........................................................................43

Podzapytania w klauzuli HAVING....................................................................................................................43

Podsumowanie .....................................................................................................................................................44

ROZDZIA< 9. UTRZYMYWANIE DANYCH. ............................................................ 45

Tworzenie tabel....................................................................................................................................................45

Tworzenie widoków.............................................................................................................................................46

Dodawanie i usuwanie rekordów .......................................................................................................................46

Zmienianie danych w tabeli................................................................................................................................48

Usuwanie tabel.....................................................................................................................................................48

Podsumowanie .....................................................................................................................................................48

ROZDZIA< 10. OGRANICZENIA I INTEGRALNOG? REFERENCYJNA ............... 49

Ograniczenia ........................................................................................................................................................49

Integralno danych - klucz g$ówny...................................................................................................................49

Integralno refereicyjna - klucz obcy...............................................................................................................50

Podsumowanie .....................................................................................................................................................52

ROZDZIA< 11.INSTALACJA DB2. .......................................................................... 53

Instalacja dla systemu Windows i Windows NT...............................................................................................53

Podsumowanie .....................................................................................................................................................56

ROZDZIA< 12. NARZHDZIA DB2. ........................................................................... 57

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

88

Control Center.....................................................................................................................................................57

Command Center ................................................................................................................................................58

Przygotowywanie zapyta3 SQL i ich wykonywanie .........................................................................................58

Wykonywanie skryptów SQL.............................................................................................................................59

Wy wietlanie wyników wykonania zapytania...................................................................................................60

Command lin: Processor ....................................................................................................................................60

Tworzenie bazy ....................................................................................................................................................63

Ustawienia narz:dzi DB2 ....................................................................................................................................63

Information Center .............................................................................................................................................64

Podsumowanie .....................................................................................................................................................64

ROZDZIA< 13. INTERBASE. ................................................................................... 65

Instalacja InterBase 6.01 ....................................................................................................................................65

Narz:dzie IBConsole ...........................................................................................................................................65

Tworzenie bazy danych w InterBase .................................................................................................................66

Narz:dzie InterBase Manager............................................................................................................................66

Narz:dzie Interactiue SQ1..................................................................................................................................67

Wykonywanie skryptów......................................................................................................................................68

Podsumowanie .....................................................................................................................................................69

ROZDZIA< 14. STRUKTURA PRZYK<ADOWEJ BAZY DANYCH......................... 70

Opis tabel .............................................................................................................................................................70

Tabela KLIENCI.................................................................................................................................................70

Tabela SAMOCHODY .......................................................................................................................................70

Tabela PRACOWNICY......................................................................................................................................71

Tabela MIEJSCA ................................................................................................................................................71

Tabela WYPOKYCZENIA.................................................................................................................................72

Relacje pomi:dzy tabelami .................................................................................................................................73

Skrypty tworz'ce struktur: bazy WYPAUT ....................................................................................................73

background image

Arkadiusz Jakubowski – Podstawy SQL – wiczenia praktyczne

___________________________________________________________________________________________________

89

ROZDZIA< 15. SKRYPTY........................................................................................ 74

Skrypt tworz'cy tabel: KLIENCI i wype$niaj'cy j' danymi..........................................................................74

Skrypt tworz'cy tabel: SAMOCHODY i wype$niaj'cy j' danymi ................................................................76

Skrypt tworz'cy tabel: PRACOWNICY i wype$niaj'cy j' danymi...............................................................78

Skrypt tworz'cy tabel: MIEJSCA i wype$niaj'cy j' danymi .........................................................................80

Skrypt tworz'cy tabel: WYPOKYCZENIA i wype$nia jacy j' danymi.........................................................81

Podsumowanie .....................................................................................................................................................84


Document Outline


Wyszukiwarka

Podobne podstrony:
podstawy sql cwiczenia VKVEUF72C7MYTPJZOXJOACDOBCPB6BOCN7WFG4I
podstawy sql ćwiczenia praktyczne YAORERB2SIJRFPTCJSUUCEZQGZ7DWAAAGATQR6A
06 podstawy SQL 3id 6524 ppt
Opracowanie kolokwium I Biomedyczne podstawy rozwoju i wychowania ćwiczenia
Podstawy Kryminologii 10 I ćwiczenia
Podstawy Prawa Karnego Ćwiczenia, Prawo karne(4)
Podstawy zarz±dzania organizacjami
Podstawy Automatyki - Laboratorium - Cwiczenie 1, Opracowanie
podstawy zarządzania Plan zajęć w semestrze - Podstawy zarz±dzania, 2B111,2M111
Podstawy SQL Zajęcia 2, Podstawy SQL 2
Podstawy Pedagogiki Przedszkolnej ćwiczenia ćwiczenia
Podstaw wzm tranzyst, Ćwiczenie nr 23: -Badanie tranzystora bipolarnego -
Podstawy SQL Zajęcia 3, Podstawy SQL 3 (1)
Podstawy SQL Zajęcia 5, Program student
SQL POM, cwiczenie 2
KOLOKWIUM NR 1 Z PODSTAW OPIEKI POŁOŻNICZEJ CWICZENIA, POP
2 Formatowanie podstawowe formatowanie akapitu Cwiczenie 1

więcej podobnych podstron