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...
Kwasibor666