okladka

Czy jesteś w stanie szybko powiedzieć, ile posiadasz książek? Jaki autor jest najbardziej popularny na Twojej półce? Jeżeli miałbyś bazę danych swoich książek, a baza ta obsługiwałaby język zapytań SQL, mógłbyś błyskawicznie udzielić odpowiedzi na te pytania. W przeciwnym razie... no cóż, zabierze Ci to o wiele więcej czasu. I czy będziesz pewien poprawności odpowiedzi?

Czym jest język SQL? To potężne narzędzie, którego opanowanie pozwoli Ci na sprawne poruszanie się po bazie danych. A za pomocą odpowiednio sformułowanych instrukcji będziesz mógł manipulować danymi, zarządzać kontami użytkowników i generować praktyczne raporty.

Oto innowacyjny podręcznik "Head First SQL. Edycja polska", w którym autorzy - wykorzystujący najnowsze, skuteczne techniki nauki - szybko przekażą ci całą niezbędną wiedzę o tym przydatnym języku. Nauczysz się tworzyć tabele, dodawać do nich dane oraz pobierać je. Dowiesz się, w jaki sposób ograniczać zbiór wybieranych danych za pomocą odpowiednich warunków. Po przeczytaniu tej książki bez trudu przedstawisz dane w odpowiedniej kolejności i zakresie oraz zaczniesz swobodnie używać podzapytań, łączyć dane z różnych tabel, a także zapewniać im bezpieczeństwo.

  • Tworzenie bazy danych i tabel (CREATE)
  • Pobieranie danych (SELECT)
  • Usuwanie (DELETE) i aktualizowanie danych (UPDATE)
  • Wykorzystywanie kluczy i indeksów
  • Sortowanie danych
  • Operacje na danych - sumy, średnie, elementy maksymalne i minimalne
  • Pobieranie unikalnych danych
  • Sposób pobierania określonej liczby wierszy
  • Stosowanie podzapytań
  • Zapewnianie spójności danych
  • Ograniczanie dostępu do zgromadzonych danych
  • Zapewnianie bezpieczeństwa bazie danych

Bezboleśnie naucz się wykorzystywać możliwości relacyjnych baz danych!


Wprowadzenie
  • Dla kogo jest ta książka (26)
  • Wiemy, co sobie myślisz (27)
  • Metapoznanie: myślenie o myśleniu (29)
  • Oto co możesz zrobić, aby zmusić swój mózg do posłuszeństwa (31)
  • Przeczytaj to (32)
  • Nasi wspaniali recenzenci (34)
  • Podziękowania (35)
Rozdział 1. Na wszystko znajdzie się odpowiednie miejsce
  • Definiowanie danych (38)
  • Przeanalizuj swoje dane pod względem kategorii (43)
  • Co znajduje się w bazie danych? (44)
  • Twoja baza danych widziana przez rentgenowskie okulary... (46)
  • Bazy danych zawierają powiązane ze sobą informacje (48)
  • Tabele w zbliżeniu (49)
  • Przejmij kontrolę! (53)
  • Tworzenie tabeli: Polecenie CREATE TABLE (55)
  • Tworzenie bardziej złożonych tabel (56)
  • Przekonajmy się, jak łatwo można pisać kod SQL (57)
  • Utwórzmy w końcu tabelę moje_kontakty (58)
  • Twoja tabela jest gotowa (59)
  • Spotkajmy się z niektórymi typami danych SQL (60)
  • Twoja tabela bez tajemnic (64)
  • Nie można ponownie stworzyć już istniejącej bazy danych lub tabeli! (66)
  • Do kosza ze starą tabelą - czas na nową (68)
  • Aby dodać dane do tabeli, będziesz musiał skorzystać z polecenia INSERT (70)
  • Utworzenie polecenia INSERT (73)
  • Wariacje na temat polecenia INSERT (77)
  • Kolumny bez wartości (78)
  • Zerknij na swoją tabelę, używając polecenia SELECT (79)
  • SQL bez tajemnic: Wyznania wartości NULL (80)
  • Kontrola wewnętrznych wartości NULL (81)
  • NOT NULL pojawia się w wynikach polecenia DESC (83)
  • Wypełnij pustkę słowem kluczowym DEFAULT (84)
  • Przybornik SQL (86)
