Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00051 005965 13249205 na godz. na dobę w sumie
Zapytania w SQL. Przyjazny przewodnik - ebook/pdf
Zapytania w SQL. Przyjazny przewodnik - ebook/pdf
Autor: , Liczba stron: 712
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-283-1367-5 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> bazy danych >> access
Porównaj ceny (książka, ebook, audiobook).

Nowatorskie podejście do nauki SQL!

SQL (ang. Structured Query Language) to język zapytań pozwalający na wyciągnięcie interesujących informacji z relacyjnej bazy danych. Został opracowany w latach 60. w firmie IBM, a w 1986 r. stał się oficjalnym standardem. Znając jego możliwości, błyskawicznie odpowiesz na wiele pytań dotyczących Twoich klientów lub innych informacji przechowywanych w Twojej bazie danych.

Jeśli chcesz biegle tworzyć zapytania SQL, to trafiłeś na doskonałą pozycję. Dzięki ciekawej formie (autorzy starają się przedstawić język analogicznie do potocznie używanego) nauka jest przyjemna i efektywna. W kolejnych rozdziałach znajdziesz informacje na temat relacyjnych baz danych, ich struktury oraz zasad, które pozwolą Ci przygotować optymalny układ tabel i relacji między nimi. Stworzysz pierwsze zapytania z wykorzystaniem instrukcji SELECT i dodasz warunki, używając klauzuli WHERE. Gdy już będziesz się swobodnie poruszać w obrębie jednej tabeli, przejdziesz do tworzenia złączeń (JOIN) pomiędzy różnymi tabelami. Na koniec nauczysz się korzystać z podzapytań, funkcji agregujących oraz grupowania. Ta książka pozwoli Ci sprawnie rozpocząć pracę z SQL, niezależnie od jego implementacji.

Dzięki tej książce:

Jeśli pracujesz z systemami baz danych, takimi jak Access, MS SQL Server, Oracle, DB2, MySQL, Ingres czy dowolnym innym programem SQL, ta książka może zaoszczędzić Ci mnóstwa czasu i nerwów, i to zanim jeszcze napiszesz pierwsze zapytanie!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: SQL Queries for Mere Mortals®: A Hands-On Guide to Data Manipulation in SQL, Third Edition Tłumaczenie: Piotr Cieślak ISBN: 978-83-283-1364-4 Authorized translation from the English language edition, entitled: SQL QUERIES FOR MERE MORTALS: A HANDS-ON GUIDE TO DATA MANIPULATION IN SQL, Third Edition; ISBN: 0321992474; by John L. Viescas; and by Michael J. Hernandez; published by Pearson Education, Inc, publishing as Addison Wesley. Copyright © 2014 by John L. Viescas and Michael J. Hernandez All rights reserved. No part of this book may by 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 Pearson Education, Inc. Polish language edition published by HELION S.A. Copyright © 2015. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. 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. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/sqldkp.zip Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/sqldkp Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis tre(cid:295)ci S(cid:273)owo wst(cid:250)pne ................................................................... 15 Przedmowa ........................................................................ 17 Podziękowania .......................................................................................................18 O autorach ........................................................................ 19 Wst(cid:250)p ................................................................................ 21 Czy ta książka jest dla Ciebie? .............................................................................21 O tej książce ...........................................................................................................22 Czego nie należy oczekiwać po tej książce ........................................................24 Jak korzystać z tej książki .....................................................................................24 Interpretowanie diagramów zamieszczonych w tej książce ...........................25 Przykładowe bazy danych użyte w tej książce ..................................................29 „Podążaj drogą wybrukowaną żółtą kostką” .............................................31 Cz(cid:250)(cid:295)(cid:232) I Relacyjne bazy danych i SQL ................. 33 Rozdzia(cid:273) 1. Co to znaczy „relacyjna”? ................................................. 35 Rodzaje baz danych ..............................................................................................35 Krótka historia modelu relacyjnego ...................................................................36 Na początku był... ..........................................................................................36 Systemy relacyjnych baz danych .................................................................37 Anatomia relacyjnej bazy danych ...............................................................39 Co to oznacza dla Ciebie? ....................................................................................47 Co dalej? ..........................................................................................................48 Podsumowanie ......................................................................................................49 Rozdzia(cid:273) 2. Prawid(cid:273)owa struktura bazy danych ................................... 51 Skąd wziął się tutaj ten rozdział? ........................................................................52 Dlaczego warto się troszczyć o prawidłowe struktury? ...................................52 Optymalizacja pól .................................................................................................53 Odpowiednie dać rzeczy słowo (część pierwsza) ......................................53 Kosmetyka ......................................................................................................55 Poleć książkęKup książkę 6 Spis tre(cid:295)ci Eliminowanie pól wieloczęściowych ..........................................................57 Eliminowanie pól wielowartościowych ......................................................59 Optymalizacja tabel ..............................................................................................61 Odpowiednie dać rzeczy słowo (część druga) ...........................................61 Zapewnianie prawidłowej struktury ...........................................................64 Usuwanie zbędnych, powtarzających się pól ............................................65 Identyfikacja to klucz ....................................................................................69 Definiowanie poprawnych zależności ................................................................73 Definiowanie reguły usuwania ....................................................................75 Definiowanie rodzaju uczestnictwa ............................................................76 Określanie stopnia uczestnictwa .................................................................78 I to już wszystko? ..................................................................................................80 Podsumowanie ......................................................................................................80 Rozdzia(cid:273) 3. Krótka historia SQL .......................................................... 83 Początki SQL ..........................................................................................................84 Wczesne implementacje niezależnych producentów ......................................85 „...i wtedy narodził się standard” ........................................................................86 Ewolucja norm ANSI/ISO ...................................................................................88 Inne standardy SQL ......................................................................................90 Implementacje komercyjne .................................................................................93 Co przyniesie przyszłość? ....................................................................................94 Dlaczego warto się uczyć SQL? ...........................................................................94 Która wersja SQL została opisana w tej książce? ..............................................94 Podsumowanie ......................................................................................................95 Cz(cid:250)(cid:295)(cid:232) II Podstawy SQL ........................................ 97 Rozdzia(cid:273) 4. Tworzenie prostego zapytania ........................................... 99 SELECT (cid:127) wprowadzenie ................................................................................100 Instrukcja SELECT .............................................................................................100 Krótka dygresja: dane a informacje ..................................................................103 Przekładanie żądania na SQL ............................................................................104 Rozszerzanie zakresu działań ....................................................................108 Zastosowanie skrótu umożliwiającego odwołanie do wszystkich kolumn .............................................................................110 Eliminowanie powtarzających się wierszy ......................................................111 Sortowanie informacji ........................................................................................113 Zacznijmy od podstaw: kolejność sortowania ........................................115 Przywołajmy wyniki do porządku ............................................................115 Poleć książkęKup książkę Spis tre(cid:295)ci 7 Zapisywanie pracy ...............................................................................................118 Przykładowe instrukcje ......................................................................................119 Podsumowanie ....................................................................................................126 Zagadnienia do samodzielnego rozwiązania ..................................................127 Rozdzia(cid:273) 5. Nie tylko zwyk(cid:273)e kolumny ............................................... 129 Czym jest wyrażenie? ..........................................................................................130 Jakich typów danych można użyć w wyrażeniu? ...........................................131 Zmiana typu danych — funkcja CAST ............................................................133 Podawanie konkretnych wartości .....................................................................136 Literały w postaci łańcucha znaków .........................................................136 Literały numeryczne ...................................................................................137 Literały w postaci wartości daty i czasu ...................................................138 Rodzaje wyrażeń ..................................................................................................140 Konkatenacja ................................................................................................141 Wyrażenia matematyczne ..........................................................................143 Działania arytmetyczne na datach i godzinach .......................................147 Zastosowanie wyrażeń w klauzuli SELECT ....................................................151 Zastosowanie wyrażeń konkatenacji ........................................................151 Nazywanie wyrażenia .................................................................................152 Zastosowanie wyrażeń matematycznych .................................................154 Zastosowanie wyrażeń z użyciem dat .......................................................155 Krótka dygresja: wyrażenia wartości ........................................................156 „Żadna” wartość, czyli Null ...............................................................................158 Wprowadzenie wartości Null ....................................................................159 Problem z Null .............................................................................................160 Przykładowe instrukcje ......................................................................................161 Podsumowanie ....................................................................................................168 Zagadnienia do samodzielnego rozwiązania ..................................................169 Rozdzia(cid:273) 6. Filtrowanie danych ......................................................... 171 Uściślanie wyników za pomocą klauzuli WHERE .........................................172 Klauzula WHERE ........................................................................................172 Zastosowanie klauzuli WHERE ................................................................174 Definiowanie warunków wyszukiwania ..........................................................176 Porównanie ..................................................................................................176 Zakres ............................................................................................................183 Przynależność ...............................................................................................186 Dopasowywanie do wzorca ........................................................................188 Null ................................................................................................................192 Poleć książkęKup książkę 8 Spis tre(cid:295)ci Wykluczanie wierszy przy użyciu operatora NOT .................................194 Stosowanie wielu warunków .............................................................................196 Operatory AND i OR ..................................................................................197 Wykluczanie wierszy (cid:127) drugie podejście ...............................................202 Kolejność operatorów .................................................................................205 Sprawdzanie nakładających się zakresów ................................................209 Jeszcze o Null: mała przestroga .........................................................................211 Różne metody konstruowania wyrażeń warunkowych .................................214 Przykładowe instrukcje ......................................................................................215 Podsumowanie ....................................................................................................221 Zagadnienia do samodzielnego rozwiązania ..................................................222 Cz(cid:250)(cid:295)(cid:232) III Praca z wieloma tabelami ...................... 225 Rozdzia(cid:273) 7. My(cid:295)lenie zbiorami ........................................................... 227 Cóż to takiego ten zbiór? ....................................................................................228 Działania na zbiorach .........................................................................................229 Część wspólna ......................................................................................................230 Część wspólna w teorii zbiorów ................................................................230 Część wspólna zbiorów rezultatów ...........................................................231 Problemy, jakie można rozwiązywać dzięki znalezieniu części wspólnej ..........................................................................................234 Różnica .................................................................................................................235 Różnica w teorii zbiorów ............................................................................236 Różnica między zbiorami rezultatów .......................................................237 Problemy, jakie można rozwiązywać poprzez znajdowanie różnicy ...240 Suma .....................................................................................................................241 Suma w teorii zbiorów ................................................................................242 Suma zbiorów rezultatów ...........................................................................243 Problemy, jakie można rozwiązywać poprzez znajdowanie części wspólnej ..........................................................................................245 SQL i działania na zbiorach ...............................................................................246 Klasyczne działania na zbiorach a ich warianty w SQL .........................246 Znajdowanie wartości wspólnych: INTERSECT ....................................246 Znajdowanie brakujących wartości: EXCEPT (różnica) .......................249 Łączenie zbiorów: UNION ........................................................................252 Podsumowanie ....................................................................................................254 Poleć książkęKup książkę Spis tre(cid:295)ci 9 Rozdzia(cid:273) 8. Z(cid:273)(cid:230)czenie INNER JOIN ..................................................... 257 Co to jest JOIN? ...................................................................................................257 Złączenie INNER JOIN ......................................................................................258 Co można „legalnie” poddawać operacji JOIN? .....................................258 Odwołania do kolumn ................................................................................259 Składnia .........................................................................................................260 Sprawdź zależności! ....................................................................................274 Zastosowania INNER JOIN ...............................................................................275 Znajdowanie powiązanych wierszy ..........................................................275 Znajdowanie pasujących wartości ............................................................275 Przykładowe instrukcje ......................................................................................276 Dwie tabele ...................................................................................................277 Więcej niż dwie tabele ................................................................................281 Szukanie pasujących wartości ....................................................................286 Podsumowanie ....................................................................................................294 Zagadnienia do samodzielnego rozwiązania ..................................................294 Rozdzia(cid:273) 9. Z(cid:273)(cid:230)czenie OUTER JOIN .................................................... 299 Co to jest OUTER JOIN? ...................................................................................299 Złączenie LEFT/RIGHT OUTER JOIN ...........................................................301 Składnia .........................................................................................................301 Złączenie FULL OUTER JOIN .........................................................................318 Składnia .........................................................................................................319 FULL OUTER JOIN na wartościach niebędących kluczami ................321 Złączenie UNION JOIN .............................................................................322 Zastosowania OUTER JOIN .............................................................................322 Wyszukiwanie brakujących wartości ........................................................323 Wyszukiwanie częściowo pasujących informacji ...................................323 Przykładowe instrukcje ......................................................................................324 Podsumowanie ....................................................................................................335 Zagadnienia do samodzielnego rozwiązania ..................................................336 Rozdzia(cid:273) 10. Operacja UNION .............................................................. 339 Co to jest UNION? .............................................................................................339 Tworzenie zapytań z użyciem UNION ............................................................342 Zastosowanie prostych instrukcji SELECT .............................................342 Łączenie złożonych instrukcji SELECT ...................................................345 Zastosowanie operacji UNION więcej niż raz ........................................348 Sortowanie w operacji UNION .................................................................350 Poleć książkęKup książkę 10 Spis tre(cid:295)ci Zastosowania UNION ........................................................................................351 Przykładowe instrukcje ......................................................................................353 Podsumowanie ....................................................................................................361 Zagadnienia do samodzielnego rozwiązania ..................................................362 Rozdzia(cid:273) 11. Podzapytania ................................................................... 365 Co to jest podzapytanie? ....................................................................................366 Podzapytania o wiersze ...............................................................................366 Podzapytania o tabele .................................................................................367 Podzapytania skalarne ................................................................................368 Podzapytania służące do generowania kolumn ..............................................368 Składnia .........................................................................................................368 Wstęp do funkcji agregujących: COUNT i MAX ...................................371 Podzapytania jako filtry .....................................................................................373 Składnia .........................................................................................................373 Specjalne słowa kluczowe dla predykatów w podzapytaniach .............375 Zastosowania podzapytań ..................................................................................385 Używanie podzapytań w zapytaniach generujących kolumny .............385 Zastosowanie podzapytań w roli filtrów ..................................................386 Przykładowe instrukcje ......................................................................................387 Podzapytania w wyrażeniach .....................................................................388 Podzapytania w filtrach ..............................................................................392 Podsumowanie ....................................................................................................398 Zagadnienia do samodzielnego rozwiązania ..................................................398 Cz(cid:250)(cid:295)(cid:232) IV Podsumowywanie i grupowanie danych ...401 Rozdzia(cid:273) 12. Proste zestawienia .......................................................... 403 Funkcje agregujące ..............................................................................................403 Zliczanie wierszy i wartości z użyciem funkcji COUNT .......................406 Wyliczanie łącznej wartości za pomocą funkcji SUM ...........................409 Obliczanie wartości średniej za pomocą funkcji AVG ..........................410 Wyszukiwanie największej wartości za pomocą funkcji MAX .............411 Wyszukiwanie najmniejszej wartości za pomocą funkcji MIN ............413 Zastosowanie więcej niż jednej funkcji ....................................................414 Zastosowanie funkcji agregujących w filtrach ................................................415 Przykładowe instrukcje ......................................................................................417 Podsumowanie ....................................................................................................423 Zagadnienia do samodzielnego rozwiązania ..................................................423 Poleć książkęKup książkę Spis tre(cid:295)ci 11 Rozdzia(cid:273) 13. Grupowanie danych ......................................................... 427 Po co grupować dane? ........................................................................................428 Klauzula GROUP BY ..........................................................................................430 Składnia .........................................................................................................430 Mieszanie kolumn i wyrażeń .....................................................................435 Zastosowanie klauzuli GROUP BY w podzapytaniu w klauzuli WHERE ...................................................................................437 Symulowanie instrukcji SELECT DISTINCT .........................................438 „Z pewnymi zastrzeżeniami” .............................................................................439 Zastrzeżenia dotyczące kolumn ................................................................439 Grupowanie według wyrażeń ....................................................................441 Zastosowania GROUP BY .................................................................................442 Przykładowe instrukcje ......................................................................................443 Podsumowanie ....................................................................................................451 Zagadnienia do samodzielnego rozwiązania ..................................................452 Rozdzia(cid:273) 14. Filtrowanie zgrupowanych danych .................................. 455 Selekcja niejedno ma imię ..................................................................................456 Miejsce filtrowania nie jest bez znaczenia .......................................................460 Filtrowanie w klauzuli WHERE czy w HAVING? .................................460 Unikanie pułapki z HAVING COUNT ...................................................462 Zastosowania HAVING .....................................................................................467 Przykładowe instrukcje ......................................................................................468 Podsumowanie ....................................................................................................475 Zagadnienia do samodzielnego rozwiązania ..................................................475 Cz(cid:250)(cid:295)(cid:232) V Modyfikowanie zbiorów danych ........... 479 Rozdzia(cid:273) 15. Aktualizowanie zbiorów danych....................................... 481 Co to jest UPDATE? ...........................................................................................482 Instrukcja UPDATE ...........................................................................................482 Zastosowanie prostego wyrażenia UPDATE ..........................................483 Krótka dygresja: transakcje ........................................................................486 Aktualizowanie wielu kolumn ...................................................................487 Użycie podzapytania do filtrowania wierszy ...........................................488 Zastosowanie wyrażenia UPDATE w podzapytaniu .............................494 Zastosowania UPDATE .....................................................................................496 Przykładowe instrukcje ......................................................................................497 Podsumowanie ....................................................................................................511 Zagadnienia do samodzielnego rozwiązania ..................................................512 Poleć książkęKup książkę 12 Spis tre(cid:295)ci Rozdzia(cid:273) 16. Wstawianie zbiorów danych ............................................ 515 Co to jest INSERT? .............................................................................................515 Instrukcja INSERT ..............................................................................................517 Wstawianie wartości ...................................................................................517 Generowanie kolejnej wartości klucza głównego ...................................520 Wstawianie danych przy użyciu instrukcji SELECT ..............................522 Zastosowania INSERT .......................................................................................527 Przykładowe instrukcje ......................................................................................528 Podsumowanie ....................................................................................................537 Zagadnienia do samodzielnego rozwiązania ..................................................538 Rozdzia(cid:273) 17. Usuwanie zbiorów danych ............................................... 541 Co to jest DELETE? ............................................................................................541 Instrukcja DELETE .............................................................................................542 Usuwanie wszystkich wierszy ....................................................................543 Usuwanie wybranych wierszy ...................................................................545 Zastosowania DELETE ......................................................................................549 Przykładowe instrukcje ......................................................................................550 Podsumowanie ....................................................................................................557 Zagadnienia do samodzielnego rozwiązania ..................................................557 Cz(cid:250)(cid:295)(cid:232) VI Wst(cid:250)p do rozwi(cid:230)zywania trudnych problemów ............................ 561 Rozdzia(cid:273) 18. Problemy z NIE i ORAZ ................................................... 563 Krótkie przypomnienie zbiorów .......................................................................564 Zbiory z wieloma kryteriami ORAZ .........................................................564 Zbiory z wieloma kryteriami NIE .............................................................565 Zbiory spełniające jednocześnie kryteria „na tak” i „na nie” ................566 Uwzględnianie kryterium „na nie” ...................................................................567 Zastosowanie złączenia OUTER JOIN .....................................................568 Zastosowanie predykatu NOT IN .............................................................570 Zastosowanie predykatu NOT EXISTS ....................................................572 Zastosowanie klauzul GROUP BY / HAVING .......................................573 Uwzględnianie wielu kryteriów „na tak” .........................................................575 Zastosowanie INNER JOIN .......................................................................576 Zastosowanie predykatu IN .......................................................................578 Zastosowanie predykatu EXISTS ..............................................................580 Zastosowanie klauzul GROUP BY / HAVING .......................................581 Przykładowe instrukcje ......................................................................................584 Poleć książkęKup książkę Spis tre(cid:295)ci 13 Podsumowanie ....................................................................................................599 Zagadnienia do samodzielnego rozwiązania ..................................................600 Rozdzia(cid:273) 19. Operacje warunkowe ....................................................... 605 Wyrażenia warunkowe (CASE) ........................................................................605 Do czego może się przydać CASE? ...........................................................606 Składnia .........................................................................................................606 Rozwiązywanie problemów za pomocą CASE ...............................................610 Rozwiązywanie zadań przy użyciu prostej instrukcji CASE .................610 Rozwiązywanie zadań przy użyciu instrukcji CASE z wyszukiwaniem ......................................................................................614 Zastosowanie instrukcji CASE w klauzuli WHERE ...............................617 Przykładowe instrukcje ......................................................................................618 Podsumowanie ....................................................................................................629 Zagadnienia do samodzielnego rozwiązania ..................................................629 Rozdzia(cid:273) 20. Zastosowanie niepowi(cid:230)zanych danych i tabel „steruj(cid:230)cych” ....................................................... 633 Co to są niepowiązane dane? .............................................................................634 Kiedy warto użyć CROSS JOIN? ...............................................................637 Rozwiązywanie problemów przy użyciu niepowiązanych danych ..............637 Rozwiązywanie problemów z użyciem tabel „sterujących” ..........................640 Konfigurowanie tabeli sterującej ...............................................................641 Zastosowanie tabeli sterującej ...................................................................643 Przykładowe instrukcje ......................................................................................647 Przykłady z użyciem niepowiązanych tabel ............................................648 Przykłady z użyciem tabel sterujących .....................................................657 Podsumowanie ....................................................................................................663 Zagadnienia do samodzielnego rozwiązania ..................................................664 Na zako(cid:275)czenie ..................................................................................... 669 Dodatki ............................................................... 671 Dodatek A Diagramy zgodne ze standardem SQL ............................. 673 Dodatek B Schematy przyk(cid:273)adowych baz danych ............................. 683 Baza danych Zamówienia ..................................................................................684 Baza danych Zamówienia — zmiana ...............................................................685 Baza danych Agencja artystyczna .....................................................................686 Baza danych Agencja artystyczna — zmiana ..................................................687 Baza danych Grafik uczelni ...............................................................................688 Poleć książkęKup książkę 14 Spis tre(cid:295)ci Dodatek C Baza danych Grafik uczelni — zmiana ............................................................689 Baza danych Liga kręglarska .............................................................................690 Baza danych Liga kręglarska — zmiana ..........................................................691 Baza danych Przepisy .........................................................................................692 Typy daty i czasu, operacje i funkcje .............................. 693 IBM DB2 ...............................................................................................................693 IBM DB2 ...............................................................................................................694 Microsoft Office Access .....................................................................................696 Microsoft SQL Server .........................................................................................697 MySQL ..................................................................................................................699 Oracle ....................................................................................................................702 Dodatek D Polecane lektury ............................................................. 705 Książki poświęcone bazom danych ..................................................................705 Książki poświęcone SQL ....................................................................................705 Dodatek E S(cid:273)owniczek ...................................................................... 706 Skorowidz .............................................................................................. 707 Poleć książkęKup książkę SELECT ( wprowadzenie 99 4 Tworzenie prostego zapytania My(cid:258)l jak m(cid:218)drzec, ale komunikuj si(cid:218) j(cid:218)zykiem ludu. — William Butler Yeats Zagadnienia omówione w tym rozdziale SELECT (cid:127) wprowadzenie Instrukcja SELECT Krótka dygresja: dane a informacje Przekładanie żądania na SQL Eliminowanie powtarzających się wierszy Sortowanie informacji Zapisywanie pracy Przykładowe instrukcje Podsumowanie Zagadnienia do samodzielnego rozwiązania Teraz gdy poznałeś już szczyptę historii SQL, nadszedł najwyższy czas na naukę samego języka. Jak już wspomnieliśmy we „Wstępie”, większość tej książki jest poświęcona tym aspektom SQL, które służą do przetwarzania danych. Zaczniemy od prawdziwego wołu roboczego SQL — instrukcji SELECT. Poleć książkęKup książkę 100 Rozdzia(cid:273) 4. Tworzenie prostego zapytania SELECT (cid:127) wprowadzenie Najważniejsze spośród wszystkich słów kluczowych, SELECT, stanowi samo serce SQL. Jest to fundament najpotężniejszych i najbardziej złożonych instrukcji w całym języku, a zarazem narzędzie do pozyskiwania informacji znajdujących się w tabelach bazy danych. SELECT używa się w połączeniu z różnymi słowami kluczowymi i klauzulami, pozwalającymi na wyszukiwanie i wyświetlanie informacji na niemal nieskończenie wiele sposobów. Za pomocą SELECT można odpowiedzieć na prawie każde pytanie dotyczące tego „kto?”, „co?”, „gdzie?”, „kiedy?”, a nawet „co by było, gdyby?” i „jak?”. Jeśli tylko poprawnie zaprojektowałeś bazę i zgromadziłeś właściwe dane, to możesz w ten sposób pozyskać odpowiedzi ułatwiające podejmowanie ważnych decyzji w organizacji. W części V „Modyfikowanie zbiorów danych” przekonasz się, że wiele technik opanowanych podczas poznawania SELECT przyda Ci się do nauki innych instrukcji, takich jak UPDATE, INSERT i DELETE. Operację SELECT w SQL można podzielić na trzy mniejsze działania, do których będziemy się odwoływać jako do instrukcji SELECT, wyrażenia SELECT i zapytania SELECT. (Rozdzielenie operacji SELECT w taki sposób zdecydowanie ułatwia jej zrozumienie i docenienie jej złożoności). W ramach każdej z tych operacji można używać osobnego zbioru słów kluczowych i klauzul, co zapewnia elastyczność niezbędną do utworzenia finalnej instrukcji SQL, zgodnej z zapytaniem, które chcesz przekazać do bazy danych. W następnych rozdziałach dowiesz się, że operacje te można na wiele sposobów łączyć, by uzyskiwać odpowiedzi nawet na bardzo skomplikowane pytania. W tym rozdziale rozpoczniemy omawianie instrukcji SELECT i pokrótce przyjrzymy się zapytaniu SELECT. Instrukcję SELECT przeanalizujemy bardziej szczegółowo w dalszej części książki — w rozdziale 5. „Nie tylko zwykłe kolumny” i rozdziale 6. „Filtrowanie danych”. Uwaga. W innych ksi(cid:230)(cid:318)kach po(cid:295)wi(cid:250)conych relacyjnym bazom danych s(cid:273)owem relacja niekiedy okre(cid:295)la si(cid:250) tabel(cid:250), wiersz nazywa si(cid:250) krotk(cid:230) albo rekordem, za(cid:295) kolumn(cid:250) — atrybutem albo polem. Ale w standardzie SQL wymienione elementy struktury bazy danych zosta(cid:273)y nazwane odpowiednio: tabel(cid:230), wierszem oraz kolumn(cid:230). Pozostaniemy wierni stan- dardowi SQL i w dalszej cz(cid:250)(cid:295)ci ksi(cid:230)(cid:318)ki b(cid:250)dziemy pos(cid:273)ugiwa(cid:232) si(cid:250) w(cid:273)a(cid:295)nie tymi terminami. Instrukcja SELECT Instrukcja SELECT stanowi podstawę każdego zapytania do bazy danych. Utworzenie i wykonanie instrukcji SELECT tak naprawdę oznacza przekazanie zapytania do bazy. (Zdajemy sobie sprawę, że zapewne nie musimy tego tłumaczyć, ale chcemy mieć pewność, iż każdy czytający te słowa zacznie od tego samego punktu wyjścia). Wiele programów RDBMS umożliwia zapisywanie instrukcji SELECT w postaci zapytania, widoku, funkcji albo procedury składowanej. Za każdym razem, gdy ktoś mówi, że chce przekazać zapytanie do bazy danych, Poleć książkęKup książkę Instrukcja SELECT 101 możesz być pewny, że zamierza on w jakiejś formie wykonać instrukcję SELECT. W zależności od programu RDBMS instrukcje SELECT mogą być wykonywane bezpośrednio w oknie wiersza poleceń, za pośrednictwem interaktywnego szablonu typu QBE (Query by Example) albo z poziomu kodu. Niezależnie od sposobu zdefiniowania i wykonania instrukcji SELECT jej składnia pozostaje bez zmian. Uwaga. Wiele systemów baz danych jest wyposa(cid:318)onych w rozszerzenia standardu SQL umo(cid:318)liwiaj(cid:230)ce tworzenie skomplikowanych konstruk- cji programistycznych (w rodzaju If ... Then ... Else) w ramach funkcji i sk(cid:273)adowanych procedur, ale sk(cid:273)adnia tych konstrukcji jest inna w przypadku ka(cid:318)dego z tych produktów. Omówienie cho(cid:232)by jednego lub dwóch takich j(cid:250)zyków programowania — na przyk(cid:273)ad Transact-SQL z systemu Microsoft SQL Server albo PL/SQL firmy Oracle — zdecy- dowanie wykracza poza zakres materia(cid:273)u tej ksi(cid:230)(cid:318)ki. (Jednak w roz- dziale 19. „Operacje warunkowe” omówili(cid:295)my podstawow(cid:230) konstrukcj(cid:250) If ... Then ... Else [CASE], przewidzian(cid:230) w standardzie SQL). Podczas pisania funkcji i procedur sk(cid:273)adowanych dla konkretnego systemu baz danych wci(cid:230)(cid:318) u(cid:318)ywa si(cid:250) podstawowej formy instrukcji SELECT. W dalszej cz(cid:250)(cid:295)ci tej ksi(cid:230)(cid:318)ki u(cid:318)ywali(cid:295)my poj(cid:250)cia widok do nazywania zapisanych instrukcji SQL, nawet je(cid:295)li w(cid:273)asn(cid:230) instrukcj(cid:250) SQL umie- (cid:295)cisz w ramach funkcji albo procedury. Instrukcja SELECT składa się z kilku szczególnych słów kluczowych, zwanych klauzulami. Instrukcję SELECT definiuje się poprzez zastosowanie różnych konfiguracji owych klauzul, mających na celu pozyskanie żądanych informacji. Niektóre klauzule są wymagane, inne — opcjonalne. Ponadto każda klauzula jest powiązana z jednym albo kilkoma słowami kluczowymi, które odzwierciedlają wymagane albo opcjonalne wartości. Wartości podane w klauzulach pomagają w uzyskaniu informacji żądanych przez całą instrukcję SELECT. Rysunek 4.1 przedstawia diagram ilustrujący instrukcję SELECT i jej klauzule. Uwaga. Diagram sk(cid:273)adni pokazany na rysunku 4.1 przedstawia pod- stawowy wariant instrukcji SELECT. Diagram ten b(cid:250)dziemy aktualizowa(cid:232) i modyfikowa(cid:232) w miar(cid:250) wprowadzania i wyja(cid:295)niania nowych s(cid:273)ów klu- czowych i klauzul. Tych czytelników, którzy maj(cid:230) ju(cid:318) pewne do(cid:295)wiad- czenie w konstruowaniu instrukcji SQL, prosimy o cierpliwo(cid:295)(cid:232) i wyro- zumia(cid:273)o(cid:295)(cid:232). Oto krótkie podsumowanie klauzul w instrukcji SELECT. (cid:132) SELECT. Jest to podstawowa i zarazem bezwzględnie wymagana klauzula instrukcji SELECT. Używa się jej do określenia kolumn, które mają być uwzględnione w zbiorze wyników zapytania. Kolumny te znajdują się w tabeli lub widoku określonym Poleć książkęKup książkę 102 Rozdzia(cid:273) 4. Tworzenie prostego zapytania Rysunek 4.1. Diagram instrukcji SELECT w klauzuli FROM. (Istnieje możliwość jednoczesnego odwołania się do kolumn z różnych tabel, ale tą kwestią zajmiemy się później (cid:127) w części III „Praca z wieloma tabelami”). W ramach tej klauzuli można też użyć funkcji agregujących, takich jak SUM(PrzepracowaneGodziny) albo wyrażeń matematycznych, jak Ilosc * Cena. (cid:132) FROM. Jest to druga najważniejsza klauzula w instrukcji SELECT, także wymagana. Klauzuli FROM używa się do określenia tabel albo widoków, z których mają być zaczerpnięte kolumny podane w klauzuli SELECT. Istnieje możliwość wykorzystania tej klauzuli w bardziej złożony sposób, ale o tym opowiemy w kolejnych rozdziałach. (cid:132) WHERE. Jest to klauzula opcjonalna, której używa się do przefiltrowania wierszy zwróconych przez klauzulę FROM. Po słowie kluczowym WHERE następuje wyrażenie, fachowo nazywane predykatem, które zwraca logiczną prawdę (true), fałsz (false) lub wynik nieokreślony. Rezultatu tego wyrażenia można użyć w konstrukcjach ze zwykłymi operatorami porównania, operatorami boolowskimi lub operatorami specjalnymi. O wszystkich tych aspektach klauzuli WHERE przeczytasz w rozdziale 6. (cid:132) GROUP BY. Jeśli użyjesz funkcji agregujących w klauzuli SELECT z myślą o uzyskaniu informacji zbiorczych, możesz użyć klauzuli GROUP BY do podzielenia tych informacji na grupy. Twój system bazodanowy użyje kolumny (lub listy kolumn) podanej po słowie kluczowym GROUP BY do pogrupowania otrzymanych informacji. Klauzula GROUP BY jest opcjonalna, a jej działaniu przyjrzymy się uważnie w rozdziale 13. „Grupowanie danych”. (cid:132) HAVING. Klauzula HAVING filtruje rezultaty funkcji agregujących w ramach pogrupowanych informacji. Jest podobna do klauzuli WHERE pod tym względem, że po słowie kluczowym HAVING należy podać wyrażenie zwracające logiczną prawdę, fałsz lub wynik nieokreślony. Rezultatu tego wyrażenia można użyć w konstrukcjach Poleć książkęKup książkę Krótka dygresja: dane a informacje 103 ze zwykłymi operatorami porównania, operatorami boolowskimi lub operatorami specjalnymi. HAVING także jest klauzulą opcjonalną, której działanie omówimy szczegółowo w rozdziale 14. „Filtrowanie zgrupowanych danych”. Najpierw zajmiemy się bardzo prostą wersją instrukcji SELECT, w której skupimy się na klauzulach SELECT i FROM. W kolejnych rozdziałach będziemy stopniowo, po jednej, wprowadzać kolejne klauzule umożliwiające konstruowanie bardziej złożonych instrukcji SELECT. Krótka dygresja: dane a informacje Zanim wyślemy do bazy danych pierwsze zapytanie, musimy wyjaśnić sobie jedną ważną rzecz, a mianowicie istotną różnicę między danymi a informacją. Pokrótce: dane są tym, co jest przechowywane w bazie, zaś informacje to to, co się z tej bazy pozyskuje. Tę różnicę warto sobie uświadomić, ponieważ ułatwia ona spojrzenie na omawiane kwestie z odpowiedniej perspektywy. Pamiętaj, że baza danych jest zaprojektowana tak, by dostarczała informacje cenne z perspektywy członków Twojej organizacji. Takie informacje można jednak z niej pozyskać jedynie wówczas, gdy w bazie znajdują się właściwe dane, a sama baza została opracowana w sposób adekwatny do rodzaju tych danych. Przeanalizujmy te pojęcia bardziej szczegółowo. Wartości przechowywane w bazie danych to dane. Dane są statyczne w tym sensie, że pozostają w tym samym stanie, aż je zmodyfikujesz — ręcznie lub wskutek uruchomienia automatycznego procesu. Rysunek 4.2 przedstawia przykładowe dane. Rysunek 4.2. Przyk(cid:228)adowe, zwyk(cid:228)e dane W tej postaci podane dane są pozbawione znaczenia. Nie da się na przykład łatwo określić, co oznacza wartość 89931. Czy to kod pocztowy? Numer jakiegoś podzespołu? Nawet jeśli wiesz, że jest to numer identyfikacyjny klienta, to czy rzeczywiście jest on powiązany z Katherine Ehrlich? Tego się nie dowiemy, dopóki dane nie zostaną przetworzone. Po przetworzeniu danych tak, by nabrały konkretnego znaczenia i były zrozumiałe oraz przydatne w celach poglądowych, albo nadawały się do wykorzystania podczas dalszej pracy, dane te stają się informacjami. Informacje są dynamiczne w tym sensie, że ulegają nieustannym zmianom względem danych przechowywanych w bazie, a także w tym sensie, że można je przetwarzać i prezentować na nieskończoną liczbę sposobów. Otrzymane informacje możesz wyświetlić bezpośrednio jako rezultat wydania instrukcji SELECT, umieścić je w formularzu na ekranie komputera lub wydrukować w postaci raportu. Najważniejsza sprawa do zapamiętania to że dane należy przetworzyć w sposób umożliwiający pozyskanie z nich informacji mających określone znaczenie. Poleć książkęKup książkę 104 Rozdzia(cid:273) 4. Tworzenie prostego zapytania Rysunek 4.3 przedstawia dane z poprzedniego przykładu przekształcone w informacje wyświetlone na ekranie klienta. Ten rysunek ilustruje możliwość wykorzystania danych w taki sposób, że staną się one zrozumiałe dla każdego, kto je przegląda. Rysunek 4.3. Przyk(cid:228)ad danych przetworzonych na informacje Przy pracy z instrukcjami SELECT poszczególne klauzule służą do przetwarzania danych, ale sama instrukcja zwraca informacje. Rozumiesz już, na czym to polega? Jest jeszcze jedna kwestia, którą należy poruszyć. Otóż instrukcja SELECT zwykle zwraca jeden lub kilka wierszy informacji — dokładna ich liczba zależy od sposobu sformułowania tej instrukcji. Te wiersze łącznie są nazywane zbiorem rezultatów i właśnie takim pojęciem będziemy się posługiwać w dalszej części tej książki. Ta nazwa jest wyjątkowo trafna, ponieważ podczas korzystania z relacyjnej bazy danych zawsze pracuje się ze zbiorami danych. (Przypominamy, że model relacyjny w pewnym stopniu opiera się na teorii zbiorów). Informacje w zbiorze rezultatów można łatwo przeglądać, a w wielu przypadkach także modyfikować. Ponownie jednak wszystko to zależy od sposobu skonstruowania instrukcji SELECT. Zabierzmy się zatem do pracy i zacznijmy używać instrukcji SELECT. Przek(cid:273)adanie (cid:318)(cid:230)dania na SQL Gdy chcesz pozyskać z bazy danych jakieś informacje, to takie żądanie zwykle ma formę pytania lub zdania implikującego pytanie. Żądanie można sformułować na przykład tak: W jakich miastach mieszkają nasi klienci? Pokaż mi bieżącą listę pracowników wraz z ich numerami telefonów. Jakiego rodzaju zajęcia obecnie oferujemy? Podaj mi nazwiska ludzi z naszego zespołu i daty ich zatrudnienia. Kiedy już będziesz wiedział, o co chcesz zapytać, możesz nadać swojemu żądaniu bardziej oficjalną formę. Przekładu należy dokonać na podstawie poniższego wzoru: Wybierz obiekt z źródło Poleć książkęKup książkę Przek(cid:273)adanie (cid:318)(cid:230)dania na SQL 105 Zacznij od przeanalizowania swojego żądania i zastąp słowa lub frazy takie jak „zrób listę”, „pokaż mi”, „którzy” albo „kto” słowem „wybierz”. Następnie wyszukaj w żądaniu rzeczowniki i sprawdź, czy dany rzeczownik odpowiada obiektowi, który chciałbyś wyświetlić, czy raczej nazwie tabeli, w której ów obiekt może się znajdować. Jeśli rzeczownik jest obiektem, zastąp nim pozycję obiekt we wzorze przekładu. Jeśli jest to nazwa tabeli, zastąp nią element źródło . Jeżeli według tego wzoru przetłumaczysz na przykład pierwsze pytanie z poprzedniej listy, to otrzymana instrukcja będzie wyglądała mniej więcej tak: Wybierz miasto z tabeli klienci Po dokonaniu przekładu na postać przypominającą zapytanie otrzymane zdanie trzeba przekształcić na instrukcję SELECT z prawdziwego zdarzenia, korzystając ze składni SQL pokazanej na rysunku 4.4. Pierwszy krok powinien polegać na uporządkowaniu wstępnego przekładu. Aby to zrobić, wystarczy wykreślić wszystkie słowa, które nie są rzeczownikami odpowiadającymi nazwie kolumny lub tabeli, a także wszelkie słowa nienależące do składni SQL. Oto przykład wcześniejszego zdania po takim oczyszczeniu: Wybierz miasto z tabeli Klienci Po usunięciu wykreślonych słów i zastąpieniu słów kluczowych odpowiednikami z SQL w języku angielskim otrzymujemy gotową instrukcję SELECT: SELECT Miasto FROM Klienci Słowniczek wybierz, wybrane etc. — SELECT z — FROM Rysunek 4.4. Sk(cid:228)adnia prostej instrukcji SELECT Uwaga. Autorzy ksi(cid:230)(cid:318)ki przyj(cid:250)li koncepcj(cid:250) etapowego „t(cid:273)umaczenia” zwy- k(cid:273)ych zda(cid:275) na zapytania SQL. W j(cid:250)zyku polskim wi(cid:230)(cid:318)e si(cid:250) to z dodat- kow(cid:230) trudno(cid:295)ci(cid:230), wynikaj(cid:230)c(cid:230) z konieczno(cid:295)ci prze(cid:273)o(cid:318)enia s(cid:273)ów i okre(cid:295)le(cid:275) u(cid:318)ywanych w mowie potocznej na odpowiedniki w postaci poszczegól- nych instrukcji i klauzul SQL. Aby to u(cid:273)atwi(cid:232), przy wprowadzaniu kolej- nych elementów j(cid:250)zyka w ksi(cid:230)(cid:318)ce zosta(cid:273)y zawarte s(cid:273)owniczki podobne do zamieszczonego powy(cid:318)ej. W dodatku E „S(cid:273)owniczek” znajduje si(cid:250) lista najwa(cid:318)niejszych zwrotów. Poleć książkęKup książkę 106 Rozdzia(cid:273) 4. Tworzenie prostego zapytania Przedstawionego przed chwilą trzyetapowego procesu „tłumaczenia” można użyć w odniesieniu do dowolnego żądania, jakie zamierzasz przekazać do bazy danych. Co więcej, techniki tej używamy przez większą część tej książki i podczas nauki konstruowania tego rodzaju instrukcji zachęcamy Cię do posługiwania się nią. Z upływem czasu, gdy opanujesz już konstruowanie instrukcji SELECT, nauczysz się intuicyjnie łączyć wszystkie wymienione czynności w jedną operację. Pamiętaj, że na początku nauki posługiwania się SQL będziesz pracował głównie z kolumnami i tabelami. Dobrze pokazuje to diagram składni przedstawiony na rysunku 4.4, na którym po klauzuli SELECT następuje tylko pozycja nazwa_kolumny, zaś po klauzuli FROM — pozycja nazwa_tabeli. W następnym rozdziale dowiesz się, w jaki sposób używać innych wyrażeń w ramach tych klauzul, by konstruować bardziej złożone instrukcje SELECT. Zapewne zwróciłeś uwagę na to, że żądanie omówione w poprzednim przykładzie jest stosunkowo proste. Łatwo było przetłumaczyć je na instrukcję i określić nazwy kolumny i tabeli, które powinny w niej wystąpić. Ale co zrobić, jeśli żądanie nie jest tak proste do przetłumaczenia i trudno jest w nim zidentyfikować kolumny, które należy podać w instrukcji SELECT? Najprostsze wyjście polega na dopracowaniu i skonkretyzowaniu go. Na przykład żądanie w rodzaju Wyświetl mi informacje o naszych klientach można sprecyzować i sformułować tak: Wyświetl nazwiska, miasta zamieszkania i numery telefonów wszystkich naszych klientów. Jeśli doprecyzowanie żądania nie rozwiązuje problemu, nadal pozostają Ci dwa wyjścia. Pierwsze polega na sprawdzeniu, czy w tabeli podanej w klauzuli FROM instrukcji SELECT znajdują się jakieś kolumny, które pozwoliłyby na sprecyzowanie żądania i w ten sposób ułatwiły przekształcenie go na instrukcję. Druga opcja polega na uważniejszym przeanalizowaniu żądania pod kątem tego, czy jakieś zawarte w nim słowo lub fraza implikują konkretne nazwy kolumn. Możliwość zastosowania jednego lub obydwu tych wyjść zależy od samego żądania. Warto po prostu o nich pamiętać, gdy zetkniesz się z pytaniem, które trudno Ci będzie przełożyć na instrukcję. Przyjrzyjmy się przykładom zastosowania obydwu wymienionych technik i sposobowi ich zastosowania w typowej sytuacji. Aby zilustrować pierwszą technikę, przypuśćmy, że chcesz przełożyć na instrukcję następujące żądanie: Potrzebuję imion, nazwisk i adresów wszystkich naszych pracowników. Pozornie to żądanie wygląda na bardzo proste. Ale jeśli uważnie mu się przyjrzysz, dostrzeżesz jeden drobny problem: choć da się na jego podstawie określić nazwę docelowej tabeli (Pracownicy), to nic w tym żądaniu nie wskazuje na kolumny, jakie należy w tej instrukcji uwzględnić. Choć w żądaniu pojawiają się słowa takie jak nazwiska i adresy, są to pojęcia dość ogólne. Ten problem można rozwiązać poprzez zapoznanie się ze zidentyfikowaną przed chwilą tabelą i określenie, czy zawiera ona jakieś kolumny, które można byłoby podstawić pod niejednoznaczne określenia. Jeśli tak, użyj nazw tych kolumn w docelowej instrukcji. (Jeżeli pomoże Ci to w lepszym wyobrażeniu sobie instrukcji, to w przetłumaczonym żądaniu możesz użyć uogólnionych nazw kolumn, pamiętaj jedynie, że w docelowej składni SQL będziesz musiał zastosować te prawdziwe). W tym przypadku w tabeli Pracownicy pokazanej na rysunku 4.5 należy poszukać takich nazw kolumn, którymi można byłoby zastąpić słowa „imiona”, „nazwiska” i „adresy”. Poleć książkęKup książkę Przek(cid:273)adanie (cid:318)(cid:230)dania na SQL 107 Rysunek 4.5. Struktura tabeli Pracownicy Aby w pełni zrealizować żądanie dotyczące „imion, nazwisk i adresów”, trzeba użyć sześciu kolumn z podanej tabeli. Kolumny ImiePracownika i NazwiskoPracownika rozwiążą kwestię „imion i nazwisk”, zaś AdresPracownika, MiastoPracownika, StanZamPracownika i KodPocztowyPracownika spełnią wymagania związane z podaniem „adresów”. Teraz można zastosować opisany wcześniej proces tłumaczenia żądania, które dla ułatwienia powtórzymy raz jeszcze. (W przetłumaczonym żądaniu użyjemy ogólnych nazw kolumn, a w instrukcji SQL — już tych prawdziwych). Potrzebuję imion, nazwisk i adresów wszystkich naszych pracowników. Tłumaczenie Wybierz imię, nazwisko, adres, miasto, stan oraz kod pocztowy z tabeli Pracownicy Porządkowanie Wybierz imię, nazwisko, adres, miasto, stan, oraz kod pocztowy SQL z tabeli Pracownicy SELECT ImiePracownika, NazwiskoPracownika, AdresPracownika, MiastoPracownika, StanZamPracownika, KodPocztowyPracownika FROM Pracownicy Uwaga. Powy(cid:318)szy przyk(cid:273)ad przyst(cid:250)pnie ilustruje mo(cid:318)liwo(cid:295)(cid:232) zastosowa- nia kilku kolumn w klauzuli SELECT. Mo(cid:318)liwo(cid:295)(cid:232) t(cid:250) omówimy bardziej szczegó(cid:273)owo w dalszej cz(cid:250)(cid:295)ci tego rozdzia(cid:273)u. Kolejny przykład ilustruje drugą z wymienionych wcześniej metod, która polega na sprawdzeniu, czy jakieś słowa w żądaniu implikują nazwy kolumn. Przypuśćmy, że chcemy poddać tłumaczeniu następujące żądanie: Jakiego rodzaju zajęcia obecnie oferujemy? Na pierwszy rzut oka przetłumaczenie tego żądania na instrukcję wydaje się trudne. W żądaniu nie padają nazwy kolumn, a skoro nie mamy żadnego obiektu do wybrania, to nie możemy skonstruować kompletnej instrukcji. Co zrobić w takiej sytuacji? Przyjrzyj Poleć książkęKup książkę 108 Rozdzia(cid:273) 4. Tworzenie prostego zapytania się każdemu słowu w żądaniu i zastanów się, czy któreś z nich implikuje nazwę kolumny w tabeli Zajecia. Zanim przystąpisz do dalszego czytania, poświęć chwilę na przemyślenie tego żądania. Czy dostrzegasz takie słowo? W tym przypadku słowem mogącym sugerować nazwę kolumny w tabeli Zajecia jest „rodzaj”. Dlaczego? Ponieważ przy założeniu, że mamy do czynienia z bazą danych szkoły lub uczelni, rodzaj zajęć można zinterpretować jako „przedmiot” lub „dziedzina”. Jeśli w tabeli Zajecia istnieje kolumna o nazwie Przedmiot, to znaczy, że właśnie tej kolumny potrzebujesz, by skompletować przekład żądania, a w rezultacie otrzymać instrukcję SELECT. Przypuśćmy, że w tabeli Zajecia rzeczywiście istnieje kolumna o nazwie Przedmiot, i na tej podstawie ponownie przeprowadźmy opisany wcześniej trzyetapowy proces translacji. Jakiego rodzaju zajęcia obecnie oferujemy? Tłumaczenie Wybierz przedmiot z tabeli zajęcia Porządkowanie Wybierz przedmiot z tabeli zajęcia SQL SELECT Przedmiot FROM Zajecia Jak wynika z tego przykładu, omawiana technika polega na umiejętnym wyszukiwaniu synonimów, którymi można zastąpić określone słowa lub frazy w żądaniu. Jeśli znajdziesz słowo albo frazę, które mogą sugerować nazwę kolumny, spróbuj zastąpić je synonimem. Może się okazać, że trafnie dobrany synonim rzeczywiście będzie pasował do jednej z kolumn w bazie danych. Jeżeli pierwszy synonim, jaki przyjdzie Ci do głowy, nie zadziała — wypróbuj inny. Kontynuuj ten proces, aż znajdziesz synonim pasujący do jednej z kolumn bądź do chwili, gdy uznasz, że ani oryginalnego określenia, ani żadnego z określeń bliskoznacznych nie da się dopasować do kolumn w tabeli. Uwaga. Je(cid:295)li nie zosta(cid:273)o podane inaczej, nazwy kolumn i tabel u(cid:318)yte w sk(cid:273)adni SQL instrukcji zosta(cid:273)y zaczerpni(cid:250)te z przyk(cid:273)adowych baz danych, przedstawionych w dodatku B „Schematy przyk(cid:273)adowych baz danych”. Ta zasada dotyczy wszystkich przyk(cid:273)adów w dalszej cz(cid:250)(cid:295)ci ksi(cid:230)(cid:318)ki (z niewielkimi odst(cid:250)pstwami zwi(cid:230)zanymi z konieczno(cid:295)ci(cid:230) dopa- sowania poziomu skomplikowania zapyta(cid:275) do bie(cid:318)(cid:230)cego etapu nauki). Rozszerzanie zakresu dzia(cid:273)a(cid:275) Za pomocą instrukcji SELECT można odwołać się do kilku kolumn równie łatwo jak do jednej. Wystarczy wymienić żądane kolumny po klauzuli SELECT, rozdzielając ich nazwy przecinkami. Na diagramie składni pokazanym na rysunku 4.6 możliwość użycia kilku kolumn została pokazana w postaci linii biegnącej od prawej do lewej strony, pod napisem nazwa_kolumny. Przecinek pośrodku linii oznacza, że przed wpisaniem nazwy kolejnej kolumny, do której chcesz się odwołać za pomocą klauzuli SELECT, należy wstawić przecinek. Poleć książkęKup książkę Przek(cid:273)adanie (cid:318)(cid:230)dania na SQL 109 Rysunek 4.6. Sk(cid:228)adnia klauzuli SELECT umo(cid:276)liwiaj(cid:241)ca odwo(cid:228)anie si(cid:246) do wielu kolumn Możliwość podania wielu kolumn w instrukcji SELECT umożliwia znalezienie odpowiedzi na pytania takie jak poniższe: Zrób aktualną listę pracowników wraz z ich numerami telefonów. Tłumaczenie Wybierz nazwisko, imię oraz numer telefonu wszystkich naszych pracowników z tabeli Pracownicy Porządkowanie Wybierz nazwisko, imię, oraz numer telefonu wszystkich naszych SQL pracowników z tabeli Pracownicy SELECT NazwiskoPracownika, ImiePracownika, TelefonPracownika FROM Pracownicy Jak nazywają się i ile kosztują produkty, które sprzedajemy, i do jakiej kategorii należy każdy z nich? Tłumaczenie Wybierz nazwę, cenę oraz kategorię wszystkich produktów z tabeli Produkty Porządkowanie Wybierz nazwę, cenę, oraz kategorię wszystkich produktów z tabeli SQL Produkty SELECT NazwaProduktu, CenaDetaliczna, Kategoria FROM Produkty Odwołanie się do kilku kolumn w instrukcji SELECT ma tę zaletę, że umożliwia wyświetlenie większego spektrum informacji. Nawiasem mówiąc, kolejność kolumn w klauzuli SELECT nie jest istotna — można wymienić je w dowolnym porządku. To zaś umożliwia wyświetlenie tych samych informacji na różne sposoby. Przypuśćmy, że masz do dyspozycji tabelę pokazaną na rysunku 4.7 i zostałeś poproszony o skonstruowanie podanego niżej żądania do bazy danych: Rysunek 4.7. Struktura tabeli Przedmioty Poleć książkęKup książkę 110 Rozdzia(cid:273) 4. Tworzenie prostego zapytania Podaj listę przedmiotów, dziedzinę, do której należy każdy z nich, oraz przypisane im numery kodowe w naszym katalogu. Chciałbym, aby zestawienie rozpoczynało się od przedmiotu, po nim następowała dziedzina, a na końcu kod. To żądanie także można przekształcić na odpowiednią instrukcję SELECT, pomimo że zgłaszająca je osoba życzy sobie ustawienia kolumn w określonym porządku. Aby uzyskać taki efekt, wystarczy podać nazwy kolumn w oczekiwanej kolejności przy tłumaczeniu żądania na instrukcję. Oto jak powinien wyglądać proces translacji wspomnianego żądania na instrukcję SELECT: Słowniczek Pola kluczy często są nazywane z użyciem przedrostka ID, od określenia identyfikator. W dalszej części książki w celu skrócenia zap
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Zapytania w SQL. Przyjazny przewodnik
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: