00 Spis treści, Wstęp


Rafe Coburn

SQL - DLA KAŻDEGO

Tworzenie tabel oraz zakładanie indeksów na kolumnach tych tabel
Formatowanie danych w celu zmaksymalizowania użyteczności bazy danych
Efektywne i wszechstronne wykorzystanie polecenia SELECT
Optymalizowanie wydajności baz danych i zapewnianie im bezpieczeństwa oraz integralności
Zastosowanie transakcji, kursorów i procedur
Publikowanie baz danych w sieci

Relacyjne bazy danych są jednymi z najważniejszych i najczęściej używanych aplikacji komputerowych. Nic więc dziwnego, iż relacyjne bazy danych używane są w aplikacjach tak małych jak prywatny spis telefonów, aż po potężne magazyny danych stosowane w bankach do zapisywania wszelkich realizowanych transakcji. SQL (Structured Query Language), jest językiem zapytań umożliwiającym programistom pobieranie i zapisywanie danych oraz zarządzanie większością relacyjnych baz danych. Mimo że istnieją pewne różnice w sposobie obsługiwania SQL-a przez różne systemy baz danych, język ten jest na tyle ustandaryzowany, iż opanowanie go dla jednej bazy danych jest wystarczające, aby móc korzystać z niego w dowolnym innym systemie obsługującym SQL. Na język SQL składa się zaledwie kilka typów wyrażeń, na tyle prostych, iż nauczenie się ich składni nie sprawia żadnego kłopotu, a w zamian umożliwia wykonywanie wielu nieskomplikowanych zapytań. Wraz z poznawaniem kolejnych cech języka można rozbudowywać swoje własne zapytania, uzyskując w ten sposób coraz lepszą dokładność odpowiedzi.

Tytuł oryginału: Special Edition Using SQL
Tłumaczenie: Janusz Grabis, Bartosz Behrendt
Projekt okładki: Maciej Pasek, "ARTGRAF"

ISBm 83-7197-248-2
Authorized translation from the English language edition published by Sams Publishing
Copyright (c) 2000
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher.

Polish language edition published by Wydawnictwo Helion.
Copyright (c)2001

Wydawnictwo HELION
ul. Chopina 6, 44-100 GLIWICE
tel. (32) 231-22-19, (32) 230-98-63
e-mail: helion@helion.com.pl
www. helion.pl (księgarnia internetowa, katalog książek)

Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://www.helion.com.pl/cgi-bin/zakupy/ocen.cgi?sqldk
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzna, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

Printed in Poland.

Druk: Zakład Poligraficzny W. Wiliński, Gliwice, ul. Chopina 6, tel./fax 231-32-16


Książkę tę dedykuję mojej rodzinie, Colburnom i Thorkelsonom, która stanowi dla mnie życiowe wsparcie.

Podziękowania

Pisanie książki jest poważnym zadaniem i nie sposób na tak małej powierzchni podziękować wszystkim ludziom, którzy pomogli w jej powstaniu, nie wspominając już o ludziach, którzy swój wkład wnieśli pośrednio przez wsparcie i cierpliwość. Przede wszystkim, chciałbym podziękować ludziom z wydawnictwa Que, którzy byli przy mnie przez cały czas - Randiemu Haubnerowi i Seanowi Dixonowi. Chciałbym również podziękować mojemu redaktorowi technicznemu, Michealowi Ask.
Największe podziękowania należą się mojej żonie za miesiące wytrwałości, które poświęciłem na studia, w efekcie czego powstała niniejsza książka. Bez jej cierpliwości i miłości nie byłym w stanie wykonać tego zadania.
#6


Spis treści

O Autorze / 17
Wstęp / 19
Kompozycja książki / 20
Konwencje przyjęte w książce / 22

Część I. Projektowanie i tworzenie bazy danych / 23

Model relacyjnej bazy danych / 25
Zasady dotyczące struktury danych / 27
Zasady dotyczące przetwarzania danych / 27
Zasady dotyczące integralności danych / 28
Język SQL / 29
Przetwarzanie danych / 29
Definiowanie danych / 30
Zarządzanie bazą danych / 31
Standardy języka SQL / 31
Składnia języka SQL / 32
Nierozróżnianie wielkich i małych liter / 32
"Białe" znaki / 33
Zagnieżdżanie / 34
Używanie cudzysłowów / 34
Nawiasy / 35
Operacje relacyjne / 36
Selekcja / 36
Projekcja / 37
Złączenie / 37
Rozwój aplikacji baz danych / 38
Systemy scentralizowane / 38
Systemy klient-serwer / 38
Bazy danych na stronach WWW / 39
Wiersz poleceń / 40
W praktyce / 40