Rozdział 2. Pobieranie podarowanych danych
  • Pobierać dane czy nie pobierać? (88)
  • Lepsza postać polecenia SELECT (91)
  • Co oznacza gwiazdka (*) (92)
  • Jak poszukiwać wartości różnych typów? (98)
  • Kolejne problemy ze znakami przestankowymi (99)
  • Niedopasowane apostrofy (100)
  • Polecenia INSERT z danymi zawierającymi apostrofy (102)
  • Pobieranie konkretnych kolumn w celu ograniczenia wyników (107)
  • Określanie kolumn w celu zwiększenia szybkości zapytania (107)
  • Łączenie zapytań (114)
  • Odnajdywanie wartości liczbowych (117)
  • Łagodne operatory porównania (120)
  • Odnajdywanie wartości liczbowych przy użyciu operatorów porównania (122)
  • Odnajdywanie danych tekstowych przy użyciu operatorów porównania (125)
  • Być ALBO nie być (127)
  • Różnica pomiędzy operatorem AND a OR (130)
  • By odszukać NULL, użyj operatora IS NULL (133)
  • Jak można zaoszczędzić czas dzięki jednemu słowu: LIKE (135)
  • Zew wieloznaczności (135)
  • Pobieranie zakresów przy użyciu operatora AND i operatorów porównania (139)
  • Lepszy sposób - operator BETWEEN (140)
  • Operator IN - w kręgu zainteresowania... (143)
  • ...lub poza nim - NOT IN (144)
  • Więcej o operatorze NOT (145)
  • Przybornik SQL (150)
Rozdział 3. Są szanse, że wszystko będzie w porządku
  • Klowni są przerażający (154)
  • Śledzenie klownów (155)
  • Klowni są w ciągłym ruchu (156)
  • Jak są zapisywane informacje o klownach? (160)
  • Gonzo, mamy problem (162)
  • Jak pozbyć się rekordu - polecenie DELETE (163)
  • Stosowanie naszego nowego polecenia DELETE (165)
  • Reguły polecenia DELETE (166)
  • Dwa kroki - INSERT i DELETE (169)
  • Stosuj polecenie DELETE rozważnie (174)
  • Problemy z nieprecyzyjnymi poleceniami DELETE (178)
  • Modyfikowanie danych przy użyciu polecenia UPDATE (180)
  • Reguły stosowania polecenia UPDATE (181)
  • UPDATE odpowiada kombinacji INSERT-DELETE (182)
  • Polecenie UPDATE w akcji (183)
  • Aktualizacja miejsc wystąpień klownów (186)
  • Zaktualizuj ceny drinków (188)
  • A chcemy tylko jednego polecenia UPDATE (190)
  • Przybornik SQL (192)
Rozdział 4. Po co być normalnym?
  • Dwie wędkarskie tabele (194)
  • Tabele dotyczą związków (198)
  • Dane atomowe (202)
  • Dane atomowe a Twoje tabele (204)
  • Reguły danych atomowych (205)
  • Dlaczego warto być normalnym? (208)
  • Zalety normalizacji tabel (209)
  • Klowni nie są normalni (210)
  • W połowie drogi do 1NF (211)
  • Reguły KLUCZA GŁÓWNEGO (212)
  • Dążenie do pierwszej postaci NORMALNEJ (215)
  • Poprawianie tabeli Grześka (216)
  • Oryginalna postać polecenia CREATE TABLE (217)
  • Pokażcie mi moją kasę (218)
  • Polecenie oszczędzające czas (219)
  • Tworzenie tabeli z KLUCZEM GŁÓWNYM (220)
  • 1, 2, 3... automatycznie inkrementowane (222)
  • Dodawanie KLUCZA GŁÓWNEGO do istniejącej tabeli (226)
  • Modyfikacja tabeli i dodanie KLUCZA GŁÓWNEGO (227)
  • Przybornik SQL (228)
