dareks_

  • Dokumenty2 821
  • Odsłony748 346
  • Obserwuję429
  • Rozmiar dokumentów32.8 GB
  • Ilość pobrań360 084

Nield T. - Pierwsze kroki z SQL. Praktyczne podejście dla początkujących

Dodano: 6 lata temu

Informacje o dokumencie

Dodano: 6 lata temu
Rozmiar :4.0 MB
Rozszerzenie:pdf

Nield T. - Pierwsze kroki z SQL. Praktyczne podejście dla początkujących.pdf

dareks_ EBooki Infornatyka
Użytkownik dareks_ wgrał ten materiał 6 lata temu.

Komentarze i opinie (0)

Transkrypt ( 25 z dostępnych 141 stron)

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