Rozdział 2. Projektowanie bazy danych / 43
Struktura bazy danych / 44
Dobre i złe bazy danych / 44
Charakterystyka dobrej bazy danych / 44
Jak poznać złą bazę danych / 45
Projektowanie / 45
Zanim przystąpisz do projektu / 46
Modelowanie danych / 47
Zależności funkcyjne i klucze kandydujące / 48
Zależności funkcyjne / 49
Definicja zależności funkcyjnej / 49
Klucze kandydujące i klucze główne / 51
Droga na skróty / 51
Modelowanie relacji / 52
Wybieranie obiektów / 52
Rozpoznawanie własności / 53
Rozpoznawanie relacji między obiektami / 54
Relacja jeden-do-jeden / 54
Relacja jeden-do-wiele / 55
Relacja wiele-do-wiele / 55
Schemat relacji / 56
Normalizacja / 57
Dekompozycja bez straty danych / 57
Pierwsza postać normalna 1PN / 58
Druga postać normalna 2PN / 59
Trzecia postać normalna 3PN / 60
Boyce-Codd'a postać normalna BCPN / 62
Wyższe postacie normalne / 63
Denormalizacja / 64
W praktyce / 64

Rozdział 3. Budowanie bazy danych / 67
Tworzenie bazy danych / 68
Dostęp do wybranej bazy danych / 68
Tworzenie tabeli / 69
Typy danych / 70
Dane łańcuchowe / 71
Dane numeryczne / 71
Określenia czasu / 72
Określanie kluczy / 72
Klucze obce / 74
Ograniczenia dla kolumn / 74
Odrzucanie wartości null / 75
Inne ograniczenia / 75
Wartości domyślne / 76
Projekt bazy danych o filmach / 77
Tabela Movies / 77
Tabela Studios / 79
Tabela People / 79
Tabela Cast_Movies / 80
Indeksy / 81
Indeksy unikalne / 82
Indeks klastrowy / 82
Powody do indeksowania kolumn / 83
Kiedy nie używać indeksów / 83
W praktyce / 84

Rozdział 4. Tworzenie, zmienianie i usuwanie rekordów / 85
Przygotowanie danych / 85
Instrukcja INSERT / 86
Wprowadzanie wartości domyślnych i wartości null / 87
Równoczesne użycie instrukcji SELECT i INSERT / 88
Kopiowanie tabel, usuwanie powtarzających się wierszy / 90
Instrukcja DELETE / 93
Instrukcja UPDATE / 93
Instrukcja TRUNCATE / 95
Instrukcja DROP / 95
DROP TABLE / 95
DROP INDEX / 96
Instrukcja ALTER / 96
ALTER TABLE / 96
W praktyce / 98

Część II. Pobieranie danych z bazy danych / 101

Rozdział 5. Instrukcja SELECT103
Budowa instrukcji SELECT103
Określanie kolumn do pobrania.104
Użycie znaku "*" do wybrania wszystkich kolumn105
Wykonywanie obliczeń na danych107
Użycie wyrażeń w instrukcji SELECT107
Nazwy kolumn w wyrażeniach.108
Operatory arytmetyczne obsługiwane przez SQL.109
Użycie słowa kluczowego AS do nadawania nazw kolumnom i wyrażeniom.110
Filtrowanie wyników zapytania za pomocą klauzuli WHERE.112
Operatory do porównywania.113
Rozróżnianie wielkości liter w porównaniach.115
Wykonywanie obliczeń w klauzuli WHERE.115
Postępowanie z wartościami null.116
Wyszukiwanie wartości null.116
Wyszukiwanie null w innych zapytaniach.117
Sortowanie wyników zapytania.119
Użycie klauzuli ORDER BY.119
Sortowanie w porządku malejącym.120
Sortowanie wyrażeń121
Sortowanie po wielu kolumnach.122
Ustalanie identyczności łańcuchów.123
Jak porównujemy łańcuchy.124
Sortowanie z pominięciem znaczenia wielkości liter125
Zestaw znaków125
W praktyce125

