(Helion) Podstawy SQL ćwiczenia - Arkadiusz Jakubowski [2001].doc

(6044 KB) Pobierz
Rozdział 1

Arkadiusz Jakubowski – Podstawy SQL – ćwiczenia praktyczne

___________________________________________________________________________________________________

Rozdział 1. Jak korzystać z ćwiczeń

Ćwiczenia te są kierowane do osób, które chcą się nauczyć języka SQL i mam nadzieję,
że w znacznym stopniu okażą się one pomocne. Do nauki języka SQL potrzebny jest jego interpreter, czyli baza danych. Do studiowania języka SQL zostały wykorzystane:

baza danych InterBase firmy Inprise (Borland) oraz baza danych DB2 firmy IBM.

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

Oba systemy bazy, jak już wspomniałem są dostępne w Internecie za darmo. Na pewno większość
z czytelników wybierze InterBase'a z powodów objętości wersji instalacyj­nej. Prawdą jest, że DB2 firmy IBM posiada więcej możliwości, ale jeśli chodzi o za­kres interpretowanego języka SQL oba systemy są sobie równe. Dla osób nie posiadających łącza do Internetu o większej niż przeciętna przepustowości, InterBase będzie lepszym wyborem.

Dlaczego nie MS Access

Nie chcę umniejszać możliwościom MS Access. W pewnych zastosowaniach, jest to w pełni funkcjonalny i wystarczający system bazy danych. MS Access został szczelnie obudowany pomocniczymi narzędziami, które ułatwiają zarządzanie danymi oraz uła­twiają zarządzanie samym systemem bazy MS Access. Pomimo ze istnieje możliwość „rozmowy" z MS Access za pomocą języka SQL, jest ona niewygodna do tego stopnia, że staje się nieprzyjemna
i zniechęcająca.

Studiowanie ćwiczeń z InterBase

Aby móc pracować z InterBase, musimy go najpierw zainstalować. Instalacja InterBase została opisana w rozdziale 13. Tam również znajdziemy informacje o miejscu skąd można skopiować wersję instalacyjną. Serwer bazy danych InterBase dostępny jest również z większością produktów, narzędzi programistycznych firmy Inprise (Borland), min: Delphi, JBuilder, C++ Builder. W rozdziale 13. znajduje się również opis narzędzi InterBase, które umożliwiają na pracę z bazą danych i które oczywiście umożliwią wy­konywanie ćwiczeń. Przed rozpoczęciem studiowania ćwiczeń, ale już po zainstalowa­niu InterBase należy:

1. Stworzyć bazę WYPAUT. Informacje o tym, jak to zrobić znajdziemy w sekcji „Tworzenie bazy danych w Interbase" w rozdziale 13.