Rozdział 5. Korygowanie przeszłości
  • Musimy wprowadzić kilka zmian (232)
  • Modyfikowanie tabel (237)
  • Ekstremalne metamorfozy tabel (238)
  • Zmiana nazwy tabeli (239)
  • Musimy poczynić pewne plany (241)
  • Przezbrajanie kolumn (242)
  • Zmiany strukturalne (243)
  • Polecenia ALTER i CHANGE (244)
  • Zmiana dwóch kolumn przy użyciu jednego polecenia SQL (245)
  • Szybko! Usuń tę kolumnę (249)
  • Dokładniejsza analiza nieatomowej kolumny lokalizacji (256)
  • Poszukaj wzorca (257)
  • Kilka wygodnych funkcji łańcuchowych (258)
  • Użyj bieżącej kolumny do zapisania wartości w innej kolumnie (263)
  • Sposób działania połączonych poleceń UPDATE i SET (264)
  • Przybornik SQL (266)
Rozdział 6. Nowy sposób spojrzenia na dane
  • Reorganizacja Filmoteki Bazodanowa (268)
  • Kilka problemów z bieżącą tabelą (269)
  • Dopasowywanie istniejących danych (270)
  • Określanie zawartości nowej kolumny (271)
  • Polecenie UPDATE z wyrażeniem CASE (274)
  • Wygląda na to, że mamy problem (276)
  • Do tabel może się wkraść bałagan (281)
  • Potrzebujemy możliwości organizowania danych zwracanych przez polecenie SELECT (282)
  • Wypróbuj klauzulę ORDER BY (285)
  • Sortowanie według jednej kolumny (286)
  • Klauzula ORDER z dwoma kolumnami (289)
  • Klauzula ORDER operująca na wielu kolumnach (290)
  • Uporządkowana tabela filmów (291)
  • Zmiana kolejności dzięki użyciu DESC (293)
  • Problem najlepszej sprzedawczyni grupy Młode Gosposie (295)
  • Funkcja SUM zsumuje wszystko za nas (297)
  • Zsumuj wszystko za jednym razem dzięki użyciu GROUP BY (298)
  • Funkcja AVG z klauzulą GROUP BY (299)
  • Funkcje MIN i MAX (300)
  • Liczymy dni (301)
  • Pobieranie unikalnych wartości (303)
  • LIMIT-owanie ilości wyników (306)
  • Ograniczenie tylko do drugiego miejsca (307)
  • Przybornik SQL (310)
Rozdział 7. Wyrastamy z naszych starych tabel
  • Szukamy partnerki na randkę dla Wieśka (312)
  • Wszystko stracone... ale zaraz (323)
  • Wyobraź sobie dodatkową tabelę (324)
  • Nowe tabele w bazie danych z informacjami o klownach (325)
  • Schemat bazy danych klowni_informacje (326)
  • W jaki sposób z jednej tabeli zrobić dwie (328)
  • Łączenie tabel (330)
  • Ograniczanie klucza obcego (335)
  • Dlaczego należy zawracać sobie głowę kluczami obcymi? (336)
  • TWORZENIE tabeli z KLUCZEM OBCYM (337)
  • Zależności pomiędzy tabelami (339)
  • Wzorce danych: jeden-do-jednego (339)
  • Wzorce danych: kiedy używać tabel połączonych zależnością jeden-do-jednego (340)
  • Wzorce danych: jeden-do-wielu (341)
  • Wzorce danych: dochodzimy do zależności wiele-do-wielu (342)
  • Wzorce danych: potrzebujemy tabeli łączącej (345)
  • Wzorce danych: wiele-do-wielu (346)
  • W końcu w 1NF (351)
  • Klucz złożony korzysta z wielu kolumn (352)
  • Zapis uproszczony (354)
  • Częściowa zależność funkcjonalna (355)
  • Przechodnia zależność funkcjonalna (356)
  • Druga postać normalna (360)
  • Trzecia postać normalna (w końcu) (366)
  • I tak oto Robert (i lista_grzesia) żyli od tej pory długo i szczęśliwie (369)
  • Przybornik SQL (372)