Rozdział 6. Zastosowanie klauzuli WHERE127
Klauzula WHERE.127
Użycie operatorów logicznych w klauzuli WHERE.128
Programowanie logiki.128
Operator AND.128
Operator OR129
Operator NOT.129
Wykorzystanie złożonych operatorów logicznych131
Kolejność wykonywania działań.132
Klauzula IN.132
Klauzula IN w podzapytaniu.133
IN kontra OR.134
NOT IN.134
Klauzula BETWEEN.135
BETWEEN i typy czasowe.137
BETWEEN i łańcuchy137
Wyszukiwanie łańcuchów przy pomocy klauzuli LIKE.138
Budowanie szablonów.139
Złożone instrukcje WHERE z operatorem LIKE140
Pomijanie znaków wieloznacznych.141
LIKE i wydajność141
Dopasowywanie jednego lub wielu znaków142
Funkcje przydatne dla klauzuli WHERE.142
Usuwanie niepotrzebnych spacji.143
Długość łańcucha143
Funkcje umożliwiające konwersję typów danych.143
Zagnieżdżanie funkcji.144
Funkcje agregujące145
W praktyce145
Rozdział 7. Przetwarzanie wyników zapytań147
Wybór wartości unikalnych: operator DISTINCT147
Wybieranie unikalnych kombinacji wartości148
DISTINCT i NULL.149
Funkcje agregujące150
Funkcje agregujące i klauzula WHERE151
Zmiana nazwy wyników funkcji agregującej152
Funkcja COUNT().152
Funkcja COUNT() i wartości null.153
Funkcja COUNT() i operator DISTINCT.153
Funkcje SUM() i AVG()153
Funkcje MIN() i MAX()154
Wykonywanie obliczeń z podziałem na kategorie155
Klauzula GROUP BY.156
Grupy i podgrupy157
Klauzule GROUP BY i ORDER BY158
Klauzula GROUP BY stosowana łącznie z WHERE160
Filtrowanie wyników zapytań z użyciem HAYING.161
Złożone wyrażenia w klauzuli HAYING162
HAYING i WHERE162
W praktyce163

Rozdział 8. Łączenie tabel165
Połączenia i normalizacja165
Co to jest złączenie?166
Zgodne kolumny.166
Warunki złączenia.168
Używanie złączeń168
Wybieranie kolumn.169
Skracanie nazw tabel.170
Złączenia i relacje170
Jak działają złączenia.171
Typy złączeń172
Połączenia naturalne172
Złączenia w oparciu o inne warunki173
Self-joins.174
Łączenie więcej niż dwóch tabel.175
Tabele łączące.177
Złączenia zewnętrzne178
Unie.179
Opcja ALL181
Łączenie UNION i ORDER BY182
INTERSECT.183
MINUS184
Składnia złączeń w SQL-92 184
Złączenia wewnętrzne.185
Złączenia zewnętrzne186
W praktyce188

Rozdział 9. Podzapytania.189
Co to jest podzapytanie?190
Zastępowanie podzapytań przez złączenia191
Typy podzapytań.191
Podzapytania niepowiązane.192
Podzapytanie powiązane.192
Podzapytania zwracające listę wartości193
Tworzenie zapytań z IN193
Zastosowanie IN w zapytaniach powiązanych195
Zastępowanie autozłączeń przez podzapytanie.195
Podzapytania i NOT IN.196
Wykorzystanie EXISTS198
Znajdowanie zbiorów pustych przy pomocy NOT EXISTS.199
Operatory porównania z ANY i ALL199
Zastosowanie ANY.200
Zastosowanie ALL201
Podzapytania zwracające pojedynczą wartość202
Podzapytania i funkcje agregujące203
Pisanie złożonych zapytań.205
Zagnieżdżanie podzapytań205
Łączenie podzapytań i złączeń206
Zastosowanie podzapytania w klauzuli HAYING.207
Wykorzystanie podzapytań w instrukcjach UPDATE i DELETE208
Podzapytania z instrukcją DELETE208
Podzapytania z instrukcją UPDATE.208
Stosowanie podzapytań z instrukcją INSERT210
W praktyce211

Część III. Zarządzanie bazą danych / 213

Rozdział 10. Widoki / 215
Tworzenie widoków / 215
Korzyści płynące ze stosowania widoków / 217
Wygoda / 217
Ukrywanie efektów normalizacji / 218
' Ograniczanie danych dostępnych dla użytkowników / 219
Tworzenie warstwy abstrakcji / 219
Aliasy kolumn / 220
Widoki pojedynczych tabel / 221
Widoki z wyrażeniami i funkcjami / 221
Widoki z funkcjami agregującymi / 223
#10
Widoki tworzone ze złączeń / 225
Widoki z podzapytaniami / 226
Korzystanie z innych operacji złączeń w widokach / 227
Zagnieżdżanie widoków / 228
Modyfikowanie danych poprzez widoki / 229
Zadania realizowane za pomocą widoków / 232
Tabele w przykładzie / 233
Działanie systemu / 234
Widoki użyte w systemie / 235
Zapytanie wydobywające artykuły / 237
W praktyce / 238

Rozdział 11. Model bezpieczeństwa SQL / 241
Bezpieczeństwo baz danych / 241
Konto administratora bazy danych / 242
Właściciele bazy danych / 243
Tworzenie użytkowników bazy danych / 243
Modyfikowanie użytkowników / 244
Usuwanie użytkowników / 244
Elementy bazy danych / 244
Bazy danych / 245
Tabele / 247
Widoki / 247
Kolumny oraz kolumny widoku / 248
Polecenia GRANT I REVOKE / 248
Użytkownik publiczny / 249
Nadawanie użytkownikom uprawnienia GRANT / 250
Role a bezpieczeństwo bazy danych / 251
Tworzenie i usuwanie ról / 252
Przypisywanie użytkowników do ról / 252
Przypisywanie ról innym rolom / 254
Widoki a bezpieczeństwo bazy danych / 255
Dostosowywanie praw dostępu poprzez widoki / 257
W praktyce / 260

