00. Spis treści, Wstęp.txt

(31 KB) Pobierz
Rafe Coburn

SQL - DLA KAŻDEGO

 Tworzenie tabel oraz zakładanie indeksów na kolumnach tych tabel
 Formatowanie danych w celu zmaksymalizowania użytecznoci bazy danych
 Efektywne i wszechstronne wykorzystanie polecenia SELECT
 Optymalizowanie wydajnoci baz danych i zapewnianie im bezpieczeństwa oraz integralnoci
 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ększociš 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 tekcie sš zastrzeżonymi znakami firmowymi bšd towarowymi ich włacicieli.

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 odpowiedzialnoci 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 odpowiedzialnoci za ewentualne szkody wynikłe z wykorzystania informacji zawartych w ksišżce.

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całoci lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodš kserograficzna, fotograficznš, a także kopiowanie ksišżki na noniku 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 wnieli porednio 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łoci, które powięciłem na studia, w efekcie czego powstała niniejsza ksišżka. Bez jej cierpliwoci i miłoci nie byłym w stanie wykonać tego zadania.
#6


Spis treci

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 integralnoci 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żnoci funkcyjne i klucze kandydujšce / 48
Zależnoci funkcyjne / 49
Definicja zależnoci funkcyjnej / 49
Klucze kandydujšce i klucze główne / 51
Droga na skróty / 51
Modelowanie relacji / 52
Wybieranie obiektów / 52
Rozpoznawanie własnoci / 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
Okrelenia czasu / 72
Okrelanie kluczy / 72
Klucze obce / 74
Ograniczenia dla kolumn / 74
Odrzucanie wartoci null / 75
Inne ograniczenia / 75
Wartoci domylne / 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 wartoci domylnych i wartoci 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
Okrelanie 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 wielkoci liter w porównaniach.115
Wykonywanie obliczeń w klauzuli WHERE.115
Postępowanie z wartociami null.116
Wyszukiwanie wartoci 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 identycznoci łańcuchów.123
Jak porównujemy łańcuchy.124
Sortowanie z pominięciem znaczenia wielkoci 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 wartoci unikalnych: operator DISTINCT147
Wybieranie unikalnych kombinacji wartoci148
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 wartoci 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...
Zgłoś jeśli naruszono regulamin