Rozdział 8. Czy nie możemy się wszyscy dogadać?
  • Powtarzamy się, cały czas się powtarzamy... (374)
  • Wypełnianie tabel (375)
  • Zainteresowania - kłopotliwa kolumna (378)
  • Wciąż wykazujemy zainteresowanie (379)
  • Aktualizacja wszystkich zainteresowań (380)
  • Pobieranie wszystkich zainteresowań (381)
  • Wiele dróg prowadzących w to samo miejsce (382)
  • CREATE, SELECT oraz INSERT - (prawie) jednocześnie (382)
  • CREATE, SELECT i INSERT - jednocześnie (383)
  • O co chodzi z tym AS? (384)
  • Nazwy zastępcze kolumn (385)
  • Nazwy zastępcze, a kto by ich potrzebował? (386)
  • Wszystko co chciałbyś wiedzieć o złączeniach wewnętrznych (387)
  • Złączenie kartezjańskie (388)
  • Zrozumienie złączeń wewnętrznych (393)
  • Złączenie wewnętrzne w akcji: złączenie równościowe (394)
  • Złączenia wewnętrzne w akcji: złączenie różnościowe (397)
  • Ostatni rodzaj złączeń wewnętrznych: złączenia naturalne (398)
  • Złączone zapytania? (405)
  • Nazwy zastępcze tabel i kolumn bez tajemnic: Dlaczego się ukrywacie? (406)
  • Przybornik SQL (408)
Rozdział 9. Zapytania w zapytaniach
  • Grzesiek wchodzi na rynek pracy (410)
  • Baza Grześka wzbogacona o nowe tabele (411)
  • Grzesiek używa złączenia wewnętrznego (412)
  • Ale Grzesiek chce użyć innych zapytań (414)
  • Podzapytania (416)
  • Łączymy dwa zapytania w zapytanie z podzapytaniem (417)
  • Jakby jedno pytanie nie wystarczało: poznajcie podzapytanie (418)
  • Podzapytanie w działaniu (419)
  • Podzapytania i ich reguły (421)
  • Podstawowe informacje o tworzeniu podzapytań (424)
  • Podzapytanie jako kolumna polecenia SELECT (427)
  • Inny przykład: Podzapytanie ze złączeniem naturalnym (428)
  • Podzapytania nieskorelowane (429)
  • SQL bez tajemnic: Wybór optymalnego sposobu realizacji zapytania, jeśli dostępna jest większa ilość możliwości (430)
  • Nieskorelowane podzapytania zwracające wiele wartości: IN oraz NOT IN (433)
  • Podzapytania skorelowane (438)
  • (Przydatne) Podzapytanie skorelowane używające operatora NOT EXISTS (439)
  • EXISTS i NOT EXISTS (440)
  • Usługi pośrednictwa pracy Grześka - zaproszenie do współpracy! (442)
  • W drodze na imprezę... (443)
  • Przybornik SQL (444)
Rozdział 10. Nowe manewry
  • Porządki w starych danych (448)
  • Kluczem są dwie strony złączenia - lewa i prawa (449)
  • Oto lewostronne złączenie zewnętrzne (450)
  • Złączenia zewnętrzne i wielokrotne dopasowania (455)
  • Prawostronne złączenie zewnętrzne (456)
  • Podczas gdy my radośnie złączaliśmy zewnętrznie... (459)
  • Moglibyśmy utworzyć nową tabelę (460)
  • Gdzie w schemacie umieścimy nową tabelę? (461)
  • Klucz obcy odwołujący się do tej samej tabeli (462)
  • Łączenie tabeli z nią samą (463)
  • Potrzebujemy złączenia zwrotnego (465)
  • Inny sposób zwracania informacji z wielu tabel (466)
  • Można zastosować polecenie UNION (467)
  • Polecenie UNION ma swoje ograniczenia (468)
  • Reguły stosowania poleceń UNION w działaniu (469)
  • UNION ALL (470)
  • Utworzenie tabeli na podstawie wyników polecenia UNION (471)
  • Polecenia INTERSECT i EXCEPT (472)
  • Skończyliśmy ze złączeniami, czas zająć się czymś nowym (473)
  • Podzapytania i złączenia - studium porównawcze (473)
  • Zamiana podzapytania na złączenie (474)
  • Złączenie zwrotne jako podzapytanie (479)
  • Firma Grześka rozwija się (480)
  • Przybornik SQL (482)