Część IV. Zagadnienia praktyczne / 261

Rozdział 12. Typy danych / 263
Dane numeryczne264
Sortowanie liczb264
Liczby i wartość null.266
Wyrażenia matematyczne267
Standardowe funkcje matematyczne.268
Formatowanie liczb.270
Dane łańcuchowe.271
Konkatenacja łańcuchów.271
Funkcje łańcuchowe272
Przeszukiwanie łańcuchów273
Podciągi.274
Użycie przeszukiwania i wyciągania podciągów274
Soundex.276
Daty i określenia czasu277
Formatowanie dat przed wyprowadzeniem.278
Formatowanie dat przed zapisem279
Spis treści
11
Dodawanie i odejmowanie dat279
Porównywanie dat.281
Zaokrąglanie dat282
Konwertowanie danych.283
Funkcja Convert().284
Konwertowanie typów danych w Oracle'u.286
W praktyce289

Rozdział 13. Wydajność i integralność bazy danych / 291
Zwiększanie wydajności bazy danych.291
Projekt bazy danych ajej wydajność.292
Narzędzia pomiaru wydajności292
AUTOTRACE (Oracle)293
SHOWPLAN (Transact-SQL).296
Indeksy297
Indeksy klastrowe298
Zapytania wykorzystujące indeksy298
Optymalizator zapytań.300
Zasada działania300
Optymalizator i indeksy302
Wiele indeksów wjednym zapytaniu303
Operacje na zbiorach danych.304
Optymalizator zapytań i widoki305
Optymalizator zapytań i podzapytania305
Operacje złączenia.306
Podpowiedzi dotyczące złączeń307
Integralność danych.307
Integralność kontra wydajność309
W praktyce310

Rozdział 14. Transakcje i kursory / 313
Transakcje / 314
Zasada działania / 314
Transakcje w Oracle / 315
AUTOCOMMIT / 316
Transakcje w języku Transact-SQL / 317
Blokowanie danych / 318
Typy blokad / 320
Transakcje i procedury składowane / 321
Dziennik transakcji / 321
Kursory / 322
Kursory wjęzyku Transact-SQL / 322
Deklarowanie kursora / 323
Otwieranie kursora / 324
Pobieranie wierszy z kursora / 324
Modyfikowanie i usuwanie danych poprzez kursory / 325
Zamykanie i usuwanie kursorów
Kursory wjęzyku PL/SQL
Deklarowanie kursorów / 328
Używanie kursorów w programach PL/SQL / 328
Atrybuty kursorów / 329
Iteracyjne przetwarzanie kursora / 330
W praktyce / 332
#12

Część V. Procedury składowane / 335

Rozdział 15. Procedury składowane / 337
Pisanie procedur składowanych.339
Przekazywanie parametrów do procedur składowanych340
Zmienne.342
Nadawanie wartości zmiennym.343
Definiowanie bloków kodu.345
Wyrażenia warunkowe346
Zapytania w wyrażeniach warunkowych.347
Połączenie wyrażenia warunkowego z blokiem kodu.348
Wyrażenie IF.ELSE348
Zagnieżdżanie wyrażeń warunkowych349
Pętle.350
Pętla WHILE.351
Pętle nieskończone352
Restartowanie pętli - CONTINUE354
Zagnieżdżanie pętli.355
Iteracyjne przetwarzanie kursora.355
Wyzwalacze.357
Tworzenie wyzwalaczy.358
Usuwanie wyzwalaczy358
Kod wyzwalacza.358
Wyzwalacze działające na kolumnach359
W praktyce360

Rozdział 16. Procedury składowane w języku Transact-SQL / 363
Ogólne informacje na temat programowania w Transact-SQL363
Zmienne globalne363
Przerywanie pracy procedur - RETURN366
Obsługa błędów.366
RAISERROR366
RAISERROR w Microsoft SQL Server367
RAISERROR w Sybase369
Przechwytywanie błędów370
Wyrażenie RETURN.371
Definiowanie własnych komunikatów błędów372
Obiekty tymczasowe;.372
tempdb - zasada działania.373
Tworzenie tymczasowej tabeli373
Klasy obiektów tymczasowych.374
Trwałe obiekty tymczasowe375
WAITFOR.'375
Zaawansowane techniki tworzenia wyzwalaczy.376
ROLLBACK TRIGGER.376
Tabele INSERTED i DELETED.377
W praktyce378

