Thomas Nield
Pierwsze kroki
z SQLPRAKTYCZNE PODEJŚCIE
DLA POCZĄTKUJĄCYCH
3
Spis treści
Przedmowa.........................................................................................7
Wstęp ................................................................................................9
1. Czym jest język SQL i dlaczego jest taki popularny?.............................15
Kto powinien znać język SQL? 16
2. Bazy danych .....................................................................................17
Czym jest baza danych? 17
Podstawowe informacje o relacyjnych bazach danych 17
Dlaczego konieczne jest stosowanie oddzielnych tabel? 18
Wybór odpowiedniej bazy danych 19
3. SQLite ..............................................................................................23
Czym jest SQLite? 23
SQLiteStudio 24
Dodawanie bazy danych i podgląd jej zawartości 25
4. Polecenie SELECT ..............................................................................31
Wyszukiwanie danych za pomocą języka SQL 31
Wyrażenia w instrukcjach SELECT 34
Konkatenacja pól tekstowych 39
Podsumowanie 40
4 Spis treści
5. Klauzula WHERE ...............................................................................41
Filtrowanie rekordów 41
Korzystanie z klauzuli WHERE
w odniesieniu do wartości liczbowych 42
Operatory AND, OR oraz IN 43
Klauzula WHERE a wyrażenia tekstowe 45
Klauzula WHERE a wartości logiczne 47
Obsługa wartości NULL 48
Warunki grupujące 50
Podsumowanie 52
6. Klauzule GROUP BY i ORDER BY ..........................................................53
Grupowanie wierszy 53
Sortowanie wierszy 56
Funkcje agregujące 56
Klauzula HAVING 59
Wyświetlanie unikalnych wierszy 61
Podsumowanie 61
7. Instrukcje ze słowem kluczowym CASE ..............................................63
Składnia instrukcji CASE 63
Grupowanie w instrukcji CASE 65
Trik z wartością 0 i null w instrukcji CASE 65
Podsumowanie 68
8. Operator JOIN ...................................................................................71
Łączenie ze sobą dwóch tabel 71
Złączenie wewnętrzne (INNER JOIN) 74
Złączenie lewostronne (LEFT JOIN) 77
Inne rodzaje złączeń 80
Łączenie ze sobą wielu tabel 81
Grupowanie w instrukcjach ze złączeniami 83
Podsumowanie 86
Spis treści 5
9. Projektowanie baz danych ................................................................87
Planowanie projektu bazy danych 87
Baza danych SurgeTech Conference 90
Klucze główne i obce 92
Schemat bazy danych 94
Tworzenie nowej bazy danych 95
Instrukcja CREATE TABLE 97
Definiowanie kluczy obcych 106
Tworzenie widoków 108
Podsumowanie 111
10. Zarządzanie danymi ....................................................................... 113
Instrukcja INSERT 114
Instrukcja DELETE 117
Instrukcja TRUNCATE TABLE 118
Instrukcja UPDATE 119
Instrukcja DROP TABLE 119
Podsumowanie 120
11. Dalsze kroki w świecie języka SQL .................................................... 121
A Operatory i funkcje ......................................................................... 125
B Informacje dodatkowe .................................................................... 133
Skorowidz ...................................................................................... 139
6 Spis treści
7
Przedmowa
W ciągu ostatnich trzydziestu lat komputery stały się nieodłącznym elementem
naszego życia. Dwadzieścia pięć lat temu korzystaliśmy z rozwiązań analogo-
wych. Informacje przesyłane były za pomocą usługi telefonicznej umożliwiającej
przekaz głosu właśnie w tej technologii, słuchaliśmy analogowych stacji radio-
wych w paśmie FM i chodziliśmy do biblioteki, aby przeglądać udostępnione
w niej wolumeny w poszukiwaniu informacji. Projekty budynków rysowane
były odręcznie; narzędziem pracy grafika był pisak, pędzel i atrament; muzycy
szarpali struny i dmuchali w rogi, nagrywając wszystko na taśmie analogowej;
sterowanie lotem samolotu możliwe zaś było dzięki połączeniu za pomocą kabli
wolantu z powierzchniami sterowymi samolotu.
Teraz jednak żyjemy w skomputeryzowanym, cyfrowym świecie. W związku
z tym każdy z nas musi umieć korzystać z komputera. Nie chodzi tu o bycie
ekspertem w tym zakresie, jednak podobnie jak poeci powinni posiadać podsta-
wową wiedzę z dziedziny matematyki i fizyki, a matematycy choć na chwilę
przenieść się do świata poezji, tak wszyscy w dzisiejszych czasach muszą znać
przynajmniej podstawy obsługi komputera.
Myślę, że ta książka świetnie wypełni lukę w wiedzy pomiędzy znawcami nowych
technologii a laikami w tym zakresie, prezentując w sposób łatwy i przystępny
informacje na temat SQL — podstawowego języka do wykonywania operacji na
danych w bazie danych.
— Richard Hipp, twórca SQLite
8 Przedmowa
9
Wstęp
Aby móc jeździć samochodem, nie jest potrzebna wiedza na temat tego, jak
działa jego silnik. Podobnie, celem takich technologii jak SQL jest umożliwienie
Ci skupienia uwagi na rozwiązaniu problemu natury biznesowej, nie zaś na
tym, jak przebiega ten proces od strony technicznej. W tej książce przedstawiono
właśnie praktyczne sposoby wykorzystania języka SQL bez zagłębiania się
w zbędne techniczne szczegóły dotyczące jego działania, które raczej nie okażą się
przydatne w zaspokajaniu Twoich bieżących potrzeb informacyjnych. Najwięcej
miejsca poświęcono na ćwiczenia praktyczne, które można wykonać na rzeczywi-
stych bazach danych dostępnych do pobrania, aby na bieżąco weryfikować sposób
działania poleceń. Po przeczytaniu tej książki będziesz mieć zatem praktyczną
wiedzę, która pozwoli Ci pracować z bazami danych, a także wykorzystywać je
do rozwiązywania problemów biznesowych.
Jak korzystać z tej książki
Celem tej książki jest przedstawienie podstaw języka SQL oraz elementarnej
wiedzy na temat pracy z bazami danych. Czytelnicy, którzy mieli już okazję korzy-
stać z arkuszy kalkulacyjnych Excela, nie powinni mieć problemów z przyswoje-
niem tego materiału, jednak mimo wszystko proces ten będzie wymagał od nich
pewnego nakładu pracy. Natomiast w przypadku osób, które nie pracowały
dotąd w programie Excel, przyswojenie wiedzy zawartej w tej książce będzie
stanowić większe wyzwanie. Znajomość takich pojęć występujących w Excelu,
jak wiersz, kolumna, tabela czy wyrażenie matematyczne (np. formuła w Excelu)
oraz agregacja (na przykład za pomocą funkcji SUM, AVG, MIN, MAX, COUNT), będzie
na pewno bardzo przydatna. Terminy te będą używane również w tej książce,
dlatego pewne doświadczenie w pracy z Excelem ułatwi ich zrozumienie.
10 Wstęp
Aby możliwe było przyswojenie materiału prezentowanego w tej książce, niezbęd-
na jest podstawowa wiedza dotycząca obsługi komputera. Czytelnik powinien
umieć korzystać z folderów, a także kopiować pliki i je wklejać. Powinien również
wiedzieć, jak pobrać pliki z internetu i jak je zapisać.
Podczas czytania tej książki warto mieć dostęp do komputera, aby móc na bieżąco
wykonywać zamieszczone w niej ćwiczenia. Wprawdzie niektórzy ludzie są
w stanie przyswoić wiedzę, tylko studiując dany materiał, jednak w pewnych
przypadkach lepiej jest zweryfikować zdobytą wiedzę w praktyce w celu jej
utrwalenia.
Wielokrotne powtarzanie tej samej czynności i praktyczne podejście do realizacji
powierzonych zadań czyni nas biegłymi w danej dziedzinie. Z niektórych funk-
cjonalności języka SQL prawdopodobnie będziesz w pracy korzystał częściej.
Inne natomiast zagoszczą na ekranie Twojego monitora rzadziej. Nie ma w tym
nic złego. Lepiej jest bowiem osiągnąć biegłość w wykonywaniu powierzonych
Ci zadań i zaglądać do tej książki (lub szukać odpowiedzi w Google) wówczas,
gdy konieczne jest uzyskanie informacji dotyczących nieznanego Ci dotąd
zagadnienia.
Gdy będziesz pracował, korzystając z określonych technologii, nikt nie będzie
od Ciebie oczekiwał kompletnej wiedzy na ich temat. Uzyskanie jej byłoby
wręcz niemożliwe z uwagi na ogromną liczbę zagadnień, jakie kryją się w tej
materii. Dlatego warto skupić swoją uwagę jedynie na wybranych zagadnieniach
i uzyskać wiedzę potrzebną do wykonania bieżących zadań. W przeciwnym razie
próba przyswojenia wiedzy na nieistotne tematy może zakończyć się uczuciem
przytłoczenia przez nadmiar wiedzy i rozproszeniem uwagi, którą należałoby
raczej skoncentrować na zasadniczych kwestiach. Mam nadzieję, że ta książka
będzie dla Ciebie źródłem podstawowej wiedzy na temat języka SQL, którą następ-
nie będziesz mógł poszerzać, zgłębiając istotne dla Ciebie zagadnienia.
Jeśli będziesz miał jakiekolwiek pytania, po prostu wyślij do mnie e-mail na adres
tmnield@outlook.com, a postaram się na nie odpowiedzieć najlepiej, jak umiem.
Jeśli chciałbyś dowiedzieć się czegoś na temat możliwości rozwoju swojej kariery
w kontekście określonych umiejętności natury technicznej lub masz pytanie
dotyczące języka SQL, może będę mógł Ci pomóc. Mam ponadto nadzieję, że ta
książka nie tylko poszerzy Twoją wiedzę, umożliwiając Ci rozwój kariery, ale
również rozbudzi Twoje zainteresowanie i fascynację omawianym tematem, tak
jak stało się to w moim przypadku.
Korzystanie z przykładów kodu 11
Konwencje zastosowane w książce
W książce stosowane są następujące konwencje typograficzne:
Kursywa
W ten sposób oznaczane są nowe terminy, adresy URL, adresy e-mail,
nazwy i rozszerzenia plików.
Kod programu
Wykorzystywany w przypadku listingów, a także w akapitach, w których
mowa o elementach programu, takich jak nazwy zmiennych lub funkcji,
bazy danych, typy danych, zmienne środowiskowe, instrukcje czy słowa
kluczowe.
Pogrubiony kod programu
Stosowany do wyróżnienia poleceń lub innego typu tekstu, który powinien
być wpisany przez użytkownika w takiej postaci, w jakiej został podany.
Wyróżniony kod programu
Przy użyciu tej konwencji prezentowany jest tekst, w miejscu którego powinny
pojawić się wartości podane przez użytkownika lub wartości wynikające
z kontekstu.
Za pomocą tego rysunku oznaczane jest ogólne spostrzeżenie na
dany temat.
Korzystanie z przykładów kodu
Materiały dodatkowe (przykłady kodu, ćwiczenia itd.) są dostępne do pobrania
pod adresem
ftp://ftp.helion.pl/przyklady/pksqlp.zip.
Ta książka ma Ci pomóc w należytym wykonywaniu powierzonych Ci zadań.
Ogólnie rzecz biorąc, w swoich programach i przygotowywanej przez Ciebie
dokumentacji możesz wykorzystać przykładowy kod zamieszczony w tej publika-
cji. Nie potrzebujesz do tego naszej zgody, chyba że będziesz odtwarzał znaczną
jego część. Napisanie programu, w którym będzie wykorzystane jedynie kilka
fragmentów kodu zamieszczonego w tej książce, nie wymaga pozwolenia, ale
sprzedaż lub dystrybucja na płycie CD dołączonych do książki przykładów już
12 Wstęp
tak. Na udzielanie odpowiedzi na zadane Ci pytanie poprzez zacytowanie
fragmentu książki lub przytoczenie przez Ciebie przykładowego kodu nie jest
wymagana zgoda. Jeśli jednak w dokumentacji Twojego produktu chciałbyś
zamieścić znaczący fragment przykładowej instrukcji z tej książki, musisz
uzyskać nasze pozwolenie.
Jeśli w przygotowywanym przez Ciebie materiale zamieścisz odniesienie do tej
książki, będzie nam miło, jednak nie jest to wymagane. W takim odwołaniu zwykle
podawane jest imię i nazwisko autora, tytuł książki, nazwa wydawnictwa i numer
ISBN. Na przykład: Nield T., Pierwsze kroki z SQL. Praktyczne podejście dla po-
czątkujących Wydawnictwo Helion, Gliwice 2017, ISBN 978-83-283-2818-1.
Jeśli uważasz, że zakres wykorzystanych przez Ciebie przykładów kodu wykracza
poza dozwolony użytek lub uzyskane pozwolenie, o którym mowa powyżej,
skontaktuj się z nami, pisząc na adres permissions@oreilly.com.
Jak się z nami skontaktować
Wszelkie uwagi i pytania dotyczące tej książki prosimy kierować do wydawcy:
Grupa Wydawnicza Helion S.A.
ul. Kościuszki 1c
44-100 Gliwice
tel. 032 230 98 63
fax. 032 230 98 63 wew. 110
Na stronie internetowej http://helion.pl/ksiazki/ znajdują się podstawowe infor-
macje o książce, errata, fragmenty publikacji i pozostałe informacje.
Uwagi i pytania techniczne dotyczące książki prosimy kierować na adres
helion@helion.pl.
Aby uzyskać więcej informacji o książkach wydawanych przez wydawnictwo
Helion, a także o kursach, konferencjach i nowościach, odwiedź naszą stronę
internetową pod adresem http://www.helion.pl.
Odwiedź nasz profil na Facebooku: http://www.facebook.com/HelionPL
Znajdź nas na Twitterze: https://twitter.com/helionpl
Podziękowania 13
Podziękowania
Jestem prawdziwym szczęściarzem, gdyż otaczają mnie niesamowici ludzie i mam
świadomość, jak ważną rolę odgrywają w moim życiu, wspierając mnie we
wszystkim, co robię. Gdyby nie oni, ta książka prawdopodobnie by nie powstała.
Przede wszystkim chciałbym podziękować mamie i tacie. Zrobili wszystko, aby
zapewnić mi jak najlepszą przyszłość. Jestem pewien, że nie miałbym obecnie
takich perspektyw, gdyby nie oni. Mój tata ciężko pracował, abyśmy ja i moi bracia
byli dobrze wykształceni. Moja mama natomiast zawsze motywowała mnie do
dalszej pracy, nawet kiedy stawiałem opór. Nauczyła mnie nigdy nie spoczywać
na laurach i zawsze starać się przełamywać własne granice.
Nie jestem w stanie wyrazić, jak bardzo jestem wdzięczny moim liderom, mene-
dżerom i współpracownikom z Southwest Airlines Revenue Management. Zarów-
no Justin Jones, jak i Timothy Keeney mają w sobie rzadko spotykanego ducha
prawdziwego wojownika i zapał do tworzenia innowacji. Obaj posiadają cechy
idealnego przywódcy i doskonale uosabiają wartości Southwest Airlines, a co
najistotniejsze, są po prostu dobrymi ludźmi. Na zawsze pozostaną moimi przyja-
ciółmi. Sprawili, że trudno jest mi wyobrazić sobie życie poza Southwest Airlines.
Robert Haun, Brice Taylor i Allison Russell nieustannie pracują, aby nasz zespół
był liderem innowacji i wciąż realizował coraz to nowe pomysły. Czuję się wyróż-
niony, że mogę pracować w otoczeniu, które pomogli stworzyć. Muszę też po-
dziękować Mattowi Louisowi za przyjęcie mnie do zespołu Revenue Management
oraz Stevenowi Barsalou, dzięki któremu zdałem sobie sprawę ze swojej niewie-
dzy na temat języka SQL. Steven był pierwszą osobą, która przyszła mi na myśl,
gdy zacząłem zastanawiać się nad tym, kto mógłby zostać recenzentem tej książki.
Jestem mu wdzięczny za to, że zdecydował się wziąć udział w tym projekcie.
Nie sposób pominąć w tym miejscu zespołu projektowego, z którym na co
dzień pracuję. W jego skład wchodzą: Brian Denholm, Paula Zigler, Bridget
Green, Todd Randolph i Chris Solomon. Nasze wspólne dokonania nigdy nie
przestaną mnie zadziwiać. Brian jest kierownikiem projektu, który potrafi dosko-
nale posługiwać się zarówno żargonem technicznym, jak i językiem biznesu.
Ponadto nigdy nie wzbrania się przed pisaniem poleceń w języku SQL i dokony-
waniem sporadycznych przeglądów kodu. Specjalne podziękowania za wspie-
ranie mnie w codziennej pracy kieruję do Chrisa Solomona. Ma on nie tylko
rzadko spotykany talent do przyswajania dużych ilości wiedzy technicznej
i konfrontowania jej z ujęciem biznesowym, ale jest również fajnym facetem, a ja
14 Wstęp
mam zaszczyt być jego przyjacielem. Chris zawsze odgrywa kluczową rolę w każ-
dym projekcie, dlatego byłem podekscytowany tym, że zgodził się zostać recen-
zentem tej książki.
Muszę wspomnieć również o wspaniałych ludziach, którzy pracowali w dziale
czuwającym nad zgodnością reguł bezpieczeństwa operacji naziemnych z przepi-
sami prawa (Ground Ops Safety Regulatory Compliance) w Southwest Airlines,
a więc o Marcu Stanku, Reubenie Millerze, Mary Noel Hennes i wszystkich
innych, z którymi miałem zaszczyt pracować. Kilka lat temu odbywałem w tym
dziale staż, a następnie pracowałem tam na kontrakt i stamtąd właśnie pochodzi
wiele moich najpiękniejszych wspomnień. Tam też odkryłem moje zamiłowanie
do technologii i te właśnie osoby (gdy tylko nadarzała się taka sposobność)
umożliwiały mi rozwój tej pasji, i to zarówno wtedy, gdy chodziło o zbudowanie
naprędce baz danych, jak i przygotowanie prototypu aplikacji na iPada.
Nie spodziewałem się, że gdy ogłoszę informację o publikacji tej książki, skon-
taktuje się ze mną Richard Hipp, założyciel i twórca SQLite. Richard z chęcią
podjął się roli recenzenta technicznego, co jest dla mnie ogromnym zaszczytem.
Poczucie wspólnoty u osób zajmujących się technologiami nieustannie mnie
zadziwia, a fakt, że Richard Hipp dołączył do tego projektu, pokazuje, jak wyjąt-
kowy ma ona charakter i jak mocno jej członkowie są ze sobą związani.
Redaktorem tej książki w wydawnictwie O’Reilly była Shannon Cutt. Ponieważ
jest to moja pierwsza książka, nie wiedziałem, jak będzie wyglądał proces związa-
ny z jej wydaniem. Dzięki Shannon okazało się to tak pozytywnym doświad-
czeniem, że chętnie napisałbym kolejną książkę. Dziękuję Ci, Shannon, byłaś
fantastyczna!
Ostatnie, ale nie mniej ważne podziękowania kieruję w stronę Watermark Church
i wolontariuszy z Careers in Motion, którzy przyczynili się do wydania tej książki.
Początkowo bowiem materiał ten miał zostać udostępniony publicznie, aby
pomóc bezrobotnym specjalistom z branży IT z Dallas i jego okolic. To właśnie
członkowie Careers in Motion zachęcili mnie do opublikowania tej książki.
Szczególne podziękowania należą się Marthie Garzie za jej upór w przekonywa-
niu mnie do podjęcia tego kroku. Teraz wiem, że gdy poświęca się swój czas na
pomoc innym ludziom, może się zdarzyć coś niezwykłego.
15
ROZDZIAŁ 1.
Czym jest język SQL
i dlaczego jest taki popularny?
Nie ulega wątpliwości, że świat biznesu podlega ciągłym zmianom. Często przy-
czynia się do tego zastosowanie coraz to nowszych technologii, a także ogromne
ilości danych biznesowych. Przedsiębiorstwa inwestują ogromne pieniądze
w sposoby i narzędzia do gromadzenia danych oraz ich przechowywania.
Z punktu widzenia liderów i menedżerów różnych obszarów biznesowych tak
naprawdę najistotniejsze jest wydobycie z tych danych użytecznych informacji
i ich odpowiednie wykorzystanie. Do tego właśnie przydaje się znajomość języka
SQL (ang. Structured Query Language — strukturalny język zapytań). Dzięki
niemu uzyskują oni bowiem dostęp do danych oraz możliwość manipulowania
nimi w celu uzyskania istotnych informacji i określonej wiedzy biznesowej, która
dotychczas pozostawała poza ich zasięgiem.
Tempo gromadzenia danych przez przedsiębiorstwa gwałtownie rośnie. Wraz
ze zwiększającą się ilością danych wzrasta zapotrzebowanie na ludzi, którzy
wiedzą, jak je analizować i jak nimi zarządzać. Stack Overflow, najbardziej aktyw-
na społeczność zajmująca się programowaniem, jaka obecnie istnieje, w 2015
roku przeprowadziła obszerną ankietę wśród swoich członków. Okazało się, że
najbardziej pożądana przez pracodawców jest umiejętność pisania kodu dla
urządzeń firmy Apple. Wynagrodzenie oferowane osobom posiadającym takie
umiejętności jest niemalże sześciocyfrowe. Znajomość języka SQL uplasowała
się wprawdzie dopiero na piątym miejscu, ale z niewiele niższym wynagrodze-
niem. Ostatnio bowiem dane nagle stały się wszechobecne — mimo to niewiele
osób posiada odpowiednią wiedzę, aby wydobyć z nich wartościowe informacje.
Dlatego umiejętność posługiwania się językiem SQL stała się bardzo pożądana.
16 Rozdział 1. Czym jest język SQL i dlaczego jest taki popularny?
Kto powinien znać język SQL?
Należy zacząć od tego, że język SQL jest niekiedy błędnie postrzegany jako umie-
jętność wymagająca wiedzy z dziedziny IT, dlatego jest on domeną ekspertów
wyłącznie z tej branży (nie związanych z biznesem). Obecnie mało kto jest takiego
zdania. Zarówno biznesmeni, menedżerowie, specjaliści z dziedziny IT, jak
i inżynierowie mogą czerpać korzyści z nabytych kompetencji związanych z posłu-
giwaniem się tym językiem. Pozwolą im one poszerzyć perspektywy rozwoju
kariery, dając możliwość wyboru wielu różnych ścieżek rozwoju. Znajomość tego
języka umożliwia bowiem wydobycie odpowiednich danych, co z kolei prowadzi
do lepszego rozumienia dziedziny będącej przedmiotem naszego zainteresowa-
nia. Od strony biznesowej potencjalne ścieżki kariery osób znających język SQL
obejmują stanowiska analityczne, kierownicze, a także te związane z zarządza-
niem strategicznym, badaniami i realizacją projektów. Z kolei w branży IT taka
wiedza umożliwi podjęcie pracy w obszarze projektowania baz danych, ad-
ministrowania nimi, a także w zakresie inżynierii systemów, zarządzania projek-
tami IT, a nawet rozwoju oprogramowania.
17
ROZDZIAŁ 2.
Bazy danych
Czym jest baza danych?
Najszerzej rzecz ujmując, baza danych to miejsce, w którym dane są gromadzone
i porządkowane. Bazą danych jest zarówno arkusz kalkulacyjny zawierający
informacje o rezerwacjach klientów, jak i zwykły plik tekstowy z rozkładem
lotów. Plik taki może być zapisywany w różnych formatach, takich jak na przy-
kład XML czy CSV.
Gdy eksperci branży IT używają pojęcia baza danych, zazwyczaj mają na myśli
system zarządzania relacyjną bazą danych (ang. Relational Database Management
System — RDBMS). Określenie to może brzmieć dość technicznie i wzbudzać
pewien niepokój, jednak system zarządzania bazą danych to nic innego jak
pewnego rodzaju baza danych, zawierająca jedną lub wiele tabel, które mogą
być ze sobą powiązane.
Podstawoweinformacjeorelacyjnych bazach danych
Na pewno wiesz, jak wygląda tabela. Składa się z kolumn i wierszy, w których
przechowywane są dane, podobnie jak ma to miejsce w arkuszu kalkulacyjnym.
Tabele mogą być ze sobą powiązane. Może na przykład istnieć relacja między
tabelą CUSTOMER_ORDER1
a tabelą CUSTOMER, do której się ona odwołuje w celu
uzyskania informacji o samych klientach.
1
Tabela o nazwie CUSTOMER_ORDER w przykładowej bazie danych, do której będzie nawiązywać
większość przykładów zawartych w tej książce, przechowuje informacje o zamówieniach
klientów — przyp. tłum.
18 Rozdział 2. Bazy danych
Powiedzmy zatem, że mamy do dyspozycji tabelę CUSTOMER_ORDER, w której
znajduje się pole o nazwie CUSTOMER_ID, jak pokazano na rysunku 2.1.
Rysunek 2.1. Tabela CUSTOMER_ORDER, zawierająca kolumnę CUSTOMER_ID
W naszej bazie danych znajduje się zapewne także inna tabela, prawdopodobnie
o nazwie CUSTOMER, przedstawiona na rysunku 2.2. Zawiera ona przypuszczalnie
szczegółowe informacje o każdym kliencie, do którego przypisana jest odpowied-
nia wartość w kolumnie CUSTOMER_ID.
Rysunek 2.2. Tabela CUSTOMER
Mając do dyspozycji pole CUSTOMER_ID w tabeli CUSTOMER_ORDER , możemy poszu-
kać informacji o klientach zamieszczonych w tabeli CUSTOMER. Taka właśnie jest
podstawowa zasada działania relacyjnej bazy danych. W przypadku tego rodzaju
bazy danych w tabelach mogą znajdować się pola, które wskazują na informacje
zawarte w innych tabelach. Taki sposób działania prawdopodobnie nie jest Ci
obcy, jeśli korzystałeś już z funkcji Excela WYSZUKAJ.PIONOWO w celu wyświetlenia
w danym arkuszu informacji, które pochodzą z innego arkusza w skoroszycie.
Dlaczego konieczne jest stosowanie
oddzielnych tabel?
Można zadać sobie następujące pytanie: „Dlaczego dane w relacyjnej bazie danych
są przechowywane w oddzielnych tabelach skonstruowanych w taki właśnie
sposób?”. Odpowiedzią na nie jest normalizacja, zgodnie z którą różne rodzaje
danych należy umieszczać w oddzielnych tabelach, nie zaś składować je wszystkie
Wybór odpowiedniej bazy danych 19
w jednym miejscu. Gdybyśmy przechowywali wszystkie informacje w jednej tabeli,
dane by się powtarzały, byłoby ich zbyt wiele, a ich utrzymanie byłoby bardzo
trudne. Wyobraźmy sobie, że wszystkie informacje o klientach znajdują się
w tabeli CUSTOMER_ORDER, przedstawionej na rysunku 2.3.
Rysunek 2.3. Tabela CUSTOMER_ORDER zawierająca nieznormalizowane dane
Zauważ, że w przypadku zamówień złożonych przez firmę Re-Barre Construc-
tion konieczne było powielenie informacji o tym kliencie w trzech oddzielnych
wierszach (powtórzona została nazwa klienta, region, adres, miasto, stan i kod
pocztowy) — po jednym dla każdego zamówienia. Są one zatem nadmiarowe,
niepotrzebnie zabierają miejsce na dysku i są trudne w utrzymaniu. Dlaczego?
Wyobraź sobie, że klient zmienił adres. W takim przypadku w powyższej tabeli
konieczne by było zmodyfikowanie informacji o wszystkich trzech zamówieniach.
Dlatego właśnie lepiej jest przechowywać informacje o klientach i ich zamówie-
niach w dwóch oddzielnych tabelach: CUSTOMER i CUSTOMER_ORDER. Wówczas
zmiana adresu klienta będzie skutkowała modyfikacją tylko jednego rekordu
w tabeli CUSTOMER, jak pokazano na rysunku 2.4.
Rysunek 2.4. Tabela zawierająca znormalizowane dane
W rozdziale 8. przyjrzymy się rodzajom złączeń między tabelami i wykorzystaniu
do tego celu operatora JOIN. Operator ten umożliwia wyświetlenie danych
z dwóch tabel za pomocą jednego zapytania, a więc na przykład przejrzenie listy
klientów wraz z zamówieniami, które złożyli.
Wybór odpowiedniej bazy danych
Korzystanie z relacyjnych baz danych i języka SQL nie jest w żaden sposób ogra-
niczone. Należy mieć jednak na uwadze fakt, że istnieje kilka firm i społeczności,
20 Rozdział 2. Bazy danych
które opracowały własne programy do zarządzania relacyjną bazą danych. W każ-
dym z nich wykorzystywane są tabele, które są odpytywane za pomocą języka
SQL. Niektóre z tych rozwiązań bazodanowych są lekkie (ang. lightweight) i pro-
ste w użyciu. Dane są wówczas przechowywane w pojedynczym pliku i dostęp do
nich ma niewielu użytkowników. Inne rozwiązania są natomiast bardziej rozbu-
dowane i do działania potrzebują serwera. W takim przypadku z danych korzy-
stają jednocześnie tysiące użytkowników i aplikacji. Są również dostępne za-
równo darmowe rozwiązania bazodanowe typu open source, jak i takie, do
korzystania z których wymagane jest zakupienie licencji komercyjnych.
Ze względów praktycznych podzielimy zatem rozwiązania bazodanowe na dwie
kategorie: lekkie i scentralizowane (ang. centralized). Chociaż w branży IT taka
nomenklatura nie jest zbyt często stosowana, to wyodrębnienie tych dwóch rodza-
jów baz danych pomoże w objaśnieniu różnic występujących między nimi.
Lekkie bazy danych
Jeśli szukasz prostego rozwiązania, z którego korzystać będzie jeden lub zaled-
wie kilku użytkowników (np. Twoi współpracownicy), zacznij od gromadzenia
danych w lekkiej bazie danych. Tego typu bazy nie wymagają bowiem dodatko-
wych nakładów w postaci serwera. Są również bardzo elastyczne. Dane są z reguły
przechowywane w pliku, który można współdzielić z innymi osobami. To jednak
stwarza niebezpieczeństwo, że w przypadku wykonywania w pliku zmian jedno-
cześnie przez kilku użytkowników, przechowywane w nim dane utracą spójność.
Jeśli zatem przyjdzie Ci się zmierzyć z tym problemem, będzie to oznaczać, że
czas rozważyć migrację danych do scentralizowanej bazy danych.
Najczęściej wykorzystywane lekkie bazy danych to SQLite oraz Microsoft Access.
W tej książce będziemy korzystać z SQLite. Jest to darmowa, lekka baza danych,
której obsługa jest bardzo intuicyjna. Jest ona wykorzystywana w większości
urządzeń, z którymi mamy styczność na co dzień. Jest elementem oprogramo-
wania smartfonów, satelitów, samolotów i systemów samochodowych. Ma prak-
tycznie nieograniczoną pojemność i jest idealnym rozwiązaniem w przypadku
urządzeń, z których korzysta więcej niż jedna osoba (lub co najwyżej kilka
osób). Ze względu na łatwość instalacji tej bazy danych oraz jej prostotę SQLite
jest również idealnym środowiskiem do nauki języka SQL.
Microsoft Access jest dostępny na rynku już od jakiegoś czasu, jednak w kon-
tekście skalowalności i wydajności ustępuje on miejsca SQLite. Access jest jednak
narzędziem często wykorzystywanym w środowiskach biznesowych, dlatego
Wybór odpowiedniej bazy danych 21
warto je znać. Daje ono możliwość pisania zapytań bez użycia języka SQL dzięki
przystosowanym do tego celu narzędziom wizualnym, a także projektowania
bazy danych za pomocą interfejsu graficznego lub tworzenia makr. Wiele firm
poszukuje osób do obsługi baz danych Microsoft Access oraz ich utrzymywania
lub też wykonywania migracji danych do bardziej pożądanych platform bazoda-
nowych, takich jak MySQL.
Scentralizowane bazy danych
Jeśli z bazy danych korzystać będą jednocześnie dziesiątki, setki, a nawet tysiące
użytkowników i aplikacji, lekkie bazy danych nie poradzą sobie z taką ilością
zapytań. Potrzebna będzie scentralizowana baza danych, która wymaga serwera
i jest w stanie sprawnie obsłużyć dużą liczbę poleceń. Obecnie na rynku jest dostęp-
nych wiele różnego typu rozwiązań scentralizowanych baz danych, np.:
MySQL,
Microsoft SQL Server,
Oracle,
PostgreSQL,
Teradata,
IBM DB2,
MariaDB.
Niektóre z tych rozwiązań możesz zainstalować na każdego rodzaju komputerze,
aby następnie przekształcić go w serwer. Następnie możesz podłączyć do niego
komputery użytkowników, tzw. klienty (ang. clients), aby mogli oni korzystać
z zamieszczonej na nim bazy danych. Klient może wysłać zapytanie SQL, żądając
konkretnych danych. Zadaniem serwera jest przetworzenie tego żądania i zwró-
cenie odpowiedzi. Jest to klasyczna konfiguracja klient-serwer. Klient wysyła
żądanie pewnych danych, a serwer w odpowiedzi je zwraca.
Istnieje wprawdzie możliwość przekształcenia w serwer bazy danych MySQL
dowolnego komputera, takiego jak MacBook lub tani pecet, jednak większe natę-
żenie ruchu w wymianie danych pomiędzy klientami a serwerem wymaga zasto-
sowania bardziej specjalistycznych komputerów, określanych mianem kompute-
rów-serwerów (ang. server computers). Są one przystosowane do wykonywania
zadań dedykowanych właśnie dla serwerów. Tego typu urządzenia są zazwyczaj
utrzymywane przez dział IT. Jego pracownicy zajmują się administrowaniem
22 Rozdział 2. Bazy danych
bazami danych, których prawidłowe działanie zostało uznane za kluczowe dla
funkcjonowania przedsiębiorstwa, oraz je nadzorują.
Czasami terminu SQL używa się błędnie w odniesieniu do nazw
platform bazodanowych, takich jak MySQL, Microsoft SQL
Server lub SQLite, podczas gdy SQL jest uniwersalnym językiem
służącym do pracy z danymi umieszczonymi na tych platfor-
mach. Słowo SQL zostało użyte w ich nazwach jedynie dla celów
marketingowych.
Jako nowy pracownik będziesz musiał poprosić o dostęp do potrzebnych Ci
informacji, znajdujących się w scentralizowanej bazie danych, która prawdopo-
dobnie będzie istnieć w firmie, do której dołączasz. Chociaż w tej książce nie
będziemy poruszać tematów związanych z tego rodzaju bazą danych, to jednak
omawiane w niej tematy w dużej mierze pokrywają się z zagadnieniami dotyczą-
cymi scentralizowanej bazy danych. W przypadku wszystkich rozwiązań bazoda-
nowych do wyświetlania wybranych informacji z tabel język SQL wykorzystywa-
ny jest w analogiczny sposób. Także edytory, za pomocą których możliwe jest
odpytywanie bazy danych za pomocą tego języka, różnią się od siebie tylko
w niewielkim stopniu. Zdarza się jednak, że w poszczególnych rozwiązaniach
dostępnych na rynku składnia niektórych instrukcji w języku SQL nie jest taka
sama, jak na przykład ma to miejsce w odniesieniu do funkcji związanych
z datami. Należy jednak zaznaczyć, że elementy tego języka zaprezentowane
w niniejszej publikacji należy traktować jako powszechnie stosowane.
Jeśli więc kiedykolwiek staniesz przed wyzwaniem zbudowania scentralizowanej
bazy danych, z czystym sumieniem poleciłbym Ci MySQL. Jest to rozwiązanie
typu open source, z którego można swobodnie korzystać, a jego instalacja i konfi-
guracja są bardzo proste. Korzysta z niego Facebook, Google, eBay, Twitter i setki
innych firm z Doliny Krzemowej.
Teraz, gdy poznałeś już podstawy organizacji baz danych, możemy przejść do
nauki korzystania z ich dobrodziejstw. W tej książce będziemy posługiwać się
systemem zarządzania bazą danych SQLite. Rodzaj systemu nie ma jednak
większego znaczenia, gdyż zastosowanie języka SQL w przypadku innych tego
rodzaju rozwiązań jest analogiczne. Dlatego też wszystko to, czego się dowiesz,
czytając tę książkę, będziesz mógł zastosować do wszystkich innych platform
bazodanowych.
23
ROZDZIAŁ 3.
SQLite
Czym jest SQLite?
Jak wspomniano w poprzednim rozdziale, dane można gromadzić w różnego
rodzaju bazach danych. Często jednak potrzebne jest nam szybkie i łatwe rozwią-
zanie, bez konieczności mozolnego budowania architektury klient-serwer. Chcemy
bowiem przechowywać dane w prostym pliku i edytować je równie łatwo jak
w przypadku dokumentu tekstowego, takiego jak w programie Word. W takich
przypadkach najbardziej optymalne jest użycie właśnie SQLite.
SQLite jest najczęściej wykorzystywanym na świecie systemem zarządzania bazą
danych. Został zastosowany w iPhonach, iPadach, w urządzeniach z systemem
operacyjnym Android i Windows Mobile. Znajdziesz go również w termostatach,
a także w samochodowych systemach komputerowych. Jest też wykorzystywany
w satelitach i w wielu innych nowoczesnych urządzeniach, w przypadku których
konieczne jest przechowywanie danych i proste ich przeszukiwanie. Z SQLite ko-
rzysta w dużym stopniu zarówno system operacyjny Windows 10, jak i system
samolotu Airbus A350 XWB. Jest on więc stosowany wszędzie tam, gdzie istotna
jest łatwość korzystania z niego oraz niskie koszty stałe. Jest również doskonały
do przygotowywania prototypów baz danych dla przedsiębiorstw.
Jednak coś za coś — z uwagi na brak serwera zarządzającego dostępem do bazy
danych SQLite nie może być jednocześnie wykorzystywany przez wielu użytkow-
ników. Nie jest bowiem możliwe edytowanie tego samego pliku przez wiele
osób w tym samym czasie. Ten system zarządzania bazą danych nadaje się nato-
miast świetnie do celów szkoleniowych.
24 Rozdział 3. SQLite
SQLiteStudio
Istnieje wiele edytorów służących do odpytywania bazy danych SQLite za pomocą
języka SQL. Gorąco polecam narzędzie SQLiteStudio, ponieważ jest ono bardzo
intuicyjne i umożliwia łatwe wyszukiwanie danych w bazie danych oraz zarzą-
dzanie nią. W tej książce będziemy korzystali właśnie z tej aplikacji. Można ją
pobrać ze strony http://sqlitestudio.pl/?act=download, wybierając odpowiedni
system operacyjny — Windows, Mac lub Linux. Następnie należy otworzyć
pobrany folder i skopiować jego zawartość do wybranej lokalizacji. Nie musisz
niczego instalować. Aby rozpocząć pracę z SQLiteStudio, wystarczy kliknąć
dwukrotnie plik SQLiteStudio.exe, pokazany na rysunku 3.1. Można również
utworzyć skrót na pulpicie, aby w przyszłości móc szybciej uruchamiać pobraną
aplikację.
Rysunek 3.1. Folder SQLiteStudio z plikiem SQLiteStudio.exe
Warto zaznaczyć, że SQLiteStudio to nie jest dzieło twórców SQLite. Jest to nie-
zależny program utworzony przez inne osoby. SQLite to silnik bazy danych
zbudowany przez Richarda Hippa i utalentowany zespół programistów, zaś
Dodawanie bazy danych i podgląd jej zawartości 25
SQLiteStudio jest interfejsem użytkownika. Jeśli więc napotkasz jakieś problemy
podczas korzystania z SQLiteStudio, powinieneś skontaktować się z zespołem
jego twórców, nie zaś z autorami SQLite.
Dodawanie bazy danych i podgląd jej zawartości
Po pierwszym uruchomieniu SQLiteStudio prawdopodobnie ujrzysz pusty pulpit
tego narzędzia, taki jak na rysunku 3.2. Dopiero gdy będziesz miał już dodaną
bazę danych, w panelu po lewej stronie zobaczysz jej elementy. W szarym obsza-
rze po prawej stronie będziesz natomiast mógł zapisywać instrukcje SQL, dzięki
którym wyświetlisz wybrane informacje pochodzące z tej właśnie bazy.
Rysunek 3.2. Pulpit narzędzia SQLiteStudio
Dodajmy teraz do SQLiteStudio kilka baz danych, które znajdziesz pod adresem
ftp://ftp.helion.pl/przyklady/pksqlp.zip. Z nich właśnie będziemy korzystali
w tej książce.
Kliknij powyższy link, rozpakuj plik i zapisz jego zawartość w wybranym folderze.
Prawdopodobnie będziesz chciał w nim przechowywać także inne bazy danych
używane przez Ciebie podczas pracy z tą książką.
26 Rozdział 3. SQLite
Gdy już pobierzesz pliki z bazami danych, przejdź do SQLiteStudio i w menu
u góry kliknij przycisk Baza danych, a następnie wybierz opcję Dodaj bazę
danych, jak pokazano na rysunku 3.3.
Rysunek 3.3. Dodawanie bazy danych
Wyświetli się okno dialogowe z komunikatem, w którym zostaniesz poproszony
o wskazanie pliku bazy danych. Aby wybrać stosowny plik i wykonać jego import,
kliknij ikonę z żółtym folderem, widoczną na rysunku 3.4.
Rysunek 3.4. Otwieranie lokalizacji z bazą danych
Thomas Nield Pierwsze kroki z SQLPRAKTYCZNE PODEJŚCIE DLA POCZĄTKUJĄCYCH
3 Spis treści Przedmowa.........................................................................................7 Wstęp ................................................................................................9 1. Czym jest język SQL i dlaczego jest taki popularny?.............................15 Kto powinien znać język SQL? 16 2. Bazy danych .....................................................................................17 Czym jest baza danych? 17 Podstawowe informacje o relacyjnych bazach danych 17 Dlaczego konieczne jest stosowanie oddzielnych tabel? 18 Wybór odpowiedniej bazy danych 19 3. SQLite ..............................................................................................23 Czym jest SQLite? 23 SQLiteStudio 24 Dodawanie bazy danych i podgląd jej zawartości 25 4. Polecenie SELECT ..............................................................................31 Wyszukiwanie danych za pomocą języka SQL 31 Wyrażenia w instrukcjach SELECT 34 Konkatenacja pól tekstowych 39 Podsumowanie 40
4 Spis treści 5. Klauzula WHERE ...............................................................................41 Filtrowanie rekordów 41 Korzystanie z klauzuli WHERE w odniesieniu do wartości liczbowych 42 Operatory AND, OR oraz IN 43 Klauzula WHERE a wyrażenia tekstowe 45 Klauzula WHERE a wartości logiczne 47 Obsługa wartości NULL 48 Warunki grupujące 50 Podsumowanie 52 6. Klauzule GROUP BY i ORDER BY ..........................................................53 Grupowanie wierszy 53 Sortowanie wierszy 56 Funkcje agregujące 56 Klauzula HAVING 59 Wyświetlanie unikalnych wierszy 61 Podsumowanie 61 7. Instrukcje ze słowem kluczowym CASE ..............................................63 Składnia instrukcji CASE 63 Grupowanie w instrukcji CASE 65 Trik z wartością 0 i null w instrukcji CASE 65 Podsumowanie 68 8. Operator JOIN ...................................................................................71 Łączenie ze sobą dwóch tabel 71 Złączenie wewnętrzne (INNER JOIN) 74 Złączenie lewostronne (LEFT JOIN) 77 Inne rodzaje złączeń 80 Łączenie ze sobą wielu tabel 81 Grupowanie w instrukcjach ze złączeniami 83 Podsumowanie 86
Spis treści 5 9. Projektowanie baz danych ................................................................87 Planowanie projektu bazy danych 87 Baza danych SurgeTech Conference 90 Klucze główne i obce 92 Schemat bazy danych 94 Tworzenie nowej bazy danych 95 Instrukcja CREATE TABLE 97 Definiowanie kluczy obcych 106 Tworzenie widoków 108 Podsumowanie 111 10. Zarządzanie danymi ....................................................................... 113 Instrukcja INSERT 114 Instrukcja DELETE 117 Instrukcja TRUNCATE TABLE 118 Instrukcja UPDATE 119 Instrukcja DROP TABLE 119 Podsumowanie 120 11. Dalsze kroki w świecie języka SQL .................................................... 121 A Operatory i funkcje ......................................................................... 125 B Informacje dodatkowe .................................................................... 133 Skorowidz ...................................................................................... 139
6 Spis treści
7 Przedmowa W ciągu ostatnich trzydziestu lat komputery stały się nieodłącznym elementem naszego życia. Dwadzieścia pięć lat temu korzystaliśmy z rozwiązań analogo- wych. Informacje przesyłane były za pomocą usługi telefonicznej umożliwiającej przekaz głosu właśnie w tej technologii, słuchaliśmy analogowych stacji radio- wych w paśmie FM i chodziliśmy do biblioteki, aby przeglądać udostępnione w niej wolumeny w poszukiwaniu informacji. Projekty budynków rysowane były odręcznie; narzędziem pracy grafika był pisak, pędzel i atrament; muzycy szarpali struny i dmuchali w rogi, nagrywając wszystko na taśmie analogowej; sterowanie lotem samolotu możliwe zaś było dzięki połączeniu za pomocą kabli wolantu z powierzchniami sterowymi samolotu. Teraz jednak żyjemy w skomputeryzowanym, cyfrowym świecie. W związku z tym każdy z nas musi umieć korzystać z komputera. Nie chodzi tu o bycie ekspertem w tym zakresie, jednak podobnie jak poeci powinni posiadać podsta- wową wiedzę z dziedziny matematyki i fizyki, a matematycy choć na chwilę przenieść się do świata poezji, tak wszyscy w dzisiejszych czasach muszą znać przynajmniej podstawy obsługi komputera. Myślę, że ta książka świetnie wypełni lukę w wiedzy pomiędzy znawcami nowych technologii a laikami w tym zakresie, prezentując w sposób łatwy i przystępny informacje na temat SQL — podstawowego języka do wykonywania operacji na danych w bazie danych. — Richard Hipp, twórca SQLite
8 Przedmowa
9 Wstęp Aby móc jeździć samochodem, nie jest potrzebna wiedza na temat tego, jak działa jego silnik. Podobnie, celem takich technologii jak SQL jest umożliwienie Ci skupienia uwagi na rozwiązaniu problemu natury biznesowej, nie zaś na tym, jak przebiega ten proces od strony technicznej. W tej książce przedstawiono właśnie praktyczne sposoby wykorzystania języka SQL bez zagłębiania się w zbędne techniczne szczegóły dotyczące jego działania, które raczej nie okażą się przydatne w zaspokajaniu Twoich bieżących potrzeb informacyjnych. Najwięcej miejsca poświęcono na ćwiczenia praktyczne, które można wykonać na rzeczywi- stych bazach danych dostępnych do pobrania, aby na bieżąco weryfikować sposób działania poleceń. Po przeczytaniu tej książki będziesz mieć zatem praktyczną wiedzę, która pozwoli Ci pracować z bazami danych, a także wykorzystywać je do rozwiązywania problemów biznesowych. Jak korzystać z tej książki Celem tej książki jest przedstawienie podstaw języka SQL oraz elementarnej wiedzy na temat pracy z bazami danych. Czytelnicy, którzy mieli już okazję korzy- stać z arkuszy kalkulacyjnych Excela, nie powinni mieć problemów z przyswoje- niem tego materiału, jednak mimo wszystko proces ten będzie wymagał od nich pewnego nakładu pracy. Natomiast w przypadku osób, które nie pracowały dotąd w programie Excel, przyswojenie wiedzy zawartej w tej książce będzie stanowić większe wyzwanie. Znajomość takich pojęć występujących w Excelu, jak wiersz, kolumna, tabela czy wyrażenie matematyczne (np. formuła w Excelu) oraz agregacja (na przykład za pomocą funkcji SUM, AVG, MIN, MAX, COUNT), będzie na pewno bardzo przydatna. Terminy te będą używane również w tej książce, dlatego pewne doświadczenie w pracy z Excelem ułatwi ich zrozumienie.
10 Wstęp Aby możliwe było przyswojenie materiału prezentowanego w tej książce, niezbęd- na jest podstawowa wiedza dotycząca obsługi komputera. Czytelnik powinien umieć korzystać z folderów, a także kopiować pliki i je wklejać. Powinien również wiedzieć, jak pobrać pliki z internetu i jak je zapisać. Podczas czytania tej książki warto mieć dostęp do komputera, aby móc na bieżąco wykonywać zamieszczone w niej ćwiczenia. Wprawdzie niektórzy ludzie są w stanie przyswoić wiedzę, tylko studiując dany materiał, jednak w pewnych przypadkach lepiej jest zweryfikować zdobytą wiedzę w praktyce w celu jej utrwalenia. Wielokrotne powtarzanie tej samej czynności i praktyczne podejście do realizacji powierzonych zadań czyni nas biegłymi w danej dziedzinie. Z niektórych funk- cjonalności języka SQL prawdopodobnie będziesz w pracy korzystał częściej. Inne natomiast zagoszczą na ekranie Twojego monitora rzadziej. Nie ma w tym nic złego. Lepiej jest bowiem osiągnąć biegłość w wykonywaniu powierzonych Ci zadań i zaglądać do tej książki (lub szukać odpowiedzi w Google) wówczas, gdy konieczne jest uzyskanie informacji dotyczących nieznanego Ci dotąd zagadnienia. Gdy będziesz pracował, korzystając z określonych technologii, nikt nie będzie od Ciebie oczekiwał kompletnej wiedzy na ich temat. Uzyskanie jej byłoby wręcz niemożliwe z uwagi na ogromną liczbę zagadnień, jakie kryją się w tej materii. Dlatego warto skupić swoją uwagę jedynie na wybranych zagadnieniach i uzyskać wiedzę potrzebną do wykonania bieżących zadań. W przeciwnym razie próba przyswojenia wiedzy na nieistotne tematy może zakończyć się uczuciem przytłoczenia przez nadmiar wiedzy i rozproszeniem uwagi, którą należałoby raczej skoncentrować na zasadniczych kwestiach. Mam nadzieję, że ta książka będzie dla Ciebie źródłem podstawowej wiedzy na temat języka SQL, którą następ- nie będziesz mógł poszerzać, zgłębiając istotne dla Ciebie zagadnienia. Jeśli będziesz miał jakiekolwiek pytania, po prostu wyślij do mnie e-mail na adres tmnield@outlook.com, a postaram się na nie odpowiedzieć najlepiej, jak umiem. Jeśli chciałbyś dowiedzieć się czegoś na temat możliwości rozwoju swojej kariery w kontekście określonych umiejętności natury technicznej lub masz pytanie dotyczące języka SQL, może będę mógł Ci pomóc. Mam ponadto nadzieję, że ta książka nie tylko poszerzy Twoją wiedzę, umożliwiając Ci rozwój kariery, ale również rozbudzi Twoje zainteresowanie i fascynację omawianym tematem, tak jak stało się to w moim przypadku.
Korzystanie z przykładów kodu 11 Konwencje zastosowane w książce W książce stosowane są następujące konwencje typograficzne: Kursywa W ten sposób oznaczane są nowe terminy, adresy URL, adresy e-mail, nazwy i rozszerzenia plików. Kod programu Wykorzystywany w przypadku listingów, a także w akapitach, w których mowa o elementach programu, takich jak nazwy zmiennych lub funkcji, bazy danych, typy danych, zmienne środowiskowe, instrukcje czy słowa kluczowe. Pogrubiony kod programu Stosowany do wyróżnienia poleceń lub innego typu tekstu, który powinien być wpisany przez użytkownika w takiej postaci, w jakiej został podany. Wyróżniony kod programu Przy użyciu tej konwencji prezentowany jest tekst, w miejscu którego powinny pojawić się wartości podane przez użytkownika lub wartości wynikające z kontekstu. Za pomocą tego rysunku oznaczane jest ogólne spostrzeżenie na dany temat. Korzystanie z przykładów kodu Materiały dodatkowe (przykłady kodu, ćwiczenia itd.) są dostępne do pobrania pod adresem ftp://ftp.helion.pl/przyklady/pksqlp.zip. Ta książka ma Ci pomóc w należytym wykonywaniu powierzonych Ci zadań. Ogólnie rzecz biorąc, w swoich programach i przygotowywanej przez Ciebie dokumentacji możesz wykorzystać przykładowy kod zamieszczony w tej publika- cji. Nie potrzebujesz do tego naszej zgody, chyba że będziesz odtwarzał znaczną jego część. Napisanie programu, w którym będzie wykorzystane jedynie kilka fragmentów kodu zamieszczonego w tej książce, nie wymaga pozwolenia, ale sprzedaż lub dystrybucja na płycie CD dołączonych do książki przykładów już
12 Wstęp tak. Na udzielanie odpowiedzi na zadane Ci pytanie poprzez zacytowanie fragmentu książki lub przytoczenie przez Ciebie przykładowego kodu nie jest wymagana zgoda. Jeśli jednak w dokumentacji Twojego produktu chciałbyś zamieścić znaczący fragment przykładowej instrukcji z tej książki, musisz uzyskać nasze pozwolenie. Jeśli w przygotowywanym przez Ciebie materiale zamieścisz odniesienie do tej książki, będzie nam miło, jednak nie jest to wymagane. W takim odwołaniu zwykle podawane jest imię i nazwisko autora, tytuł książki, nazwa wydawnictwa i numer ISBN. Na przykład: Nield T., Pierwsze kroki z SQL. Praktyczne podejście dla po- czątkujących Wydawnictwo Helion, Gliwice 2017, ISBN 978-83-283-2818-1. Jeśli uważasz, że zakres wykorzystanych przez Ciebie przykładów kodu wykracza poza dozwolony użytek lub uzyskane pozwolenie, o którym mowa powyżej, skontaktuj się z nami, pisząc na adres permissions@oreilly.com. Jak się z nami skontaktować Wszelkie uwagi i pytania dotyczące tej książki prosimy kierować do wydawcy: Grupa Wydawnicza Helion S.A. ul. Kościuszki 1c 44-100 Gliwice tel. 032 230 98 63 fax. 032 230 98 63 wew. 110 Na stronie internetowej http://helion.pl/ksiazki/ znajdują się podstawowe infor- macje o książce, errata, fragmenty publikacji i pozostałe informacje. Uwagi i pytania techniczne dotyczące książki prosimy kierować na adres helion@helion.pl. Aby uzyskać więcej informacji o książkach wydawanych przez wydawnictwo Helion, a także o kursach, konferencjach i nowościach, odwiedź naszą stronę internetową pod adresem http://www.helion.pl. Odwiedź nasz profil na Facebooku: http://www.facebook.com/HelionPL Znajdź nas na Twitterze: https://twitter.com/helionpl
Podziękowania 13 Podziękowania Jestem prawdziwym szczęściarzem, gdyż otaczają mnie niesamowici ludzie i mam świadomość, jak ważną rolę odgrywają w moim życiu, wspierając mnie we wszystkim, co robię. Gdyby nie oni, ta książka prawdopodobnie by nie powstała. Przede wszystkim chciałbym podziękować mamie i tacie. Zrobili wszystko, aby zapewnić mi jak najlepszą przyszłość. Jestem pewien, że nie miałbym obecnie takich perspektyw, gdyby nie oni. Mój tata ciężko pracował, abyśmy ja i moi bracia byli dobrze wykształceni. Moja mama natomiast zawsze motywowała mnie do dalszej pracy, nawet kiedy stawiałem opór. Nauczyła mnie nigdy nie spoczywać na laurach i zawsze starać się przełamywać własne granice. Nie jestem w stanie wyrazić, jak bardzo jestem wdzięczny moim liderom, mene- dżerom i współpracownikom z Southwest Airlines Revenue Management. Zarów- no Justin Jones, jak i Timothy Keeney mają w sobie rzadko spotykanego ducha prawdziwego wojownika i zapał do tworzenia innowacji. Obaj posiadają cechy idealnego przywódcy i doskonale uosabiają wartości Southwest Airlines, a co najistotniejsze, są po prostu dobrymi ludźmi. Na zawsze pozostaną moimi przyja- ciółmi. Sprawili, że trudno jest mi wyobrazić sobie życie poza Southwest Airlines. Robert Haun, Brice Taylor i Allison Russell nieustannie pracują, aby nasz zespół był liderem innowacji i wciąż realizował coraz to nowe pomysły. Czuję się wyróż- niony, że mogę pracować w otoczeniu, które pomogli stworzyć. Muszę też po- dziękować Mattowi Louisowi za przyjęcie mnie do zespołu Revenue Management oraz Stevenowi Barsalou, dzięki któremu zdałem sobie sprawę ze swojej niewie- dzy na temat języka SQL. Steven był pierwszą osobą, która przyszła mi na myśl, gdy zacząłem zastanawiać się nad tym, kto mógłby zostać recenzentem tej książki. Jestem mu wdzięczny za to, że zdecydował się wziąć udział w tym projekcie. Nie sposób pominąć w tym miejscu zespołu projektowego, z którym na co dzień pracuję. W jego skład wchodzą: Brian Denholm, Paula Zigler, Bridget Green, Todd Randolph i Chris Solomon. Nasze wspólne dokonania nigdy nie przestaną mnie zadziwiać. Brian jest kierownikiem projektu, który potrafi dosko- nale posługiwać się zarówno żargonem technicznym, jak i językiem biznesu. Ponadto nigdy nie wzbrania się przed pisaniem poleceń w języku SQL i dokony- waniem sporadycznych przeglądów kodu. Specjalne podziękowania za wspie- ranie mnie w codziennej pracy kieruję do Chrisa Solomona. Ma on nie tylko rzadko spotykany talent do przyswajania dużych ilości wiedzy technicznej i konfrontowania jej z ujęciem biznesowym, ale jest również fajnym facetem, a ja
14 Wstęp mam zaszczyt być jego przyjacielem. Chris zawsze odgrywa kluczową rolę w każ- dym projekcie, dlatego byłem podekscytowany tym, że zgodził się zostać recen- zentem tej książki. Muszę wspomnieć również o wspaniałych ludziach, którzy pracowali w dziale czuwającym nad zgodnością reguł bezpieczeństwa operacji naziemnych z przepi- sami prawa (Ground Ops Safety Regulatory Compliance) w Southwest Airlines, a więc o Marcu Stanku, Reubenie Millerze, Mary Noel Hennes i wszystkich innych, z którymi miałem zaszczyt pracować. Kilka lat temu odbywałem w tym dziale staż, a następnie pracowałem tam na kontrakt i stamtąd właśnie pochodzi wiele moich najpiękniejszych wspomnień. Tam też odkryłem moje zamiłowanie do technologii i te właśnie osoby (gdy tylko nadarzała się taka sposobność) umożliwiały mi rozwój tej pasji, i to zarówno wtedy, gdy chodziło o zbudowanie naprędce baz danych, jak i przygotowanie prototypu aplikacji na iPada. Nie spodziewałem się, że gdy ogłoszę informację o publikacji tej książki, skon- taktuje się ze mną Richard Hipp, założyciel i twórca SQLite. Richard z chęcią podjął się roli recenzenta technicznego, co jest dla mnie ogromnym zaszczytem. Poczucie wspólnoty u osób zajmujących się technologiami nieustannie mnie zadziwia, a fakt, że Richard Hipp dołączył do tego projektu, pokazuje, jak wyjąt- kowy ma ona charakter i jak mocno jej członkowie są ze sobą związani. Redaktorem tej książki w wydawnictwie O’Reilly była Shannon Cutt. Ponieważ jest to moja pierwsza książka, nie wiedziałem, jak będzie wyglądał proces związa- ny z jej wydaniem. Dzięki Shannon okazało się to tak pozytywnym doświad- czeniem, że chętnie napisałbym kolejną książkę. Dziękuję Ci, Shannon, byłaś fantastyczna! Ostatnie, ale nie mniej ważne podziękowania kieruję w stronę Watermark Church i wolontariuszy z Careers in Motion, którzy przyczynili się do wydania tej książki. Początkowo bowiem materiał ten miał zostać udostępniony publicznie, aby pomóc bezrobotnym specjalistom z branży IT z Dallas i jego okolic. To właśnie członkowie Careers in Motion zachęcili mnie do opublikowania tej książki. Szczególne podziękowania należą się Marthie Garzie za jej upór w przekonywa- niu mnie do podjęcia tego kroku. Teraz wiem, że gdy poświęca się swój czas na pomoc innym ludziom, może się zdarzyć coś niezwykłego.
15 ROZDZIAŁ 1. Czym jest język SQL i dlaczego jest taki popularny? Nie ulega wątpliwości, że świat biznesu podlega ciągłym zmianom. Często przy- czynia się do tego zastosowanie coraz to nowszych technologii, a także ogromne ilości danych biznesowych. Przedsiębiorstwa inwestują ogromne pieniądze w sposoby i narzędzia do gromadzenia danych oraz ich przechowywania. Z punktu widzenia liderów i menedżerów różnych obszarów biznesowych tak naprawdę najistotniejsze jest wydobycie z tych danych użytecznych informacji i ich odpowiednie wykorzystanie. Do tego właśnie przydaje się znajomość języka SQL (ang. Structured Query Language — strukturalny język zapytań). Dzięki niemu uzyskują oni bowiem dostęp do danych oraz możliwość manipulowania nimi w celu uzyskania istotnych informacji i określonej wiedzy biznesowej, która dotychczas pozostawała poza ich zasięgiem. Tempo gromadzenia danych przez przedsiębiorstwa gwałtownie rośnie. Wraz ze zwiększającą się ilością danych wzrasta zapotrzebowanie na ludzi, którzy wiedzą, jak je analizować i jak nimi zarządzać. Stack Overflow, najbardziej aktyw- na społeczność zajmująca się programowaniem, jaka obecnie istnieje, w 2015 roku przeprowadziła obszerną ankietę wśród swoich członków. Okazało się, że najbardziej pożądana przez pracodawców jest umiejętność pisania kodu dla urządzeń firmy Apple. Wynagrodzenie oferowane osobom posiadającym takie umiejętności jest niemalże sześciocyfrowe. Znajomość języka SQL uplasowała się wprawdzie dopiero na piątym miejscu, ale z niewiele niższym wynagrodze- niem. Ostatnio bowiem dane nagle stały się wszechobecne — mimo to niewiele osób posiada odpowiednią wiedzę, aby wydobyć z nich wartościowe informacje. Dlatego umiejętność posługiwania się językiem SQL stała się bardzo pożądana.
16 Rozdział 1. Czym jest język SQL i dlaczego jest taki popularny? Kto powinien znać język SQL? Należy zacząć od tego, że język SQL jest niekiedy błędnie postrzegany jako umie- jętność wymagająca wiedzy z dziedziny IT, dlatego jest on domeną ekspertów wyłącznie z tej branży (nie związanych z biznesem). Obecnie mało kto jest takiego zdania. Zarówno biznesmeni, menedżerowie, specjaliści z dziedziny IT, jak i inżynierowie mogą czerpać korzyści z nabytych kompetencji związanych z posłu- giwaniem się tym językiem. Pozwolą im one poszerzyć perspektywy rozwoju kariery, dając możliwość wyboru wielu różnych ścieżek rozwoju. Znajomość tego języka umożliwia bowiem wydobycie odpowiednich danych, co z kolei prowadzi do lepszego rozumienia dziedziny będącej przedmiotem naszego zainteresowa- nia. Od strony biznesowej potencjalne ścieżki kariery osób znających język SQL obejmują stanowiska analityczne, kierownicze, a także te związane z zarządza- niem strategicznym, badaniami i realizacją projektów. Z kolei w branży IT taka wiedza umożliwi podjęcie pracy w obszarze projektowania baz danych, ad- ministrowania nimi, a także w zakresie inżynierii systemów, zarządzania projek- tami IT, a nawet rozwoju oprogramowania.
17 ROZDZIAŁ 2. Bazy danych Czym jest baza danych? Najszerzej rzecz ujmując, baza danych to miejsce, w którym dane są gromadzone i porządkowane. Bazą danych jest zarówno arkusz kalkulacyjny zawierający informacje o rezerwacjach klientów, jak i zwykły plik tekstowy z rozkładem lotów. Plik taki może być zapisywany w różnych formatach, takich jak na przy- kład XML czy CSV. Gdy eksperci branży IT używają pojęcia baza danych, zazwyczaj mają na myśli system zarządzania relacyjną bazą danych (ang. Relational Database Management System — RDBMS). Określenie to może brzmieć dość technicznie i wzbudzać pewien niepokój, jednak system zarządzania bazą danych to nic innego jak pewnego rodzaju baza danych, zawierająca jedną lub wiele tabel, które mogą być ze sobą powiązane. Podstawoweinformacjeorelacyjnych bazach danych Na pewno wiesz, jak wygląda tabela. Składa się z kolumn i wierszy, w których przechowywane są dane, podobnie jak ma to miejsce w arkuszu kalkulacyjnym. Tabele mogą być ze sobą powiązane. Może na przykład istnieć relacja między tabelą CUSTOMER_ORDER1 a tabelą CUSTOMER, do której się ona odwołuje w celu uzyskania informacji o samych klientach. 1 Tabela o nazwie CUSTOMER_ORDER w przykładowej bazie danych, do której będzie nawiązywać większość przykładów zawartych w tej książce, przechowuje informacje o zamówieniach klientów — przyp. tłum.
18 Rozdział 2. Bazy danych Powiedzmy zatem, że mamy do dyspozycji tabelę CUSTOMER_ORDER, w której znajduje się pole o nazwie CUSTOMER_ID, jak pokazano na rysunku 2.1. Rysunek 2.1. Tabela CUSTOMER_ORDER, zawierająca kolumnę CUSTOMER_ID W naszej bazie danych znajduje się zapewne także inna tabela, prawdopodobnie o nazwie CUSTOMER, przedstawiona na rysunku 2.2. Zawiera ona przypuszczalnie szczegółowe informacje o każdym kliencie, do którego przypisana jest odpowied- nia wartość w kolumnie CUSTOMER_ID. Rysunek 2.2. Tabela CUSTOMER Mając do dyspozycji pole CUSTOMER_ID w tabeli CUSTOMER_ORDER , możemy poszu- kać informacji o klientach zamieszczonych w tabeli CUSTOMER. Taka właśnie jest podstawowa zasada działania relacyjnej bazy danych. W przypadku tego rodzaju bazy danych w tabelach mogą znajdować się pola, które wskazują na informacje zawarte w innych tabelach. Taki sposób działania prawdopodobnie nie jest Ci obcy, jeśli korzystałeś już z funkcji Excela WYSZUKAJ.PIONOWO w celu wyświetlenia w danym arkuszu informacji, które pochodzą z innego arkusza w skoroszycie. Dlaczego konieczne jest stosowanie oddzielnych tabel? Można zadać sobie następujące pytanie: „Dlaczego dane w relacyjnej bazie danych są przechowywane w oddzielnych tabelach skonstruowanych w taki właśnie sposób?”. Odpowiedzią na nie jest normalizacja, zgodnie z którą różne rodzaje danych należy umieszczać w oddzielnych tabelach, nie zaś składować je wszystkie
Wybór odpowiedniej bazy danych 19 w jednym miejscu. Gdybyśmy przechowywali wszystkie informacje w jednej tabeli, dane by się powtarzały, byłoby ich zbyt wiele, a ich utrzymanie byłoby bardzo trudne. Wyobraźmy sobie, że wszystkie informacje o klientach znajdują się w tabeli CUSTOMER_ORDER, przedstawionej na rysunku 2.3. Rysunek 2.3. Tabela CUSTOMER_ORDER zawierająca nieznormalizowane dane Zauważ, że w przypadku zamówień złożonych przez firmę Re-Barre Construc- tion konieczne było powielenie informacji o tym kliencie w trzech oddzielnych wierszach (powtórzona została nazwa klienta, region, adres, miasto, stan i kod pocztowy) — po jednym dla każdego zamówienia. Są one zatem nadmiarowe, niepotrzebnie zabierają miejsce na dysku i są trudne w utrzymaniu. Dlaczego? Wyobraź sobie, że klient zmienił adres. W takim przypadku w powyższej tabeli konieczne by było zmodyfikowanie informacji o wszystkich trzech zamówieniach. Dlatego właśnie lepiej jest przechowywać informacje o klientach i ich zamówie- niach w dwóch oddzielnych tabelach: CUSTOMER i CUSTOMER_ORDER. Wówczas zmiana adresu klienta będzie skutkowała modyfikacją tylko jednego rekordu w tabeli CUSTOMER, jak pokazano na rysunku 2.4. Rysunek 2.4. Tabela zawierająca znormalizowane dane W rozdziale 8. przyjrzymy się rodzajom złączeń między tabelami i wykorzystaniu do tego celu operatora JOIN. Operator ten umożliwia wyświetlenie danych z dwóch tabel za pomocą jednego zapytania, a więc na przykład przejrzenie listy klientów wraz z zamówieniami, które złożyli. Wybór odpowiedniej bazy danych Korzystanie z relacyjnych baz danych i języka SQL nie jest w żaden sposób ogra- niczone. Należy mieć jednak na uwadze fakt, że istnieje kilka firm i społeczności,
20 Rozdział 2. Bazy danych które opracowały własne programy do zarządzania relacyjną bazą danych. W każ- dym z nich wykorzystywane są tabele, które są odpytywane za pomocą języka SQL. Niektóre z tych rozwiązań bazodanowych są lekkie (ang. lightweight) i pro- ste w użyciu. Dane są wówczas przechowywane w pojedynczym pliku i dostęp do nich ma niewielu użytkowników. Inne rozwiązania są natomiast bardziej rozbu- dowane i do działania potrzebują serwera. W takim przypadku z danych korzy- stają jednocześnie tysiące użytkowników i aplikacji. Są również dostępne za- równo darmowe rozwiązania bazodanowe typu open source, jak i takie, do korzystania z których wymagane jest zakupienie licencji komercyjnych. Ze względów praktycznych podzielimy zatem rozwiązania bazodanowe na dwie kategorie: lekkie i scentralizowane (ang. centralized). Chociaż w branży IT taka nomenklatura nie jest zbyt często stosowana, to wyodrębnienie tych dwóch rodza- jów baz danych pomoże w objaśnieniu różnic występujących między nimi. Lekkie bazy danych Jeśli szukasz prostego rozwiązania, z którego korzystać będzie jeden lub zaled- wie kilku użytkowników (np. Twoi współpracownicy), zacznij od gromadzenia danych w lekkiej bazie danych. Tego typu bazy nie wymagają bowiem dodatko- wych nakładów w postaci serwera. Są również bardzo elastyczne. Dane są z reguły przechowywane w pliku, który można współdzielić z innymi osobami. To jednak stwarza niebezpieczeństwo, że w przypadku wykonywania w pliku zmian jedno- cześnie przez kilku użytkowników, przechowywane w nim dane utracą spójność. Jeśli zatem przyjdzie Ci się zmierzyć z tym problemem, będzie to oznaczać, że czas rozważyć migrację danych do scentralizowanej bazy danych. Najczęściej wykorzystywane lekkie bazy danych to SQLite oraz Microsoft Access. W tej książce będziemy korzystać z SQLite. Jest to darmowa, lekka baza danych, której obsługa jest bardzo intuicyjna. Jest ona wykorzystywana w większości urządzeń, z którymi mamy styczność na co dzień. Jest elementem oprogramo- wania smartfonów, satelitów, samolotów i systemów samochodowych. Ma prak- tycznie nieograniczoną pojemność i jest idealnym rozwiązaniem w przypadku urządzeń, z których korzysta więcej niż jedna osoba (lub co najwyżej kilka osób). Ze względu na łatwość instalacji tej bazy danych oraz jej prostotę SQLite jest również idealnym środowiskiem do nauki języka SQL. Microsoft Access jest dostępny na rynku już od jakiegoś czasu, jednak w kon- tekście skalowalności i wydajności ustępuje on miejsca SQLite. Access jest jednak narzędziem często wykorzystywanym w środowiskach biznesowych, dlatego
Wybór odpowiedniej bazy danych 21 warto je znać. Daje ono możliwość pisania zapytań bez użycia języka SQL dzięki przystosowanym do tego celu narzędziom wizualnym, a także projektowania bazy danych za pomocą interfejsu graficznego lub tworzenia makr. Wiele firm poszukuje osób do obsługi baz danych Microsoft Access oraz ich utrzymywania lub też wykonywania migracji danych do bardziej pożądanych platform bazoda- nowych, takich jak MySQL. Scentralizowane bazy danych Jeśli z bazy danych korzystać będą jednocześnie dziesiątki, setki, a nawet tysiące użytkowników i aplikacji, lekkie bazy danych nie poradzą sobie z taką ilością zapytań. Potrzebna będzie scentralizowana baza danych, która wymaga serwera i jest w stanie sprawnie obsłużyć dużą liczbę poleceń. Obecnie na rynku jest dostęp- nych wiele różnego typu rozwiązań scentralizowanych baz danych, np.: MySQL, Microsoft SQL Server, Oracle, PostgreSQL, Teradata, IBM DB2, MariaDB. Niektóre z tych rozwiązań możesz zainstalować na każdego rodzaju komputerze, aby następnie przekształcić go w serwer. Następnie możesz podłączyć do niego komputery użytkowników, tzw. klienty (ang. clients), aby mogli oni korzystać z zamieszczonej na nim bazy danych. Klient może wysłać zapytanie SQL, żądając konkretnych danych. Zadaniem serwera jest przetworzenie tego żądania i zwró- cenie odpowiedzi. Jest to klasyczna konfiguracja klient-serwer. Klient wysyła żądanie pewnych danych, a serwer w odpowiedzi je zwraca. Istnieje wprawdzie możliwość przekształcenia w serwer bazy danych MySQL dowolnego komputera, takiego jak MacBook lub tani pecet, jednak większe natę- żenie ruchu w wymianie danych pomiędzy klientami a serwerem wymaga zasto- sowania bardziej specjalistycznych komputerów, określanych mianem kompute- rów-serwerów (ang. server computers). Są one przystosowane do wykonywania zadań dedykowanych właśnie dla serwerów. Tego typu urządzenia są zazwyczaj utrzymywane przez dział IT. Jego pracownicy zajmują się administrowaniem
22 Rozdział 2. Bazy danych bazami danych, których prawidłowe działanie zostało uznane za kluczowe dla funkcjonowania przedsiębiorstwa, oraz je nadzorują. Czasami terminu SQL używa się błędnie w odniesieniu do nazw platform bazodanowych, takich jak MySQL, Microsoft SQL Server lub SQLite, podczas gdy SQL jest uniwersalnym językiem służącym do pracy z danymi umieszczonymi na tych platfor- mach. Słowo SQL zostało użyte w ich nazwach jedynie dla celów marketingowych. Jako nowy pracownik będziesz musiał poprosić o dostęp do potrzebnych Ci informacji, znajdujących się w scentralizowanej bazie danych, która prawdopo- dobnie będzie istnieć w firmie, do której dołączasz. Chociaż w tej książce nie będziemy poruszać tematów związanych z tego rodzaju bazą danych, to jednak omawiane w niej tematy w dużej mierze pokrywają się z zagadnieniami dotyczą- cymi scentralizowanej bazy danych. W przypadku wszystkich rozwiązań bazoda- nowych do wyświetlania wybranych informacji z tabel język SQL wykorzystywa- ny jest w analogiczny sposób. Także edytory, za pomocą których możliwe jest odpytywanie bazy danych za pomocą tego języka, różnią się od siebie tylko w niewielkim stopniu. Zdarza się jednak, że w poszczególnych rozwiązaniach dostępnych na rynku składnia niektórych instrukcji w języku SQL nie jest taka sama, jak na przykład ma to miejsce w odniesieniu do funkcji związanych z datami. Należy jednak zaznaczyć, że elementy tego języka zaprezentowane w niniejszej publikacji należy traktować jako powszechnie stosowane. Jeśli więc kiedykolwiek staniesz przed wyzwaniem zbudowania scentralizowanej bazy danych, z czystym sumieniem poleciłbym Ci MySQL. Jest to rozwiązanie typu open source, z którego można swobodnie korzystać, a jego instalacja i konfi- guracja są bardzo proste. Korzysta z niego Facebook, Google, eBay, Twitter i setki innych firm z Doliny Krzemowej. Teraz, gdy poznałeś już podstawy organizacji baz danych, możemy przejść do nauki korzystania z ich dobrodziejstw. W tej książce będziemy posługiwać się systemem zarządzania bazą danych SQLite. Rodzaj systemu nie ma jednak większego znaczenia, gdyż zastosowanie języka SQL w przypadku innych tego rodzaju rozwiązań jest analogiczne. Dlatego też wszystko to, czego się dowiesz, czytając tę książkę, będziesz mógł zastosować do wszystkich innych platform bazodanowych.
23 ROZDZIAŁ 3. SQLite Czym jest SQLite? Jak wspomniano w poprzednim rozdziale, dane można gromadzić w różnego rodzaju bazach danych. Często jednak potrzebne jest nam szybkie i łatwe rozwią- zanie, bez konieczności mozolnego budowania architektury klient-serwer. Chcemy bowiem przechowywać dane w prostym pliku i edytować je równie łatwo jak w przypadku dokumentu tekstowego, takiego jak w programie Word. W takich przypadkach najbardziej optymalne jest użycie właśnie SQLite. SQLite jest najczęściej wykorzystywanym na świecie systemem zarządzania bazą danych. Został zastosowany w iPhonach, iPadach, w urządzeniach z systemem operacyjnym Android i Windows Mobile. Znajdziesz go również w termostatach, a także w samochodowych systemach komputerowych. Jest też wykorzystywany w satelitach i w wielu innych nowoczesnych urządzeniach, w przypadku których konieczne jest przechowywanie danych i proste ich przeszukiwanie. Z SQLite ko- rzysta w dużym stopniu zarówno system operacyjny Windows 10, jak i system samolotu Airbus A350 XWB. Jest on więc stosowany wszędzie tam, gdzie istotna jest łatwość korzystania z niego oraz niskie koszty stałe. Jest również doskonały do przygotowywania prototypów baz danych dla przedsiębiorstw. Jednak coś za coś — z uwagi na brak serwera zarządzającego dostępem do bazy danych SQLite nie może być jednocześnie wykorzystywany przez wielu użytkow- ników. Nie jest bowiem możliwe edytowanie tego samego pliku przez wiele osób w tym samym czasie. Ten system zarządzania bazą danych nadaje się nato- miast świetnie do celów szkoleniowych.
24 Rozdział 3. SQLite SQLiteStudio Istnieje wiele edytorów służących do odpytywania bazy danych SQLite za pomocą języka SQL. Gorąco polecam narzędzie SQLiteStudio, ponieważ jest ono bardzo intuicyjne i umożliwia łatwe wyszukiwanie danych w bazie danych oraz zarzą- dzanie nią. W tej książce będziemy korzystali właśnie z tej aplikacji. Można ją pobrać ze strony http://sqlitestudio.pl/?act=download, wybierając odpowiedni system operacyjny — Windows, Mac lub Linux. Następnie należy otworzyć pobrany folder i skopiować jego zawartość do wybranej lokalizacji. Nie musisz niczego instalować. Aby rozpocząć pracę z SQLiteStudio, wystarczy kliknąć dwukrotnie plik SQLiteStudio.exe, pokazany na rysunku 3.1. Można również utworzyć skrót na pulpicie, aby w przyszłości móc szybciej uruchamiać pobraną aplikację. Rysunek 3.1. Folder SQLiteStudio z plikiem SQLiteStudio.exe Warto zaznaczyć, że SQLiteStudio to nie jest dzieło twórców SQLite. Jest to nie- zależny program utworzony przez inne osoby. SQLite to silnik bazy danych zbudowany przez Richarda Hippa i utalentowany zespół programistów, zaś
Dodawanie bazy danych i podgląd jej zawartości 25 SQLiteStudio jest interfejsem użytkownika. Jeśli więc napotkasz jakieś problemy podczas korzystania z SQLiteStudio, powinieneś skontaktować się z zespołem jego twórców, nie zaś z autorami SQLite. Dodawanie bazy danych i podgląd jej zawartości Po pierwszym uruchomieniu SQLiteStudio prawdopodobnie ujrzysz pusty pulpit tego narzędzia, taki jak na rysunku 3.2. Dopiero gdy będziesz miał już dodaną bazę danych, w panelu po lewej stronie zobaczysz jej elementy. W szarym obsza- rze po prawej stronie będziesz natomiast mógł zapisywać instrukcje SQL, dzięki którym wyświetlisz wybrane informacje pochodzące z tej właśnie bazy. Rysunek 3.2. Pulpit narzędzia SQLiteStudio Dodajmy teraz do SQLiteStudio kilka baz danych, które znajdziesz pod adresem ftp://ftp.helion.pl/przyklady/pksqlp.zip. Z nich właśnie będziemy korzystali w tej książce. Kliknij powyższy link, rozpakuj plik i zapisz jego zawartość w wybranym folderze. Prawdopodobnie będziesz chciał w nim przechowywać także inne bazy danych używane przez Ciebie podczas pracy z tą książką.
26 Rozdział 3. SQLite Gdy już pobierzesz pliki z bazami danych, przejdź do SQLiteStudio i w menu u góry kliknij przycisk Baza danych, a następnie wybierz opcję Dodaj bazę danych, jak pokazano na rysunku 3.3. Rysunek 3.3. Dodawanie bazy danych Wyświetli się okno dialogowe z komunikatem, w którym zostaniesz poproszony o wskazanie pliku bazy danych. Aby wybrać stosowny plik i wykonać jego import, kliknij ikonę z żółtym folderem, widoczną na rysunku 3.4. Rysunek 3.4. Otwieranie lokalizacji z bazą danych