2. Po stworzeniu bazy WYPAUT musimy uruchomić skrypty tworzące i wypełniające danymi tabele w bazie WYPAUT. Skrypty te można skopiować z serwera ftp wydawnictwa Helion (ftp://ftp.helion.com.pl/przyklady/cwsql.zip - znajdziesz skrypty dla DB2 i InterBase'a). Skrypty te znajdują się również na końcu tych ćwiczeń. Zostały one jednak opublikowane dla DB2. Informacje o tym, jak je do­stosować dla InterBase'a znajdziesz w rozdziale 14. w sekcji „Skrypty tworzące strukturę bazy WYPAUT".

3. Po zainstalowaniu InterBase'a oraz stworzeniu bazy WYPAUT i jej struktury jeste­śmy gotowi do pracy z ćwiczeniami, które polegają na wykonywaniu poleceń SQL.

 

 

Studiowanie ćwiczeń z DB2

Poniżej zamieszone informacje pozwolą nam na usystematyzowanie czynności, jakie musimy wykonać, aby móc swobodnie korzystać z ćwiczeń, pracując z systemem DB2. Należy przejść przez następujące kroki:

1. Musimy zainstalować DB2. Zostało to opisane w rozdziale 10. W tym rozdziale znajdziemy również informacje o tym, skąd zdobyć kopię instalacji DB2 w wersji 7.1 Personal Edition.

2. Następnie musimy uruchomić menedżera DB2. Do tego celu służy polecenie db2start, które należy wydać w wierszu poleceń systemu operacyjnego lub z po­ziomu menu Start | Uruchom. W wersji DB2 dla Windows 95 lub 98 menedżer DB2 startuje automatycznie. W Windows NT również może okazać się to niekoniecz­ne, gdy podczas instalacji DB2 wyraźnie zaznaczymy, że menedżer DB2 ma star­tować automatycznie podczas startu systemu operacyjnego. Jeżeli posiadamy system Windows NT, możemy użyć narzędzia Usługi z Panelu sterowania. Tam rów­nież możemy uruchomić menedżera DB2.

3. Po upewnieniu się, że menedżer DB2 został uruchomiony, tworzymy bazę danych WYPAUT
w aplikacji Command Linę Processor. Opis procesu tworzenia bazy WYPAUT znajduje się
w rozdziale 12. Narzędzia DB2 w sekcji „Tworzenie bazy" opisującej narzędzie Command Linę Processor.

4. Teraz musimy dokonać pewnych ustawień w narzędziu Tools Settings. Musimy określić znak średnika jako znak oddzielający poszczególne wyrażenia SQL wprowadzane m.in. w aplikacji Command Center oraz w skryptach tworzących strukturę bazy danych. Więcej informacji na temat tych ustawień znajdziesz w rozdziale 12. „Narzędzia DB2" w sekcji „Ustawienia narzędzi DB2".

5. Po stworzeniu bazy WYPAUT i ustaleniu znaku średnika jako znaku oddzielającego poszczególne zapytania w skrypcie, musimy uruchomić skrypty tworzące i wypełnia­jące danymi tabele w bazie WYPAUT. Skrypty te można skopiować z serwera ftp://ftp.helion.com.pl/przyklady/cwsql.zip. Skrypty te znajdują się również na końcu tych ćwiczeń. Jeżeli nie mamy dostępu do Intemetu, należy skrypty przepisać do pli­ków, a następnie je uruchomić. Wykonywanie skryptów zostało opisane w rozdziale 12. „Narzędzia DB2" w sekcji opisującej narzędzie Command Center.

6. Po wykonaniu powyższych zadań jesteśmy gotowi do pracy z ćwiczeniami, które polegają na wykonywaniu poleceń SQL.

Zapraszam do ćwiczeń

Uff. Mam nadzieję, że wszyscy przebrną przez powyższe i będą się czuć swobodnie podczas studiowania tych ćwiczeń. Równie dobrze można zacząć od poznania systemu, jak i narzędzi wchodzących w skład systemu DB2 lub InterBase. Po zapoznaniu się z nimi i nabraniu pewnej wprawy w posługiwaniu się nimi, możemy przejść do realiza­cji zadań wypunktowanych powyżej.

Życzę miłej lektury Autor

89

 


Rozdział 2. Koncepcja bazy danych

W tym rozdziale przedstawiona zostanie koncepcja bazy danych, jej podstawowe ele­menty składowe jak tabele i widoki. Omówione zostaną również typy danych, definio­wanie tabel oraz rola
i zastosowanie języka SQL w relacyjnych bazach danych.

Tradycyjne bazy danych

W czasie kiedy komputery nie były wykorzystywane tak powszechnie jak dzisiaj,
in­formacje były gromadzone na papierze.

Pracownik firmy musiał ręcznie organizować dane. Zapisywał je, wyszukiwał, aktuali­zował itd. Dzisiaj, oprócz operacji, które musi wykonać ręcznie, pozostałe wykonuje za pomocą funkcji, które dostarcza relacyjny system bazy danych.

Rys.2.1.

 

 

Relacyjny system bazy danych

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

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

Rys.2.2.

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

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

§           l osoba potrzebująca danych np. przełożony prosi drugą osobę o pewne dane;

§         pracownik po otrzymaniu polecenia szuka informacji wśród dokumentów, które zostały złożone albo w archiwum lub w po prostu w szafie;

§         pracownik po zebraniu pewnej ilości segregatorów z danego okresu przegląda je, a następnie przygotowuje zbiorczy dokument zawierający żądane informacje;

§         l po wydobyciu danych i zorganizowaniu ich do odpowiedniej formy wysyła je do przełożonego.

Czas wykonania tych operacji jest różny i zależy od wielkości organizacji, jej struktury, ilości potrzebnych danych oraz od pracowitości osób je zbierających.

 

Rys.2.3

W systemie relacyjnej bazy danych wszystkie powyższe operacje sprowadzają się do sformułowania tego samego pytania o dane ale w formie zrozumiałej dla komputera, a ściślej mówiąc, w formie zrozumiałej dla systemu bazy danych.

Cała operacja wydobywania danych trwa w tym przypadku znacznie krócej. Jakość tych danych jest przy tym lepsza.

Mamy więcej pewności, że dane są prawdziwe, że ktoś się nie pomylił lub pominął pewną część danych przy zestawianiu żądanych informacji.

Rys.2.4.

SQL - Strukturalny język zapytań

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

§         język definiowania struktur danych - DDL (Data Definition Language);

§         R język do wybierania i manipulowania danymi - DML (Data Manipulation Language);

§         l język do zapewniania bezpieczeństwa dostępu do danych - DCL (Data Control Language).

 

Rys.2.5.

 

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

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

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

Tabela

Tabela składa się z wierszy i kolumn. Wiersze w tabeli są przechowywane w dowolnym po­rządku. Dla każdego wiersza każda z kolumn posiada jedno pole z wartością. Wszystkie wartości w kolumnie są tego samego typu.

Rys.2.6.

 

 

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

Ćwiczenia te maja przede wszystkim na celu nauczenie języka SQL. Teraz wystarczy tylko wiedzieć, że sposób przechowywania tabel zależy od implementacji systemu rela­cyjnej bazy danych.

Konstrukcja nazwy tabeli

Nazwa tabeli składa się z dwóch części. Pierwsza część to kwalifikator, a druga z kolei to nazwa tabeli. Kwalifikator i nazwa tabeli oddzielone są kropka. Każda tabela musi mieć unikatową nazwę
w granicach kwalifikatora.

Rys.2.7.

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

 

 

SELECT * PROM KLIENCI . . .

w systemie DB2

SELECT * FROM DB2ADMIN.KLIENCI

Typy danych

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

Tabela 2.1. numeryczne typy danych

Typ danych

Opis

SMALLINT

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

INTEGER

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

DECIMAL (m,n)

liczby rzeczywiste, gdzie m oznacza całkowitą liczbę cyfr, a n oznacza liczbę cyfr po przecinku

 

Tabela 2.2. znakowae typy danych

Typ danych

Opis

CHAR (n)

typ znakowy o stałej długości (max. 255 znaków)

VARCHAR (n)

typ znakowy o zmiennej długości

 

Tabela 2.3.typy danych daty i czasu

Typ danych

Opis

DATE

typ daty (występują różne standardy zapisywania daty)

TIME

typ czasu (występują różne standardy zapisywania czasu)

 

Tworzenie tabeli - CREATE TABLE

Tworzenie tabeli polega na definiowaniu jej kolumn. Dla każdej kolumny należy okre­ślić nazwę kolumny, typ danych i długość (w zależności od typu) oraz to, czy jest do­zwolone pozostawienie wartości pustej w kolumnie.

CREATE TABLE UZYTKOWNIK.PRACOWNICY (

ID_PRACOW               CHAR(6)NOT NULL,

IMIE                      VARCHAR(18)NOT NULL,

NAZWISKO                  VARCHAR(24) NOT NULL,

STANOWISKO                VARCHAR(12)NOT NULL,

DZIAL                     VARCHAR(12) NOT NULL,

DATA_URODZ              DATE,

TELEFON_DOM              CHAR(12));

Wartość pusta NULL

Wartość null jest to wartość nieokreślona, która może zostać użyta w każdym polu ta­beli niezależnie od typu kolumny. Wartość null jest różna od zera lub spacji.

W tabeli na rysunku 2.8 osobom, które nie posiadają firmy, w kolumnach: FIRMA oraz NIP przypisano wartość mull.

 

Rys.2.8.

Przy konstruowaniu tabeli poleceniem create table w poprzedniej sekcji określiliśmy dla pewnych kolumn parametr not null. Oznacza to, że przy wstawianiu nowych wier­szy musimy określić wartości dla tych kolumn, nie mogą one być wartością null. Defini­cja kolumny w poleceniu create table pozostawiona bez klauzuli not null określa, że dozwolone jest wstawienie do tej kolumny wartości null. Istnieje jeszcze opcja o na­stępującej składni:

NOT NULL WITH DEFAULT ( (wartość)]

gdzie parametr wartość określa domyślną wartość dla kolumny. Wartość domyślna zo­stanie nadana dla kolumny automatycznie, gdy nie określimy jej wprost przy wstawia­niu nowego wiersza do tabeli.

Autoryzacja dostępu do tabeli

Możemy udostępnić nasze dane innym użytkownikom, a ściślej mówiąc możemy udo­stępnić tabele innemu użytkownikowi. W tym celu stosuje się polecenie języka SOŁ grant. Poniższy przykład nadaje uprawnienia użytkownikowi o nazwie UŻYTKOW­NIK do tabeli PRACOWNICY. Od tej pory UŻYTKOWNIK może wybierać (wyko­nywać zapytania select) ...

Zgłoś jeśli naruszono regulamin