Rozdział 17. Procedury składowane w języku PL/SQL (Oracle) / 381
Sekcja deklaracji382
Stałe.383
Deklarowanie kursorów383
Sekcja poleceń wykonywalnych384
Wyprowadzanie danych384
Przypisania385
Wyrażenia warunkowe385
Pętle.386
Iteracyjne przetwarzanie kursora.387
Pętla FOR387
Kursory w pętlach FOR.388
Pętla WHILE.388
Kursory w pętlach WHILE389
GOTO390
Pobieranie wartości do zmiennych390
Obsługa wyjątków.391
Wyjątki definiowane przez użytkownika392
Tworzenie procedur składowanych.393
; Tworzenie procedur.394
. Uruchamianie procedur składowanych395
Tworzenie i stosowanie funkcji.396
Umieszczanie procedur i funkcji w pakietach397
Specyfikacja pakietu.397
Testowanie programów PL/SQL.399
SHOW ERRORS.399
DBMS_OUTPUT400
Wyzwalacze.400
Wyzwalacze INSTEAD OF403
Zarządzanie wyzwalaczami.404
W praktyce405

Część VI. Przegląd baz danych / 407

Rozdział 18. Oracle / 409
SQL*PLUS / 410
Uruchamianie SQL*PLUS / 410
Korzystanie z SQL*PLUS / 411
Ładowanie skryptów SQL*PLUS / 412
Skrypt login.sql / 413
Edycja poleceń SQL / 413
Zapisywanie danych w pliku / 414
Kontrolowanie sposobu prezentowania wyników / 415
Tworzenie raportów w SQL*PLUS / 417
Tytułowanie raportów / 417
Zmiana sposobu wyświetlania danych / 418
Inne polecenia formatowania danych / 421
Widoki systemowe Oracle'a / 423
Korzystanie z widoków systemowych / 425
Sekwencje / 426
Synonimy / 428
Typy danych w Oracle'u / 429
Zasoby na temat Oracle'a w sieci WWW / 430
W praktyce / 431

Rozdział 19. Microsoft SQL Server i Sybase Adaptive Server / 433
Narzędzia administracyjne baz danych434
SQL Enterprise Manager.434
SQL Server Query Analyzer.436
SQL Central436
ISQL437
#14
Zasady nadawania nazw obiektom w Transact-SQL438
WYRAŻENIE SELECT . INTO.438
Funkcje systemowe.439
Identyfikowanie użytkowników440
Identyfikowanie bazy danych lub serwera.440
Funkcje porównywania danych.441
Funkcje walidacji danych442
Wyrażenia CASE.443
Złożone wyrażenia CASE.443
Połączenie CASE i GROUP BY.445
Użycie CASE w wyrażeniach UPDATE.446
Systemowe procedury składowane447
Procedury związane z bezpieczeństwem.447
Procedury serwerów zdalnych.451
Procedury definiujące dane.451
Typy danych w języku Transact-SQL.455
W praktyce457

Rozdział 20. Microsoft Access / 459
Pliki bazy danych / 459
ODBC / 460
Interfejs użytkownika / 460
Obiekty bazy danych / 461
Tabele / 461
Kwerendy / 462
Formularze / 463
Raporty / 464
Makra / 465
Moduły / 465
Tworzenie tabel / 466
Tworzenie tabel przy użyciu widoku arkusza danych / 466
Tworzenie tabel przy użyciu widoku projektu / 468
Kwerendy definiujące dane / 470
Typy danych / 471
Tworzenie i uruchamianie zapytań / 473
Budowanie zapytań przy użyciu widoku projektu / 473
Pisanie zapytań przy użyciu widoku SQL / 476
Tworzenie źródeł danych ODBC / 476
Zasoby dostępne w sieci WWW / 478
W praktyce / 479

Rozdział 21. MSQL i MySdL / 481
Jak zdobyć MySQL i MSQL.482
Różnice między MySQL i MSQL.482
Użytkowanie MySQL484
Klient MySQL.484
Cechy MySQL.486
Ograniczenia MySQL489
Brak podzapytań489
Brak transakcji.489
Procedury składowane, wyzwalacze i kursory490
Związki kluczy obcych490
Typy danych stosowane w MySQL.490
Spis treści
15
-.;. Składnia MySQL.492
Komentarze.494
: MSQL495
Wykonywanie zapytań496
Tworzenie obiektów bazy danych.496
Usuwanie obiektów.498
Inne zapytania MSQL.498
Porównywanie łańcuchów w MSQL i MySQL498
RLIKE.499
W praktyce501

Część VII. Udostępnianie baz danych w sieci WWW / 503

Rozdział 22. Podstawy programowania sieciowego / 505
Podstawy architektury sieci WWW.505
HTML506
Formularze HTML507
Pola formularzy - znacznik 509
Pole tekstowe509
Pole hasła510
Pola wyboru511
Przyciski opcji.511
Pole załącznika pliku.512
Pola ukryte513
Przycisk SUBMIT.513
Przycisk RESET514
Rysunki jako przyciski SUBMIT515
Listy.515
PoleTEXTAREA517
CGI518
Przetwarzanie danych z formularza.519
Wysyłanie odpowiedzi do przeglądarki.519
XML521
Publikowanie danych z użyciem XML522
XML i relacyjne bazy danych.522
W praktyce523

Rozdział 23. Serwery aplikacji WWW / 525
Przegląd serwerów aplikacji WWW525
Ogólne uwagi na temat serwerów aplikacji526
Programy niezależne527
Perl/CGI527
Zapisywanie danych z formularza w bazie danych.531
Zapytania do bazy danych z wnętrza skryptu CGI534
Programy osadzane w kodzie HTML536
ColdFusion536
Zapytania do bazy danych z wnętrza programu ColdFusion537
ASP.540
Zapytania do bazy danych z wnętrza skryptu ASP541
Serwlety Javy.543
Systemy oparte na wzorcach dokumentów.544
Zasada działania serwerów opartych na wzorcach dokumentów545
W praktyce545
#16

Rozdział 24. Przykładowa aplikacja WWW / 547
Architektura aplikacji 548
Strona z listą filmów548
Strona informacji szczegółowych553
Dodawanie nowego filmu558
Skrypt walidacji danych562
Skrypt tworzący formularz563
Modyfikacja istniejącego filmu.567
Edycja obsady filmu570
Modyfikowanie lokalizacji zdjęć.576
Usuwanie filmów.579
W praktyce580

Dodatki / 581
Dodatek A Wyjątki systemowe w języku PL/SOL583
Skorowidz / 585

#17
O Autorze

Rafe Colburn jest konsultantem w firmie Interpath Communications. Do jego obowiązków należy projektowanie aplikacji oraz baz danych związanych z dużymi projektami internetowymi. Rafe jest również autorem książki "Teach Yourself CGI Programming in a Week" i współautorem książki "Teach Yourself Netscape Web Publishing in a Week". Dom autora znajduje się w Apex, Północna Karolina. Można skontaktować się z nim za pośrednictwem poczty elektronicznej - rafe@rc3.org lub odwiedzić jego stronę - http://rc3.org. Więcej informacji na temat tej książki można znaleźć pod adresem http://rc3.org/sqlbook.
#19
Wstęp

Relacyjne bazy danych są jednymi z najważniejszych i najczęściej używanych aplikacji komputerowych. Udostępniają użyteczne i elastyczne mechanizmy przechowywania wszelkiego rodzaju informacji. W rzeczywistości większość aplikacji korzysta obecnie z baz danych w sposób bezpośredni lub pośredni. Relacyjny model danych, opisany szczegółowo w pierwszym rozdziale książki, cechuje się niezwykłą skalowalnością. Nic więc dziwnego, iż relacyjne bazy danych używane są w aplikacjach tak małych jak prywatny spis telefonów, aż po potężne magazyny danych stosowane w bankach do zapisywania wszelkich realizowanych transakcji.
SQL (Structured Query Language), jest językiem zapytań umożliwiającym programistom pobieranie i zapisywanie danych oraz zarządzanie większością relacyjnych baz danych. Mimo że istnieją pewne różnice w sposobie obsługiwania SQL-a przez różne systemy baz danych, język ten jest na tyle ustandaryzowany, iż opanowanie go dla jednej bazy danych jest wystarczające, aby móc korzystać z niego w dowolnym innym systemie obsługującym SQL. Na język SQL składa się zaledwie kilka typów wyrażeń, na tyle prostych, iż nauczenie się ich składni nie sprawia żadnego kłopotu, a w zamian umożliwia wykonywanie wielu nieskomplikowanych zapytań. Wraz z poznawaniem kolejnych cech języka można rozbudowywać swoje własne zapytania, uzyskując w ten sposób coraz lepszą dokładność odpowiedzi.
Jedną z najciekawszych cech języka SQL jest możliwość eksperymentowania. Zapytania wydobywające dane są zupełnie odrębną rzeczą w porównaniu do zapytań modyfikujących dane. Można zatem wpisywać dowolne konstrukcje zapytań wybierających bez obawy przypadkowego uszkodzenia danych w bazie. Do eksperymentowania zachęca również prostota tworzenia zapytań (większość z nich składa się z pojedynczego wyrażenia). Wszystkie systemy baz danych zaopatrzone są w interaktywne programy umożliwiające wpisywanie zapytań z klawiatury i natychmiastowe oglądanie ich rezultatów. Daje to możliwość momentalnego wprowadzania zmian do składni zapytania, aż do momentu uzyskania zadowalającej odpowiedzi. W ten sposób można na przykład przygotować zapytania, które następnie zaimplementowane zostaną w aplikacji.
#20
Kompozycja książki

Rozdział 1. książki "SQL", stanowi wprowadzenie do języka, które umożliwi dalsze pogłębianie wiedzy w tym zakresie. Rozdział opisuje działanie relacyjnych baz danych, a także przedstawia pewien rys historyczny. Opisana została również podstawowa składnia języka SQL.

Rozdział 2. "Projektowanie baz danych", poświęcony jest projektowaniu relacyjnych baz danych. Dyskutowane są w nim takie pojęcia jak: modelowanie związków encji oraz normalizacja bazy danych. Zrozumienie tych zagadnień ma kluczowe znaczenie przy konstruowaniu baz danych zapewniających najwyższy stopień integralności danych bez zbędnej utraty wydajności.

Rozdziały 3. "Tworzenie baz danych" i 4. "Wstawianie, modyfikacja i usuwanie rekordów", zagłębiają się jeszcze bardziej w język SQL. Ich celem jest omówienie procesu tworzenia tabel, podstawowego elementu służącego do przechowywania danych w relacyjnych bazach danych, a także wyrażeń SQL służących do wypełniania baz danych po ich utworzeniu. W rozdziale 3. poświęcono również miejsce na ogólne omówienie typów danych, jakie mogą być przechowywane w relacyjnej bazie danych. Tutaj wprowadzona zostaje również przykładowa baza danych, służąca do przechowywania informacji o filmach. Baza ta będzie stanowić podstawę do większości przykładów prezentowanych w dalszej części książki.

Rozdziały od 5. do 9. omawiają zagadnienie wydobywania danych. Wszystkie pięć rozdziałów poświęconych jest wyrażeniu SELECT, które w języku SQL służy do wydobywania danych z baz danych. Wykład rozpoczyna się od prostego wyjaśnienia sposobu pobierania danych z pojedynczej tabeli, a następnie przechodzi do opisu bardziej złożonych technik, takich jak korzystanie z funkcji agregujących w odniesieniu do grupy wierszy, łączenie wielu tabel w pojedynczym zapytaniu oraz używanie podzapytań w zapytaniu.

Rozdział 10. "Widoki", opisuje widoki jako środek umożliwiający zarządzanie uprawnieniami indywidualnych użytkowników do bazy danych. Rozdział 11. "Model bezpieczeństwa SQL", opisuje zasady nadawania i odbierania uprawnień użytkownikom do poszczególnych zasobów bazy danych.
Rozdziały: 12. "Typy danych", 13. "Wydajność i integralność bazy danych" i 14. "Transakcje i kursory" poświęcone są rzeczywistym problemom, z jakimi programiści stykają się każdego dnia.

Rozdział 12. kontynuuje dyskusję z rozdziału 3., wyjaśniając szczegółowo, w jaki sposób w relacyjnych bazach danych korzysta się z różnych typów danych, w tym również w jaki sposób dokonuje się konwersji z jednego typu na inny. Rozdział 13. zagłębia się w zagadnienia wydajności bazy danych wyjaśniając sposób optymalizowania zapytań przez serwery baz danych przed ich faktycznym wykonaniem. Pewna część tego rozdziału opisuje zasady zachowania integralności bazy danych, czyli metody postępowania gwarantujące iż zawartość tabel jest tym, czego oczekujemy.
#21
Rozdział 14. dotyczy dwóch zaawansowanych narzędzi wykorzystywanych przez programistów: kursorów i transakcji. Kursory umożliwiają przetwarzanie wyników zapytań wiersz po wierszu, natomiast transakcje służą do utrzymywania integralności bazy danych oraz zapewniają możliwość pełnego odtworzenia stanu bazy w przypadku wystąpienia krytycznych awarii.

Rozdziały: 15. "Procedury", 16. "Procedury w języku Transact-SQL" i 17. "Procedury w języku PL/SQL (Oracle)" poświęcone są zagadnieniu procedur. Procedury to nic innego jak małe programy zapisywane wewnątrz bazy danych tak, aby mogły być one wywoływane przez zewnętrzne aplikacje. Rozdział 15. stanowi ogólny opis procedur ze szczególnym naciskiem na te pisane w języku Transact-SQL. Rozdział 16. skupia się wyłącznie na procedurach w języku Transact-SQL. Rozdział 17. wyjaśnia budowę i działanie procedur w języku Oracle PL/SQL, które zupełnie odbiegają od procedur występujących w innych bazach danych.

Rozdziały od 18. do 21. poświęcone są konkretnym rozwiązaniom baz danych. Rozdział 18. "Oracle", omawia bazę danych Oracle, rozdział 19. "Microsoft SQL Server i Sybase Adaptive Server", skupia się na standardzie Transact-SQL zaimplementowanym w bazach firmy Sybase, a także w Serverze SQL firmy Microsoft. Rozdział 20. "Microsoft Access" poświęcony jest w całości bazie Microsoft Access. Rozdział 21. "MSQL i MySQL" omawia Mini-SQL i My-SQL - dwie proste bazy danych popularne w systemie Linux.

Rozdziały od 22. do 24. stanowią wprowadzenie do programowania sieciowego, a w szczególności do tworzenia aplikacji WWW współpracujących z bazami danych. Wyjaśnione zostają podstawy języka HTML, tworzenia formularzy na stronach WWW, a także różnorodne platformy służące do budowy aplikacji sieciowych.

Głównym celem tej książki jest nauczenie czytelnika standardu języka SQL, natomiast celem drugorzędnym - zapoznanie z narzędziami do budowy aplikacji sieciowych współpracujących z bazami danych. Książka ta nie wyjaśnia, w jaki sposób zbudować kompletną aplikację WWW przy użyciu jednego z serwerów aplikacji, zawiera jedynie generalne uwagi dotyczące roli, jaką bazy danych spełniają w dużych projektach aplikacji, a także wskazówki dotyczące metod budowania aplikacji zapewniających prawidłowe wykorzystanie relacyjnych baz danych. Połączenie wiedzy z zakresu języka SQL z wiedzą na temat projektowania i budowania aplikacji sieciowych stanowi narzędzie, którego celem jest umożliwienie czytelnikowi nie tylko odpytywania baz danych, ale również stosowania baz w dużych projektach aplikacji.
Ostatni rozdział stanowi ogólne wprowadzenie do metod budowania aplikacji sieciowych w oparciu o bazy danych. W miarę wzrostu popularności sieci WWW, zarówno jako środka przekazu informacji dla ogromnej rzeszy użytkowników, jak również jako nowej platformy do tworzenia aplikacji, wykorzystanie baz danych przez programistów aplikacji sieciowych rośnie w tempie lawinowym. Niemal każda większa witryna WWW, istniejąca obecnie w sieci, używa w większym lub mniejszym stopniu relacyjnej bazy danych. Niektóre witryny wykorzystuj ą bazy jedynie do przechowywania danych, jak ma to miejsce w przypadku tradycyjnych aplikacji, inne witryny przechowują w bazach całą zawartość publikowaną w sieci WWW.
#22
W miarę zbliżania się do siebie technologii WWW i baz danych niezbędne wydaje się wprowadzenie warstwy pośredniej między tymi dwoma zjawiskami. Niniejsza książka powinna pomóc programistom sieciowym w rozwinięciu wiedzy na temat programowania baz danych, natomiast programistom baz danych w zapoznaniu się z technikami budowy aplikacji sieciowych.

Konwencje przyjęte w książce

Jednym z elementów występujących w kolejnych rozdziałach książki jest sekcja "W praktyce". Po zakończeniu omawiania zagadnienia z danego rozdziału, prezentowane są dodatkowe informacje, które czytelnik może uznać za użyteczne przy próbie praktycznego wykorzystania materiału zawartego w rozdziale. Sekcje te zawierają informacje rozszerzające zagadnienie omawiane w samym rozdziale.
W książce znaleźć można również Rady, Uwagi, Ostrzeżenia. Te elementy książki oferują różnorodne informacje poczynając od ostrzeżeń, o których warto pamiętać, po informacje pomocnicze mające na celu ułatwienie i zwiększenie efektywności programowania w języku SQL.
==========
Rada
Celem rad jest wskazanie trików, które pozwalają na skrócenie czasu niezbędnego do napisania wydajnego i użytecznego zapytania SQL, a także zwiększenie czytelności i przejrzystości tworzonych aplikacji bazodanowych.
===========
===========
Uwaga
Uwagi przekazują dodatkowe informacje związane z omawianym zagadnieniem, bez zbędnego przytłaczania czytelnika. W trakcie czytania można je pomijać, niemniej jednak są one źródłem użytecznych informacji w odniesieniu do prowadzonej dyskusji.
============
============
Ostrzeżenie
Nie należy ignorować ostrzeżeń pojawiających się w książce. Zapoznawanie się z ich treścią może zaoszczędzić wiele wysiłku i czasu pracy.
============

Wyszukiwarka

Podobne podstrony:
00 Spis treści, Wstęp, Wprowadzenie
00 spis tresci wstep
00 spis tresci
Spis treści, wstęp
00 spis tresci skryptu
01 spis tresci i wstep
Spis treści, wstęp
00 Spis treści, Przedmowa
00 spis treści autocad
00 Spis treści
01 Spis treści i wstęp
00 Przedmowa i spis tresci

więcej podobnych podstron