Rozdział 11. Zbyt wielu kucharzy psuje bazę danych
  • Grzesiek zatrudnił pomocników (484)
  • Pierwszy dzień Kuby: Dopisywanie nowego klienta (485)
  • Kuba unika wartości NULL (486)
  • Trzy miesiące później (487)
  • Uwaga, KONTROLA: dodawanie OGRANICZEŃ SPRAWDZAJĄCYCH (488)
  • Sprawdzanie płci (489)
  • Praca Franka staje się nużąca (491)
  • Tworzenie widoku (493)
  • Oglądanie własnych widoków (494)
  • Jak właściwie działa widok? (495)
  • Czym są widoki (496)
  • Wstawianie, aktualizacja i usuwanie danych przy wykorzystaniu widoków (499)
  • Sekret polega na tym, by udawać, że widok jest prawdziwą tabelą (500)
  • Widoki z klauzulą CHECK OPTION (503)
  • Twój widok może pozwalać na aktualizację danych, jeśli... (504)
  • Kiedy widok przestanie być potrzebny (505)
  • Kiedy dobrej bazie przydarzy się coś złego (506)
  • Co się stało w bankomacie (507)
  • Kolejne kłopoty z bankomatami (508)
  • To nie marzenia, to transakcje (510)
  • Klasyczny test ACID (511)
  • SQL pomaga nam zarządzać swoimi transakcjami (512)
  • Co powinno się stać w bankomacie (513)
  • Jak umożliwić korzystanie z transakcji w MySQL-u (514)
  • Wypróbuj transakcje samodzielnie (515)
  • Przybornik SQL (518)
Rozdział 12. Zabezpieczanie swych dóbr
  • Problemy użytkowników (522)
  • Zapobieganie błędom w bazie klownów (523)
  • Zabezpieczanie konta administratora (525)
  • Dodanie nowego użytkownika (526)
  • Dokładnie określ, czego poszczególni użytkownicy potrzebują (527)
  • Prosta postać polecenia GRANT (528)
  • Różne wersje polecenia GRANT (531)
  • Usuwanie uprawnień (532)
  • Usuwanie uprawnień przydzielonych dzięki GRANT OPTION (533)
  • Precyzyjne usuwanie (534)
  • Współużytkowane konta przysparzają problemów (538)
  • Stosowanie roli (540)
  • Usuwanie roli (540)
  • Stosowanie roli z klauzulą WITH ADIMIN OPTION (542)
  • Łączenie poleceń CREATE USER i GRANT (547)
  • Lista Grześka stała się usługą globalną! (548)
  • Czy już coś wiesz o filii Listy Grzesia w swoim mieście? (549)
  • Korzystaj z SQL-a w swoich własnych projektach, ponieważ także Ty możesz odnieść taki sukces jak Grzesiek (549)
  • Przybornik SQL (550)
Dodatek A Część najważniejszych zagadnień (których nie opisaliśmy wcześniej)
  • Nr 1. Znajdź i zainstaluj graficzny program do obsługi używanego systemu zarządzania bazami danych (552)
  • Nr 2. Słowa zastrzeżone i znaki specjalne (554)
  • Nr 3. ALL, ANY oraz SOME (556)
  • Nr 4. Dodatkowe informacje o typach danych (558)
  • Nr 5. Tabele tymczasowe (560)
  • Nr 6. Rzutowanie typów (561)
  • Nr 7. Kim jesteś? Która jest godzina? (562)
  • Nr 8. Przydatne funkcje matematyczne (563)
  • Nr 9. Indeksowanie dla poprawy szybkości działania zapytań (565)
  • Nr 10. Dwu-minutowy kurs PHP i MySQL-a (566)
Dodatek B Spróbuj to zrobić samemu
  • Zacznij działać i to szybko! (570)
  • Instrukcje i rozwiązywanie problemów (570)
  • Proces instalacji MySQL-a w systemie Windows (571)
Dodatek C Wszystkie nowe narzędzia SQL
  • Symbole (576)
Skorowidz (583)