Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00608 009811 10450024 na godz. na dobę w sumie
MySQL - książka
MySQL - książka
Autor: Liczba stron: 608
Wydawca: Helion Język publikacji: polski
ISBN: 83-7361-170-3 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> bazy danych >> mysql - programowanie
Porównaj ceny (książka, ebook, audiobook).

Przewodnik zaawansowanego programisty

Zaawansowani programiści na całym świecie wybierają MySQL jako podstawę swoich aplikacji opartych na WWW. Książka, którą trzymasz w ręku, dostarczy Ci wiedzy i przykładowego kodu; elementów niezbędnych do szybkiego pisania własnych aplikacje, niezależnie od stopnia ich skomplikowania.

Książka rozpoczyna się od omówienia podstaw MySQL-a: zapytań SQL, zasad projektowania baz danych, normalizacji, transakcji i przetwarzania równoległego. Następnie w usystematyzowany sposób opisuje szczegółowe możliwości MySQL oraz przedstawia efektywne techniki dostępu do baz MySQL-a z poziomu C, Javy, PHP, Perla, Pythona i innych środowisk programistycznych.

W książce opisano między innymi: Dokładnie przestudiowana i zalecana przez twórcę MySQL-a, Michaela Wideniusa, książka 'MySQL' dostarcza profesjonalnym programistom tego, czego poszukiwali: dogłębnej, przemyślanej wiedzy, potrzebnej do tworzenia zaawansowanych aplikacji.

Leon Atkinson jest autorem książki 'PHP. Programowanie'. Jest też inicjatorem projektu FreeTrade: zestawu narzędzi open source wykorzystującego MySQL i PHP. Atkinson od 1997 roku używa MySQL w wielu aplikacjach sieciowych i e-commerce.

Polecana przez Michaela Wideniusa, twórcę MySQL-a

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

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI MySQL KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG Autor: Leon Atkinson T³umaczenie: Jaros³aw Dobrzañski, Tomasz ¯mijewski ISBN: 83-7361-170-3 Tytu³ orygina³u: Core MySQL Format: B5, stron: 608 TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl Zaawansowani programiġci na ca³ym ġwiecie wybieraj¹ MySQL jako podstawê swoich aplikacji opartych na WWW. Ksi¹¿ka, któr¹ trzymasz w rêku, dostarczy Ci wiedzy i przyk³adowego kodu; elementów niezbêdnych do szybkiego pisania w³asnych aplikacje, niezale¿nie od stopnia ich skomplikowania. Ksi¹¿ka rozpoczyna siê od omówienia podstaw MySQL-a: zapytañ SQL, zasad projektowania baz danych, normalizacji, transakcji i przetwarzania równoleg³ego. Nastêpnie w usystematyzowany sposób opisuje szczegó³owe mo¿liwoġci MySQL oraz przedstawia efektywne techniki dostêpu do baz MySQL-a z poziomu C, Javy, PHP, Perla, Pythona i innych ġrodowisk programistycznych. W ksi¹¿ce opisano miêdzy innymi: • Instalacjê i korzystanie z MySQL-a -- wraz ze szczegó³owym opisem implementacji SQL w MySQL-u • Typy danych, zmienne, funkcje wbudowane i narzêdzia dostêpne z linii komend API MySQL w jêzyku C • Administracjê bazami MySQL, wykonywanie kopii zapasowych i usuwanie skutków awarii • Optymalizacjê i zabezpieczanie aplikacji • Tworzenie rozproszonych baz danych • Rozszerzanie funkcjonalnoġci MySQL-a • Tworzenie baz danych przenoġnych na inne platformy Dok³adnie przestudiowana i zalecana przez twórcê MySQL-a, Michaela Wideniusa, ksi¹¿ka „MySQL” dostarcza profesjonalnym programistom tego, czego poszukiwali: dog³êbnej, przemyġlanej wiedzy, potrzebnej do tworzenia zaawansowanych aplikacji. Leon Atkinson jest autorem ksi¹¿ki „PHP. Programowanie”. Jest te¿ inicjatorem projektu FreeTrade: zestawu narzêdzi open source wykorzystuj¹cego MySQL i PHP. Atkinson od 1997 roku u¿ywa MySQL w wielu aplikacjach sieciowych i e-commerce. Spis treści Wstęp...................................................z...................................................z......................................................11 Część I MySQL i model relacyjny 13 Rozdział 1. Wprowadzenie do MySQL ...................................................z.....................................................15 Jak się korzysta z baz danych?...................................................z.................................... 16 Dlaczego bazy danych są lepsze niż pliki? ...................................................z.................... 23 Bazy danych nie są lekiem na całe zło ...................................................z......................... 25 Dlaczego MySQL? ...................................................z...................................................z... 26 Historia MySQL...................................................z...................................................z....... 27 Rozdział 2. Instalacja MySQL ...................................................z................................................................. 29 Pobieranie plików instalacyjnych...................................................z.................................. 29 Linux RPM ...................................................z...................................................z.............. 30 Windows ...................................................z...................................................z................ 31 Kompilowanie kodu źródłowego...................................................z................................... 33 Nadawanie uprawnień ...................................................z................................................ 33 Rozdział 3. Interakcja z MySQL ...................................................z............................................................. 35 Połączenie klient-serwer poprzez TCP/IP ...................................................z...................... 35 Narzędzia wiersza poleceń ...................................................z.......................................... 36 Interfejsy graficzne ...................................................z...................................................z.. 38 ODBC...................................................z...................................................z.....................39 Interfejsy WWW...................................................z...................................................z....... 40 Rozdział 4. Modele baz danych ...................................................z...............................................................41 Historia ...................................................z...................................................z.................. 41 Terminologia...................................................z...................................................z........... 43 DBMS — system zarządzania bazą danych ...................................................z.................. 43 Bazy danych oparte na zwykłych plikach...................................................z....................... 44 Hierarchiczne bazy danych ...................................................z.......................................... 45 Sieciowe bazy danych...................................................z................................................. 46 Relacyjne bazy danych...................................................z................................................ 47 Obiektowe bazy danych ...................................................z.............................................. 48 Obiektowo-relacyjne bazy danych ...................................................z................................. 49 Rozdział 5. Model relacyjny...................................................z....................................................................51 Algebra relacyjna ...................................................z...................................................z.... 51 Tabele, wiersze i kolumny ...................................................z........................................... 52 Klucze...................................................z...................................................z.................... 53 Powiązania ...................................................z...................................................z............. 55 4 MySQL Operacje relacyjne..................................................z...................................................z.... 56 Czy MySQL to prawdziwy system RDMBS? ...................................................z................... 62 Rozdział 6. Język zapytań strukturalnych...................................................z........................................... 63 SQL jako język czwartej generacji ...................................................z................................ 63 Definiowanie danych ...................................................z.................................................. 64 Wstawianie wierszy ...................................................z...................................................z. 66 Aktualizacja wierszy...................................................z...................................................z. 67 Usuwanie wierszy...................................................z...................................................z.... 67 Zapytania ...................................................z...................................................z............... 68 Złączenia ...................................................z...................................................z............... 69 Porządkowanie................................................z...................................................z........... 71 Grupowanie ...................................................z...................................................z............ 71 Stosowanie ograniczeń...................................................z............................................... 72 Zmiana formy tabeli ...................................................z...................................................z 73 Rozdział 7. Projektowanie bazy danych ...................................................z............................................... 75 Specyfikacja wymagań...................................................z................................................ 76 Specyfikacja projektowa ...................................................z............................................. 79 Tworzenie diagramów ...................................................z................................................. 81 Języki modelowania...................................................z...................................................z. 83 Diagramy ER...................................................z...................................................z........... 84 Tworzenie diagramu ...................................................z...................................................z 85 Implementacja projektu ...................................................z.............................................. 85 Testowanie...................................................z...................................................z............. 88 Planowanie rozwoju ...................................................z...................................................z. 88 Rozdział 8. Normalizacja ...................................................z...................................................z......................91 Zasadność normalizacji ...................................................z.............................................. 92 Pierwsza postać normalna ...................................................z.......................................... 93 Druga postać normalna ...................................................z.............................................. 94 Trzecia postać normalna...................................................z............................................. 96 Postać normalna Boyce-Codda ...................................................z.................................... 97 Czwarta postać normalna ...................................................z........................................... 98 Denormalizacja ...................................................z...................................................z....... 99 Rozdział 9. Transakcje i współbieżność ...................................................z...............................................101 Współbieżność ...................................................z...................................................z..... 102 Transakcje ...................................................z...................................................z........... 102 Blokowanie...................................................z...................................................z........... 106 Sekwencje...................................................z...................................................z............ 107 Część II Encyklopedia MySQL 109 Rozdział 10. Typy danych, zmienne i wyrażenia...................................................z................................... 111 Typy danych...................................................z...................................................z.......... 111 Zmienne...................................................z...................................................z............... 114 Operatory ...................................................z...................................................z............. 116 Wyrażenia ...................................................z...................................................z............ 123 Nazwy ze spacjami ...................................................z...................................................z 124 Spis treści 5 Rozdział 11. Typy kolumn i indeksów ...................................................z....................................................125 Liczby ...................................................z...................................................z.................. 126 Łańcuchy...................................................z...................................................z.............. 128 Wartości opisujące czas ...................................................z........................................... 131 Aliasy typów kolumn ...................................................z................................................. 133 Indeksy ...................................................z...................................................z................ 133 Rozdział 12. Funkcje wewnętrzne ...................................................z........................................................135 Diagnostyka i konfiguracja ...................................................z........................................ 136 Sterowanie przebiegiem egzekucji ...................................................z............................. 138 Grupowanie ...................................................z...................................................z.......... 142 Funkcje matematyczne ...................................................z............................................. 146 Łańcuchy...................................................z...................................................z.............. 154 Czas ...................................................z...................................................z.................... 169 Pozostałe funkcje...................................................z...................................................z.. 181 Procedury ...................................................z...................................................z............. 183 Rozdział 13. Instrukcje SQL ...................................................z...................................................................185 Komentarze...................................................z...................................................z.......... 185 Alter Table...................................................z...................................................z............ 186 Analyze Table ...................................................z...................................................z....... 190 Backup Table................................................z...................................................z........... 191 Begin [Work]...................................................z...................................................z......... 192 Change Master ...................................................z...................................................z..... 192 Check Table ...................................................z...................................................z......... 193 Commit ...................................................z...................................................z................ 193 Create Database..............................................z...................................................z........ 194 Create Function ...................................................z...................................................z.... 194 Create Index...................................................z...................................................z......... 194 Create Table...................................................z...................................................z......... 195 Delete...................................................z...................................................z.................. 201 Describe ...................................................z...................................................z.............. 202 Drop Database ...................................................z...................................................z..... 203 Drop Function ...................................................z...................................................z....... 204 Drop Index..................................................z...................................................z............. 204 Drop Table ...................................................z...................................................z........... 204 Explain...................................................z...................................................z................. 204 Flush ...................................................z...................................................z................... 206 Grant ...................................................z...................................................z................... 207 Insert...................................................z...................................................z...................209 Kill...................................................z...................................................z....................... 210 Lock Tables...................................................z...................................................z.......... 210 Load Data Infile ...................................................z...................................................z.... 211 Load Table ...................................................z...................................................z........... 213 Optimize Table...................................................z...................................................z...... 214 Purge Master Logs ...................................................z...................................................z 214 Rename Table ...................................................z...................................................z...... 214 Repair Table ...................................................z...................................................z......... 215 Replace ...................................................z...................................................z............... 215 Reset Master ...................................................z...................................................z....... 216 Reset Slave...................................................z...................................................z.......... 216 6 MySQL Restore Table ...................................................z...................................................z....... 216 Revoke..................................................z...................................................z.................. 216 Rollback...................................................z...................................................z............... 217 Select ...................................................z...................................................z.................. 217 Set ...................................................z...................................................z......................222 Set Transaction ...................................................z...................................................z.... 226 Show Columns.................................................z...................................................z........ 226 Show Create Table...................................................z...................................................z 227 Show Databases..............................................z...................................................z........ 228 Show Grants...................................................z...................................................z......... 228 Show Index.................................................z...................................................z............. 229 Show Logs ...................................................z...................................................z........... 229 Show Processlist ...................................................z...................................................z.. 230 Show Status...................................................z...................................................z......... 230 Show Table Status ...................................................z...................................................z 232 Show Tables...................................................z...................................................z......... 233 Show Variables...................................................z...................................................z..... 233 Slave ...................................................z...................................................z................... 237 Truncate ...................................................z...................................................z.............. 237 Unlock Tables...................................................z...................................................z....... 237 Update...................................................z...................................................z................. 238 Use ...................................................z...................................................z..................... 239 Rozdział 14. Narzędzia uruchamiane z wiersza poleceń...................................................z....................241 Zmienne środowiskowe ...................................................z............................................ 241 Pliki opcji ...................................................z...................................................z............. 242 comp_err...................................................z...................................................z.............. 244 isamchk ...................................................z...................................................z............... 244 make_binary_distribution...................................................z.......................................... 244 msql2mysql...................................................z...................................................z.......... 244 my_print_defaults ...................................................z...................................................z. 245 myisamchk ...................................................z...................................................z........... 246 myisamlog...................................................z...................................................z............ 252 myisampack ...................................................z...................................................z......... 254 mysql...................................................z...................................................z................... 256 mysql_install_db ...................................................z...................................................z... 268 mysqlaccess ...................................................z...................................................z........ 268 mysqladmin...................................................z...................................................z.......... 269 mysqlbinlog ...................................................z...................................................z.......... 277 mysqlbug ...................................................z...................................................z............. 279 mysqlc ...................................................z...................................................z................. 279 mysqld ...................................................z...................................................z................. 280 mysqld-max ...................................................z...................................................z.......... 296 mysqld-nt ...................................................z...................................................z............. 296 mysqld-opt ...................................................z...................................................z........... 297 mysqld_multi ...................................................z...................................................z........ 297 mysqldump ...................................................z...................................................z.......... 299 mysqldumpslow ...................................................z...................................................z.... 306 mysqlhotcopy ...................................................z...................................................z....... 308 mysqlimport ...................................................z...................................................z......... 311 mysqlshow ...................................................z...................................................z........... 315 Spis treści 7 pack_isam ...................................................z...................................................z........... 317 perror ...................................................z...................................................z.................. 317 replace ...................................................z...................................................z................ 318 safe_mysqld ...................................................z...................................................z......... 319 Rozdział 15. API C ...................................................z...................................................z................................321 Typy danych...................................................z...................................................z.......... 321 Funkcje klienckie ...................................................z...................................................z.. 325 Funkcje obsługi tablic...................................................z............................................... 350 Funkcje zestawów znaków ...................................................z........................................ 350 Funkcje obsługi plików...................................................z.............................................. 352 Funkcje obsługi błędów ...................................................z............................................ 354 Funkcje mieszające ...................................................z.................................................. 354 Funkcje list...................................................z...................................................z........... 355 Funkcje zarządzające pamięcią...................................................z.................................. 356 Funkcje opcji ...................................................z...................................................z........ 357 Funkcje obsługi haseł...................................................z............................................... 357 Funkcje łańcuchowe ...................................................z................................................. 358 Funkcje obsługi wątków ...................................................z............................................ 360 Część III Pisanie programów klienckich MySQL 361 Rozdział 16. Programowanie w API języka C...................................................z......................................363 Przygotowanie programu ...................................................z........................................... 363 Pobieranie danych...................................................z...................................................z. 365 Przetwarzanie danych ...................................................z............................................... 367 Rozdział 17. JDBC ...................................................z...................................................z................................371 Przygotowanie programu ...................................................z........................................... 371 Pobieranie danych...................................................z...................................................z. 373 Przetwarzanie danych ...................................................z............................................... 375 Rozdział 18. VBScript i ODBC ...................................................z................................................................377 Przygotowanie programu ...................................................z........................................... 377 Pobieranie danych...................................................z...................................................z. 379 Przetwarzanie danych ...................................................z............................................... 381 Rozdział 19. PHP ...................................................z...................................................z.................................385 Przygotowanie programu ...................................................z........................................... 385 Pobieranie danych...................................................z...................................................z. 386 Przetwarzanie danych ...................................................z............................................... 388 Rozdział 20. Perl ...................................................z...................................................z.................................391 Przygotowanie programu ...................................................z........................................... 391 Pobieranie danych...................................................z...................................................z. 392 Przetwarzanie danych ...................................................z............................................... 393 Rozdział 21. Python ...................................................z...................................................z............................397 Przygotowanie programu ...................................................z........................................... 397 Pobieranie danych...................................................z...................................................z. 398 Przetwarzanie danych ...................................................z............................................... 400 8 MySQL Rozdział 22. API MySQL++...................................................z...................................................z.................403 Przygotowanie programu ...................................................z........................................... 403 Pobieranie danych...................................................z...................................................z. 404 Przetwarzanie danych ...................................................z............................................... 406 Część IV Zagadnienia zaawansowane 409 Rozdział 23. Administracja bazą danych ...................................................z..............................................411 Zakres odpowiedzialności ...................................................z......................................... 411 Udostępnianie danych ...................................................z.............................................. 412 Zapewnienie spójności bazy danych...................................................z........................... 413 W razie awarii ...................................................z...................................................z....... 414 Pomoc użytkownikom ...................................................z............................................... 414 Tworzenie i wdrażanie standardów...................................................z............................. 415 Rozdział 24. Fizyczne struktury danych ...................................................z.............................................417 Model bazy danych i tabel......................................z...................................................z... 417 Partycje dedykowane ...................................................z................................................ 418 Typy tabel...................................................z...................................................z............. 418 Kolumny...................................................z...................................................z............... 425 Blokowanie tabel ...................................................z...................................................z.. 426 Indeksy ...................................................z...................................................z................ 426 Deskryptory plików ...................................................z...................................................z 428 Pamięć systemowa ...................................................z.................................................. 429 Dzienniki ...................................................z...................................................z.............. 429 Rozdział 25. Jak radzić sobie z awarią ...................................................z..............................................435 Sprawdzanie tabel i ich naprawianie ...................................................z.......................... 435 Kopie bezpieczeństwa, odzyskiwanie danych ...................................................z.............. 438 Rozdział 26. Optymalizacja ...................................................z..................................................................445 Zanim zajmiesz się optymalizacją ...................................................z.............................. 445 Badanie wydajności...................................................z.................................................. 446 Optymalizacja na etapie projektu...................................................z............................... 450 Optymalizacja w aplikacjach...................................................z...................................... 451 Optymalizacja zapytań ...................................................z.............................................. 452 Optymalizacja zapytań SQL ...................................................z....................................... 455 Troska o tabele..................................................z...................................................z...... 456 Dostrajanie serwera ...................................................z................................................. 457 Rekompilacja MySQL...................................................z................................................ 459 Rozdział 27. Bezpieczeństwo...................................................z...............................................................463 System uprawnień ...................................................z...................................................z 463 Nadawanie uprawnień ...................................................z.............................................. 469 Zapewnianie bezpieczeństwa ...................................................z.................................... 471 Rozdział 28. Zmiana bazy danych...................................................z........................................................475 Zmiana serwerów baz danych...................................................z.................................... 475 Uzupełnianie możliwości MySQL...................................................z................................ 476 Użycie trybu ANSI ...................................................z...................................................z.. 481 Wyjątkowe cechy MySQL...................................................z........................................... 482 Spis treści 9 Rozdział 29. Rozproszone bazy danych ...................................................z..............................................487 Pojęcie rozproszonych baz danych ...................................................z............................. 487 Synchronizacja opóźniona ...................................................z......................................... 490 Replikacja w MySQL ...................................................z................................................. 492 Uruchamianie wielu serwerów ...................................................z................................... 497 Rozdział 30. Odwzorowanie na obiekty ...................................................z..............................................499 Model obiektowy ...................................................z...................................................z... 500 Serializacja obiektów...................................................z................................................ 500 Odwzorowanie obiektowości i relacyjności ...................................................z.................. 503 Rozdział 31. Rozszerzanie możliwości ...................................................z.................................................513 Biblioteka do analizy błędów ...................................................z..................................... 513 Dodawanie zestawów znaków ...................................................z................................... 515 Funkcje ...................................................z...................................................z................ 520 Procedury ...................................................z...................................................z............. 523 Dodatki 525 Dodatek A Zasoby internetowe...................................................z............................................................527 Oficjalne listy mailingowe...................................................z.......................................... 527 Nieoficjalne listy wysyłkowe ...................................................z...................................... 529 Archiwa list wysyłkowych...................................................z........................................... 529 Witryny ...................................................z...................................................z................. 530 Dodatek B Dalsza lektura ...................................................z...................................................z..................533 Dodatek C Biznes i kwestie prawne ...................................................z....................................................535 Licencja MySQL ...................................................z...................................................z.... 535 Publiczna licencja GNU ...................................................z............................................. 535 Stabilność ...................................................z...................................................z............ 542 Pomoc ...................................................z...................................................z................. 542 Dodatek D Słowa zastrzeżone ...................................................z.............................................................545 Dodatek E Kody błędów MySQL ...................................................z............................................................549 Dodatek F Styl kodowania w SQL ...................................................z..........................................................561 Zalecenia ogólne ...................................................z...................................................z.. 561 Identyfikatory...................................................z...................................................z........ 562 Tabele ...................................................z...................................................z................. 562 Instrukcje ...................................................z...................................................z............. 563 Dodatek G Projekt przykładowej bazy danych ...................................................z..................................565 Diagramy...................................................z...................................................z.............. 565 Schemat SQL ...................................................z...................................................z....... 567 Skorowidz ...................................................z...................................................z..........................................579 Funkcje wewnętrzne W tym rozdziale: n Diagnostyka i konfiguracja n Sterowanie przebiegiem egzekucji n Grupowanie n Funkcje matematyczne n Łańcuchy n Czas n Pozostałe funkcje n Procedury Funkcje zwracają wartości, które czasami zależą od parametrów wejściowych. Funkcję można wywołać wszędzie tam, gdzie możliwe jest zastosowanie wyrażenia. Dotyczy to również samych parametrów funkcji — innymi słowy, możliwe jest zagnieżdżanie wywołań funkcji. W przypadku większości funkcji parametry są przesyłane w nawiasach i nie może być odstepu pomiędzy nazwą funkcji a nawiasem otwierającym. Pomaga to interpreterowi MySQL od- różnić nazwy funkcji od nazw kolumn. Wymóg ten można znieść za pomocą odpowiednich argumentów podanych z wiersza poleceń, ale w konsekwencji używanie nazw funkcji do nazywania kolumn będzie niemożliwe. Do kilku wymienionych w tym rozdziale funkcji lepiej pasowałoby określenie „operator”. Zostały jednak umieszczone tutaj, ponieważ ich działanie przypomina w większym stopniu funkcję. Z ich opisów jasno wynika, że nie wymagają nawiiasów. Każdy opis funkcji rozpoczyna się od nagłówka, prezentującego formę wywołania funkcji. Wyrazy pisane dużymi literami to słowa kluczowe. Wyrazy pisane małymi literami to prze- kazywane funkcji wartości, które mogą mieć formę stałych, nazw kolumn lub wyrażeń. MySQL rozpoznaje nazwy funkcji wpisane dowolną kombinacją idużych i małych liter. 136 Część II n Encyklopedia MySQL Wielokropek () oznacza, że funkcja pobiera listę wartości oddzielonych przecinkami. Wszystko, co umieszczone zostało w nawiasach kwadratowych, jest opcjonalne. Niektóre funkcje mają kilka poziomów parametrów opcjonalnych. Jak pamiętamy, wartością większości wyrażeń, które zawierają wartość PWNN, będzie rów- nież wartość PWNN. Dotyczy to również wywołań funkcji. Na przykład konkatenacja wartości PWNN z dowolnym łańcuchem daje PWNN. Diagnostyka i konfiguracja Opisane tu funkcje zwracają informacje o serwerze i ipomagają w diagnostyce. BENCHMARK(rundy, wartość) Funkcja oblicza wartość wyrażenia tyle razy, na ile wskazuje pierwszy argument. Zwraca zawsze zero, ale używając klienta O[USN, można sprawdzić, ile czasu zajęło jej wykonanie. Rysunek 12.1 pokazuje, ile czasu zabiera MySQL przeprowadzenie 100 000 wywołań funkcji 5170 :. Rysunek 12.1. Funkcja BENCHMARK O[USN 5 . 6$ 0 */#4- 5170 : .GQP   ^$ 0 */#4- 5170 : .GQP ^  ^^  TQYKPUGV UGE Należy pamiętać, że zgłoszony czas to czas wykonania wywołania, a nie czas korzystania z procesora. Tłok na serwerze lub w sieci może znacząco spowolnić czas egzekucji. CONNECTION_ID() Funkcja zwraca identyfikator połączenia dla połączeniai bieżącego — patrz: rysunek 12.2. Rysunek 12.2. Funkcja CONNECTION_ID O[USN 5 . 6 100 6+10A+   ^ 100 6+10A+ ^  ^^  TQYKPUGV UGE Rozdział 12. n Funkcje wewnętrzne 137 DATABASE() Funkcja zwraca nazwę domyślnej bazy danych. Jeżeli nie została wybrana żadna domyślna baza danych, zwracana jest wartość „null” — patrz: rysuniek 12.3. Rysunek 12.3. Funkcja DATABASE O[USN 5 . 6 #6#$#5   ^ #6#$#5 ^  ^VGUV^  TQYKPUGV UGE LAST_INSERT_ID([klucz_główny]) MySQL dla każdego połączenia przechowuje wartość ostatnio użytego klucza głównego. Funkcja .#56A+05 46A+ zwraca tę wartość. Jeżeli prześlemy jej argument, wartość zostanie zgodnie z nim ustawiona. Istnieją dwa sposoby użycia tej funkcji. Najczęściej stosowany dotyczy kolumn #761A+0 4 / 06. Jeżeli kolumnie nadana została wartość w wyniku automatycznej inkrementacji, to funkcji .#56A+05 46A+ przypisana zostaje właśnie ta wartość. Z kolei automatycznie inkrementowana kolumna, której nadamy wartość ręcznie zamiast podawania zera lub PWNN, nie spowoduje stosownej aktualizacji wartości zwracanej przez .#56A+05 46A+ . Rysunek 12.4 przedstawia, jak zmienia się wartość .#56A+05 46A+ po wstawieniu wiersza z wartością PWNN dla ko- lumny automatycznie inkrementowanej. Rysunek 12.4. Funkcja LAST_INSERT_ID O[USN 5 . 6.#56A+05 46A+   ^NCUVAKPUGTVAKF ^  ^^  TQYKPUGV UGE O[USN +05 46+061RTQFWMV[8#.7 5 07.. /[FđQ  VTÎLRCM    3WGT[1-TQYCHHGEVGF UGE O[USN 5 . 6.#56A+05 46A+   ^NCUVAKPUGTVAKF ^  ^^  TQYKPUGV UGE Za pomocą funkcji .#56A+05 46A+ można również symulować sekwencje, poprzez skoja- rzenie funkcji z jednokolumnową tabelą. Opis sekwencji i sposobu ich symulowania znaj- duje się w rozdziale 9. „Transakcje i współbieżność”. 138 Część II n Encyklopedia MySQL SESSION_USER() Jest to alias funkcji 75 4. SYSTEM_USER() Jest to alias funkcji 75 4. USER() Funkcja zwraca nazwę użytkownika, który zainicjował sesję, wraz z domeną komputera, z którego następuje połączenie — patrz: rysunek 12.5. O[USN 5 . 675 4   ^75 4 ^  ^1 $ NQECNJQUV^  TQYKPUGV UGE Rysunek 12.5. Funkcja USER VERSION() Funkcja zwraca numer wersji serwera MySQL — patrz: rysiunek 12.6. Rysunek 12.6. Funkcja VERSION O[USN 5 . 68 45+10   ^8 45+10 ^  ^PV^  TQYKPUGV UGE Sterowanie przebiegiem egzekucji Opisane tu funkcje sterują przebiegiem egzekucji. +( oraz #5 zostały zaimplementowane na wzór instrukcji języka trzeciej generacji i mimo że nie używa się z nimi nawiasów, korzysta się z nich tak, jak z funkcji. Dwie funkcje blokujące oraz funkcja wymuszająca oczekiwanie bazy nadrzędnej na podrzędną ułatwiają zarządzanie współbiieżnością. Rozdział 12. n Funkcje wewnętrzne 139 CASE wartość_testowa WHEN przypadek1 THEN wartość_zwracana1 [WHEN przypadek2 THEN wartość_zwracana2] … [ELSE wartość_domyślna] END Instrukcja pobiera wartość testową i porównuje ją z jednym lub z kilkoma „przypadkami”. Jeżeli wartość testowa odpowiada któremuś przypadkowi, zwracana jest wartość z nim skoja- rzona. Jeżeli wartość testowa nie jest równa żadnemu z przypadków, instrukcja #5 zwraca opcjonalną wartość domyślną. Rysunek 12.7 przedstawia instrukcję #5 zastosowaną dla tabeli o pięciu wierszach. Dla kolumn o liczbie porządkowej 1 i 2 zwracany jest numer kolumny słownie, a dla pozostałych domyślny łańcuch +PPCYCTVQħè. Rysunek 12.7. Instrukcja CASE O[USN 5 . 6.R #5 .R  9* 06* 0 ,GFGP  9* 06* 0 YC   .5  +PPCYCTVQħè   0 #5 4GWNVCV[FKCđCPKC #5  (41/RTQFWMV[   ^.R^4GWNVCV[FKCđCPKC #5 ^   ^^,GFGP^ ^^ YC^ ^^+PPCYCTVQħè^ ^^+PPCYCTVQħè^ ^^+PPCYCTVQħè^   TQYUKPUGV UGE CASE WHEN przypadek1 THEN wartość_zwracana1 [WHEN przypadek2 THEN wartość_zwracana2] … [ELSE wartość_domyślna] END Alternatywna wersja instrukcji #5 oblicza wartość każdego wyrażenia, zamiast porów- nywać je do pojedynczych wartości. Przykład przedstawiony na rysunku 12.8 pokazuje, że wyrażenia będące poszczególnymi przypadkami oraz wartiości zwracane mogą być dowolnym prawidłowym wyrażeniem, w tym wywołaniem funkcji lub iodwołaniem do innej kolumny. Ponieważ instrukcja #5 może zmieniać typy dla każdego wiersza, przyjmuje się, że ko- lumna ma typ zgodny z wartością zwracaną przez pierwsizy warunek 9* 0. GET_LOCK(nazwa, limit_czasu) Przez określony czas mierzony w sekundach funkcja ) 6A.1 - stara się uzyskać dostęp do blokady o podanej nazwie. Wywołanie zakończy się dopiero z chwilą upłynięcia zadanego czasu lub uzyskania dostępu do blokady. 140 Część II n Encyklopedia MySQL Rysunek 12.8. Instrukcja CASE WHEN O[USN 5 . 6.R #5  9* 0.R6* 0219 4 .R  9* 0.R6* 0.R   .5 0CYC   0 #5 4GWNVCV[FKCđCPKC #5  (41/RTQFWMV[   ^.R^4GWNVCV[FKCđCPKC #5 ^   ^^^ ^^^ ^^5EQVMC^ ^^^ ^^/[FđQ^   TQYUKPUGV UGE Jedno połączenie może utrzymywać tylko jedną blokadę naraz. Wywołanie ) 6A.1 - uwalnia blokadę utrzymywaną dotychczas, ale dobrym nawykiem jest używanie 4 . #5 A.1 - z chwi- lą, gdy blokada nie jest już potrzebna. Blokada jest zwalniana również w chwili przerwania połączenia. Fakt utrzymywania blokady nie stwarza żadnych ograniczeń dla innych połączeń ani nie daje żadnych korzyści dla połączenia ją utrzymującego. Blokad można jednak używać w powią- zaniu, implementując w ten sposób dowolny poziom blokowania. Zastosowanie ) 6A.1 - do implementacji powiązanego blokowania wierszy zostało opisane w rozdziale 9. Prosty przy- kład przedstawiono na rysunku 12.9. Rysunek 12.9. Funkcja GET_LOCK O[USN 5 . 6) 6A.1 - RTQFWMV[.R    ^) 6A.1 - RTQFWMV[.R  ^  ^^  TQYKPUGV UGE O[USN 72 #6 RTQFWMV[5 6 GPC9* 4 .R 3WGT[1-TQYCHHGEVGF UGE 4QYUOCVEJGF JCPIGF9CTPKPIU O[USN 5 . 64 . #5 A.1 - RTQFWMV[.R   ^4 . #5 A.1 - RTQFWMV[.R ^  ^^  TQYKPUGV UGE Rozdział 12. n Funkcje wewnętrzne 141 IF(wartość_testowa, wartość_prawda, wartość_fałsz) Funkcja zwraca jedną wartość, jeżeli wyrażenie testowe ma wartość VTWG, i inną, jeżeli ma ono wartość HCNUG. Wartość testowa jest konwertowana na liczbę całkowitą, dlatego należy pamiętać o użyciu operatora porównania zamiast przesyłania jedynie liczby zmiennoprze- cinkowej. Podobnie jak w przypadku #5 , instrukcja +( może zwracać typy niezgodne z sobą w każdym z dwóch wariantów. Jeżeli obydwie wartości są łańcuchami, obydwie zostaną zwrócone jako łańcuchy. Jeżeli ani jedna wartość nie jest łańcuchem, a przynajmniej jedna jest liczbą zmiennoprzecinkową, +( zwróci obydwie jako wartości zmiennoprzecinkowe. W pozostałych przypadkach zwrócone zostaną liczby całkowite. Rysunek 12.10 demonstruje użycie in- strukcji +( do oznaczenia dnia jako dnia w tygodniu lub dnia wi weekendzie. Rysunek 12.10. Instrukcja IF O[USN 5 . 6+( #;1(9 - 019 KP   YGGMGPF  FKG.ēV[IQFPKC   ^+( #;1(9 - 019 KP   YGGMGPF  FKGēV[IQFPKC ^  ^FKGēV[IQFPKC.^  TQYKPUGV UGE IFNULL(wartość_testowa, wartość_zwracana) Funkcja zwraca wartość testową, jeżeli jest ona niepusta — w innym przypadku zwracany jest drugi argument. Przykład przedstawiony na rysunku 12.11 pokazuje, jak można za pomocą instrukcji +(07.. zamieniać wartości PWNN stosownymi opisami. Rysunek 12.11. Funkcja IFNULL O[USN 5 . 60CYC  +(07.. 1RKU $TCMQRKUW #51RKU  (41/RTQFWMV[   ^0CYC^1RKU^   ^5EQVGEMC^$TCMQRKUW^ ^)TGDKGē^$TCMQRKUW^ ^5EQVMC^$TCMQRKUW^ ^2CUVC^$TCMQRKUW^ ^/[FđQ^VTÎLRCM^   TQYUKPUGV UGE MASTER_POS_WAIT(nazwa, pozycja) Funkcja oczekuje, aż serwer podrzędny „dogoni” serwer nadrzędny w obrębie środowiska replikacyjnego. Wymagane jest podanie nazwy pliku dziennika i pozycji w dzienniku, którą serwer podrzędny musi osiągnąć. Jeżeli serwer nie jest serwerem nadrzędnym, zwracana 142 Część II n Encyklopedia MySQL jest od razu wartość PWNN. Jeżeli serwer podrzędny nie został jeszcze uruchomiony, funkcja będzie trwała w zablokowaniu, oczekując na uruchomienie serwera i jego dotarcie do okre- ślonej pozycji w dzienniku. Funkcja zwraca liczbę „przerobionych” w czasie oczekiwania zdarzeń w dzienniku. Więcej informacji na temat replikacji znajduje się w rozdziiale 29. „Rozproszone bazy danych”. NULLIF(wartość_testowa1, wartość_testowa2) Funkcja zwraca PWNN, jeżeli obydwie wartości testowe są równe. W innym przypadku zwraca pierwszą wartość testową. Funkcja ta przydaje się do zamiany wartości zerowych na PWNN, co ilustruje rysunek 12.12. Rysunek 12.12. Funkcja NULLIF O[USN 5 . 60CYC07..+( /CIC[P #5/CIC[P  (41/RTQFWMV[   ^0CYC^/CIC[P^   ^5EQVGEMC^07..^ ^)TGDKGē^07..^ ^5EQVMC^07..^ ^2CUVC^07..^ ^/[FđQ^^   TQYUKPUGV UGE RELEASE_LOCK(nazwa) Funkcja zwalnia blokadę wskazaną argumentem PCYC, uzyskaną wcześniej za pomocą funkcji ) 6A.1 -. Jeżeli wskazana blokada nie jest utrzymywana, zwracana jest wartość PWNN. Przykład zastosowania znajduje się w opisie funkcjii ) 6A.1 -. Grupowanie Opisane tu funkcje działają na kilku wartościach w kolumnie. Jeżeli nie podano klauzuli )4172$;, wówczas obejmują swoim działaniem wszystkie wiersze. Na potrzeby przykładów tu przedstawionych stworzona została nowa definicja itabeli, którą przedstawia rysunek 12.13. Kolumny z wartością PWNN są pomijane w obliczeniach, dokonywanych przez te funkcje. Użycie PWNN w wyrażeniu zawsze spowoduje zwrócenie PWNN, ale funkcja grupująca zasto- sowana na kolumnie zawierającej PWNN nie powoduje tego efektu — PWNN jest wówczas ignorowane. Rozdział 12. n Funkcje wewnętrzne 143 Rysunek 12.13. Przykład grupowania danych O[USN  4 #6 6#$. VGUVITWR  .R+0601607..#761A+0 4 / 06   TW[PC8#4 *#4    9[PKM+06  24+/#4;- ; .R    3WGT[1-TQYUCHHGEVGF UGE O[USN +05 46+061VGUVITWR TW[PC9[PKM 8#.7 5   GTYQPK     GTYQPK     GTYQPK     GTYQPK     GTYQPK     GTYQPK     GTYQPK     GTYQPK     0KGDKGUE[     0KGDKGUE[     0KGDKGUE[     0KGDKGUE[     0KGDKGUE[     0KGDKGUE[     0KGDKGUE[     0KGDKGUE[   3WGT[1-TQYUCHHGEVGF UGE 4GEQTFU WRNKECVGU9CTPKPIU AVG(kolumna) Funkcja zwraca średnią arytmetyczną wyników z grupy. Jest ona definiowana jako suma wszystkich wartości w grupie podzielona przez ich liczbę. Rysunek 12.14 prezentuje średnie wyniki każdej drużyny. Rysunek 12.14. Funkcja AVG O[USN 5 . 6 TW[PC#8) 9[PKM  (41/VGUVITWR  )4172$; TW[PC   ^ TW[PC^#8) 9[PKM ^   ^ GTYQPK^^ ^0KGDKGUE[^^   TQYUKPUGV UGE BIT_AND(kolumna) Funkcja wykonuje na grupie bitową operację AND i zwraca dziesiętną liczbę całkowitą — patrz: rysunek 12.15. 144 Część II n Encyklopedia MySQL BIT_OR(kolumna) Funkcja wykonuje na grupie bitową operację OR i zwraca dziesiętną liczbę całkowitą. Ry- sunek 12.15 ukazuje, że nie ma bitów, które byłyby ustawione we wszystkich wynikach, ale pierwszych siedem jest ustawionych w co najmnieji jednym wyniku. Rysunek 12.15. Funkcja BIT_OR O[USN 5 . 6 TW[PC$+6A#0 9[PKM $+6A14 9[PKM  (41/VGUVITWR  )4172$; TW[PC    ^ TW[PC^$+6A#0 9[PKM ^$+6A14 9[PKM ^    ^ GTYQPK^^^ ^0KGDKGUE[^^^    TQYUKPUGV UGE COUNT(kolumna) Funkcja zwraca liczbę niepustych elementów w grupie. Można też zastosować znak gwiazdki ( ) do sprawdzenia liczby wierszy niezależnie od tego, czy mają wartość PWNN. Na rysunku 12.16 za każdym razem widzimy 8 wyników. W drużynie Czerwonych dwukrotnie pojawił się wynik 11, więc liczba niepowtarzalnych wyników wynosi dila niej 7. Rysunek 12.16. Funkcja COUNT O[USN 5 . 6 TW[PC 1706 9[PKM  1706 +56+0 69[PKM  (41/VGUVITWR  )4172$; TW[PC    ^ TW[PC^ 1706 9[PKM ^ 1706 +56+0 69[PKM ^    ^ GTYQPK^^^ ^0KGDKGUE[^^^    TQYUKPUGV UGE COUNT([DISTINCT] …) Ta forma funkcji 1706 zwraca liczbę niepowtarzalnych kombinacji wartości kolumn poda- nych jako argumenty — patrz: rysunek 12.16. MAX(…) Funkcja zwraca największą wartość w grupie. Maksymalna wartość łańcuchowa jest defi- niowana jako ta, która występuje ostatnia w kolejności alfabetycznej. Ponieważ daty można porządkować, maksymalna data to ostatnia w kolejności. Dwucyfrowe oznaczenia roku Rozdział 12. n Funkcje wewnętrzne 145 mogą nie być poprawnie sortowane, chyba że stanowią część kolumny ; #4. Konieczne może wówczas okazać się wymuszenie czterocyfrowych oznaczeń lat poprzez dodanie zera za pomocą funkcji #6 A# . Rysunek 12.17 przedstawia maksymalne i minimalne wyniki dla obu drużyn. O[USN 5 . 6 TW[PC/+0 9[PKM /#: 9[PKM  (41/VGUVITWR  )4172$; TW[PC    ^ TW[PC^/+0 9[PKM ^/#: 9[PKM ^    ^ GTYQPK^^^ ^0KGDKGUE[^^^    TQYUKPUGV UGE Rysunek 12.17. Funkcja MAX MIN(…) Funkcja zwraca najmniejszą wartość w grupie. Minimalna wartość łańcuchowa to ta, która występuje pierwsza w kolejności alfabetycznej (patrz:i rysunek 12.17). STD(…) Funkcja zwraca odchylenie standardowe dla grupy — paitrz: rysunek 12.18. Rysunek 12.18. Funkcja STD O[USN 5 . 6 TW[PC56 9[PKM  (41/VGUVITWR  )4172$; TW[PC   ^ TW[PC^56 9[PKM ^   ^ GTYQPK^^ ^0KGDKGUE[^^   TQYUKPUGV UGE STDDEV(…) Jest to alias funkcji 56 . SUM(…) Funkcja zwraca sumę elementów grupy. Łańcuchy i daty są przekształcane na liczby cał- kowite — patrz: rysunek 12.19. 146 Część II n Encyklopedia MySQL Rysunek 12.19. Funkcja SUM O[USN 5 . 6 TW[PC57/ 9[PKM  (41/VGUVITWR  )4172$; TW[PC   ^ TW[PC^57/ 9[PKM ^   ^ GTYQPK^^ ^0KGDKGUE[^^   TQYUKPUGV UGE Funkcje matematyczne Opisane tu funkcje wykonują operacje matematyczne. Większość z nich pobiera i zwraca liczby zmiennoprzecinkowe. ABS(liczba) Funkcja zwraca wartość bezwzględną z liczby — patrz: riysunek 12.20. O[USN 5 . 6#$5    ^#$5  ^  ^^  TQYKPUGV UGE Rysunek 12.20. Funkcja ABS ACOS(liczba) Funkcja zwraca arcus cosinus z liczby. Arcus cosinus z liczb większych od 1 lub mniejszych od 0 jest nieokreślony — patrz: rysunek 12.21. Rysunek 12.21. Funkcja ACOS O[USN 5 . 6# 15    ^# 15  ^  ^^  TQYKPUGV UGE Rozdział 12. n Funkcje wewnętrzne 147 ASIN(liczba) Funkcja zwraca arcus sinus z liczby. Arcus sinus z liczb większych od 1 lub mniejszych od 0 jest nieokreślony — patrz: rysunek 12.22. O[USN 5 . 6#5+0    ^#5+0  ^  ^^  TQYKPUGV UGE Rysunek 12.22. Funkcja ASIN ATAN(liczba) Funkcja zwraca arcus tangens z liczby — patrz: rysuinek 12.23. Rysunek 12.23. Funkcja ATAN O[USN 5 . 6#6#0    ^#6#0  ^  ^^  TQYKPUGV UGE ATAN2(liczba, liczba) Funkcja zwraca kąt między odcinkiem łączącym dany punkt z początkiem układu współ- rzędnych a osią x, wyrażony w radianach — patrz: rysuneki 12.24. Rysunek 12.24. Funkcja ATAN2 O[USN 5 . 6#6#0    ^#6#0  ^  ^^  TQYKPUGV UGE CEILING(liczba) Funkcja zaokrągla liczbę zmiennoprzecinkową do najbliższej większej liczby całkowitej — patrz: rysunek 12.25. 148 Część II n Encyklopedia MySQL O[USN 5 . 6 +.+0)    ^ +.+0)  ^  ^^  TQYKPUGV UGE Rysunek 12.25. Funkcja CEILING COS(liczba) Funkcja zwraca cosinus z liczby wyrażony w radianacih — patrz: rysunek 12.26. O[USN 5 . 6 15    ^ 15  ^  ^^  TQYKPUGV UGE Rysunek 12.26. Funkcja COS COT(liczba) Funkcja zwraca cotangens z liczby — patrz: rysunek i12.27. Rysunek 12.27. Funkcja COT O[USN 5 . 6 16    ^ 16  ^  ^^  TQYKPUGV UGE DEGREES(liczba) Funkcja zamienia radiany na stopnie — patrz: rysuneik 12.28. Rysunek 12.28. Funkcja DEGREES O[USN 5 . 6 )4 5    ^ )4 5  ^  ^^  TQYKPUGV UGE Rozdział 12. n Funkcje wewnętrzne 149 EXP(liczba) Funkcja zwraca podstawę logarytmu naturalnego (e) podniesioną do podanej potęgi — patrz: rysunek 12.29. O[USN 5 . 6 :2    ^ :2  ^  ^^  TQYKPUGV UGE Rysunek 12.29. Funkcja EXP FLOOR(liczba) Funkcja zwraca najbliższą mniejszą liczbę całkowitą dla podanej liczby zmiennoprzecin- kowej — patrz: rysunek 12.30. O[USN 5 . 6(.114    ^(.114  ^  ^^  TQYKPUGV UGE Rysunek 12.30. Funkcja FLOOR GREATEST(…) Funkcja zwraca największą wartość z podanej listy, działając zarówno na łańcuchach, jak i na liczbach — patrz: rysunek 12.31. O[USN 5 . 6)4 #6 56    ^)4 #6 56  ^  ^^  TQYKPUGV UGE Rysunek 12.31. Funkcja GREATEST LEAST(…
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

MySQL
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ą: