SlideShare a Scribd company logo
1 of 57
Download to read offline
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TRE CI   MySQL
           KATALOG KSI¥¯EK               Autor: Leon Atkinson
                                         T³umaczenie: Jaros³aw Dobrzañski, Tomasz ¯mijewski
                      KATALOG ONLINE     ISBN: 83-7361-170-3
                                         Tytu³ orygina³u: Core MySQL
       ZAMÓW DRUKOWANY KATALOG           Format: B5, stron: 608


              TWÓJ KOSZYK
                    DODAJ DO KOSZYKA     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
         CENNIK I INFORMACJE             aplikacje, niezale¿nie od stopnia ich skomplikowania.
                                         Ksi¹¿ka rozpoczyna siê od omówienia podstaw MySQL-a: zapytañ SQL, zasad
                   ZAMÓW INFORMACJE      projektowania baz danych, normalizacji, transakcji i przetwarzania równoleg³ego.
                     O NOWO CIACH        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,
                       ZAMÓW CENNIK      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
                 CZYTELNIA                    SQL w MySQL-u
                                            • Typy danych, zmienne, funkcje wbudowane i narzêdzia dostêpne z linii komend
          FRAGMENTY KSI¥¯EK ONLINE            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
Wydawnictwo Helion                       FreeTrade: zestawu narzêdzi open source wykorzystuj¹cego MySQL i PHP. Atkinson
ul. Chopina 6                            od 1997 roku u¿ywa MySQL w wielu aplikacjach sieciowych i e-commerce.
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treści
  Wstęp............................................................................................................................................................11

Część I MySQL i model relacyjny                                                                                                                                 13
  Rozdział 1. Wprowadzenie do MySQL ........................................................................................................15
        Jak się korzysta z baz danych?....................................................................................... 16
        Dlaczego bazy danych są lepsze niż pliki? ....................................................................... 23
        Bazy danych nie są lekiem na całe zło ............................................................................ 25
        Dlaczego MySQL? ......................................................................................................... 26
        Historia MySQL............................................................................................................. 27

  Rozdział 2. Instalacja MySQL .................................................................................................................... 29
        Pobieranie plików instalacyjnych..................................................................................... 29
        Linux RPM .................................................................................................................... 30
        Windows ...................................................................................................................... 31
        Kompilowanie kodu źródłowego...................................................................................... 33
        Nadawanie uprawnień ................................................................................................... 33

  Rozdział 3. Interakcja z MySQL ................................................................................................................ 35
        Połączenie klient-serwer poprzez TCP/IP ......................................................................... 35
        Narzędzia wiersza poleceń ............................................................................................. 36
        Interfejsy graficzne ........................................................................................................ 38
        ODBC........................................................................................................................... 39
        Interfejsy WWW............................................................................................................. 40

  Rozdział 4. Modele baz danych ..................................................................................................................41
        Historia........................................................................................................................ 41
        Terminologia................................................................................................................. 43
        DBMS — system zarządzania bazą danych ..................................................................... 43
        Bazy danych oparte na zwykłych plikach.......................................................................... 44
        Hierarchiczne bazy danych ............................................................................................. 45
        Sieciowe bazy danych.................................................................................................... 46
        Relacyjne bazy danych................................................................................................... 47
        Obiektowe bazy danych ................................................................................................. 48
        Obiektowo-relacyjne bazy danych .................................................................................... 49

  Rozdział 5. Model relacyjny.......................................................................................................................51
        Algebra relacyjna .......................................................................................................... 51
        Tabele, wiersze i kolumny .............................................................................................. 52
        Klucze.......................................................................................................................... 53
        Powiązania ................................................................................................................... 55
4        MySQL

         Operacje relacyjne......................................................................................................... 56
         Czy MySQL to prawdziwy system RDMBS? ...................................................................... 62

    Rozdział 6. Język zapytań strukturalnych.............................................................................................. 63
         SQL jako język czwartej generacji ................................................................................... 63
         Definiowanie danych ..................................................................................................... 64
         Wstawianie wierszy ....................................................................................................... 66
         Aktualizacja wierszy....................................................................................................... 67
         Usuwanie wierszy.......................................................................................................... 67
         Zapytania ..................................................................................................................... 68
         Złączenia ..................................................................................................................... 69
         Porządkowanie.............................................................................................................. 71
         Grupowanie .................................................................................................................. 71
         Stosowanie ograniczeń.................................................................................................. 72
         Zmiana formy tabeli ...................................................................................................... 73

    Rozdział 7. Projektowanie bazy danych .................................................................................................. 75
         Specyfikacja wymagań................................................................................................... 76
         Specyfikacja projektowa ................................................................................................ 79
         Tworzenie diagramów .................................................................................................... 81
         Języki modelowania....................................................................................................... 83
         Diagramy ER................................................................................................................. 84
         Tworzenie diagramu ...................................................................................................... 85
         Implementacja projektu ................................................................................................. 85
         Testowanie................................................................................................................... 88
         Planowanie rozwoju ....................................................................................................... 88

    Rozdział 8. Normalizacja ............................................................................................................................91
         Zasadność normalizacji ................................................................................................. 92
         Pierwsza postać normalna ............................................................................................. 93
         Druga postać normalna ................................................................................................. 94
         Trzecia postać normalna................................................................................................ 96
         Postać normalna Boyce-Codda ....................................................................................... 97
         Czwarta postać normalna .............................................................................................. 98
         Denormalizacja ............................................................................................................. 99

    Rozdział 9. Transakcje i współbie ność ..................................................................................................101
         Współbieżność ........................................................................................................... 102
         Transakcje ................................................................................................................. 102
         Blokowanie................................................................................................................. 106
         Sekwencje.................................................................................................................. 107


Część II Encyklopedia MySQL                                                                                                                         109
    Rozdział 10. Typy danych, zmienne i wyra enia...................................................................................... 111
         Typy danych................................................................................................................ 111
         Zmienne..................................................................................................................... 114
         Operatory ................................................................................................................... 116
         Wyrażenia .................................................................................................................. 123
         Nazwy ze spacjami ...................................................................................................... 124
Spis treści               5


Rozdział 11. Typy kolumn i indeksów .......................................................................................................125
     Liczby ........................................................................................................................ 126
     Łańcuchy.................................................................................................................... 128
     Wartości opisujące czas .............................................................................................. 131
     Aliasy typów kolumn.................................................................................................... 133
     Indeksy ...................................................................................................................... 133

Rozdział 12. Funkcje wewnętrzne ...........................................................................................................135
     Diagnostyka i konfiguracja ........................................................................................... 136
     Sterowanie przebiegiem egzekucji ................................................................................ 138
     Grupowanie ................................................................................................................ 142
     Funkcje matematyczne ................................................................................................ 146
     Łańcuchy.................................................................................................................... 154
     Czas .......................................................................................................................... 169
     Pozostałe funkcje........................................................................................................ 181
     Procedury ................................................................................................................... 183

Rozdział 13. Instrukcje SQL ......................................................................................................................185
     Komentarze................................................................................................................ 185
     Alter Table.................................................................................................................. 186
     Analyze Table ............................................................................................................. 190
     Backup Table.............................................................................................................. 191
     Begin [Work]............................................................................................................... 192
     Change Master ........................................................................................................... 192
     Check Table ............................................................................................................... 193
     Commit ...................................................................................................................... 193
     Create Database......................................................................................................... 194
     Create Function .......................................................................................................... 194
     Create Index............................................................................................................... 194
     Create Table............................................................................................................... 195
     Delete........................................................................................................................ 201
     Describe .................................................................................................................... 202
     Drop Database ........................................................................................................... 203
     Drop Function ............................................................................................................. 204
     Drop Index.................................................................................................................. 204
     Drop Table ................................................................................................................. 204
     Explain....................................................................................................................... 204
     Flush ......................................................................................................................... 206
     Grant ......................................................................................................................... 207
     Insert......................................................................................................................... 209
     Kill............................................................................................................................. 210
     Lock Tables................................................................................................................ 210
     Load Data Infile .......................................................................................................... 211
     Load Table ................................................................................................................. 213
     Optimize Table............................................................................................................ 214
     Purge Master Logs...................................................................................................... 214
     Rename Table ............................................................................................................ 214
     Repair Table ............................................................................................................... 215
     Replace ..................................................................................................................... 215
     Reset Master ............................................................................................................. 216
     Reset Slave................................................................................................................ 216
6       MySQL

        Restore Table ............................................................................................................. 216
        Revoke....................................................................................................................... 216
        Rollback..................................................................................................................... 217
        Select ........................................................................................................................ 217
        Set ............................................................................................................................ 222
        Set Transaction .......................................................................................................... 226
        Show Columns............................................................................................................ 226
        Show Create Table...................................................................................................... 227
        Show Databases......................................................................................................... 228
        Show Grants............................................................................................................... 228
        Show Index................................................................................................................. 229
        Show Logs ................................................................................................................. 229
        Show Processlist ........................................................................................................ 230
        Show Status............................................................................................................... 230
        Show Table Status ...................................................................................................... 232
        Show Tables............................................................................................................... 233
        Show Variables........................................................................................................... 233
        Slave ......................................................................................................................... 237
        Truncate .................................................................................................................... 237
        Unlock Tables............................................................................................................. 237
        Update....................................................................................................................... 238
        Use ........................................................................................................................... 239

    Rozdział 14. Narzędzia uruchamiane z wiersza poleceń.......................................................................241
        Zmienne środowiskowe ............................................................................................... 241
        Pliki opcji ................................................................................................................... 242
        comp_err.................................................................................................................... 244
        isamchk ..................................................................................................................... 244
        make_binary_distribution............................................................................................. 244
        msql2mysql................................................................................................................ 244
        my_print_defaults ....................................................................................................... 245
        myisamchk................................................................................................................. 246
        myisamlog.................................................................................................................. 252
        myisampack ............................................................................................................... 254
        mysql......................................................................................................................... 256
        mysql_install_db ......................................................................................................... 268
        mysqlaccess .............................................................................................................. 268
        mysqladmin................................................................................................................ 269
        mysqlbinlog ................................................................................................................ 277
        mysqlbug ................................................................................................................... 279
        mysqlc ....................................................................................................................... 279
        mysqld....................................................................................................................... 280
        mysqld-max ................................................................................................................ 296
        mysqld-nt ................................................................................................................... 296
        mysqld-opt ................................................................................................................. 297
        mysqld_multi .............................................................................................................. 297
        mysqldump ................................................................................................................ 299
        mysqldumpslow .......................................................................................................... 306
        mysqlhotcopy ............................................................................................................. 308
        mysqlimport ............................................................................................................... 311
        mysqlshow ................................................................................................................. 315
Spis treści               7

       pack_isam ................................................................................................................. 317
       perror ........................................................................................................................ 317
       replace ...................................................................................................................... 318
       safe_mysqld............................................................................................................... 319

  Rozdział 15. API C ......................................................................................................................................321
       Typy danych................................................................................................................ 321
       Funkcje klienckie ........................................................................................................ 325
       Funkcje obsługi tablic.................................................................................................. 350
       Funkcje zestawów znaków ........................................................................................... 350
       Funkcje obsługi plików................................................................................................. 352
       Funkcje obsługi błędów ............................................................................................... 354
       Funkcje mieszające ..................................................................................................... 354
       Funkcje list................................................................................................................. 355
       Funkcje zarządzające pamięcią..................................................................................... 356
       Funkcje opcji .............................................................................................................. 357
       Funkcje obsługi haseł.................................................................................................. 357
       Funkcje łańcuchowe .................................................................................................... 358
       Funkcje obsługi wątków ............................................................................................... 360


Część III Pisanie programów klienckich MySQL                                                                                                           361
  Rozdział 16. Programowanie w API języka C.........................................................................................363
       Przygotowanie programu .............................................................................................. 363
       Pobieranie danych....................................................................................................... 365
       Przetwarzanie danych .................................................................................................. 367

  Rozdział 17. JDBC ......................................................................................................................................371
       Przygotowanie programu .............................................................................................. 371
       Pobieranie danych....................................................................................................... 373
       Przetwarzanie danych .................................................................................................. 375

  Rozdział 18. VBScript i ODBC ...................................................................................................................377
       Przygotowanie programu .............................................................................................. 377
       Pobieranie danych....................................................................................................... 379
       Przetwarzanie danych .................................................................................................. 381

  Rozdział 19. PHP .......................................................................................................................................385
       Przygotowanie programu .............................................................................................. 385
       Pobieranie danych....................................................................................................... 386
       Przetwarzanie danych .................................................................................................. 388

  Rozdział 20. Perl .......................................................................................................................................391
       Przygotowanie programu .............................................................................................. 391
       Pobieranie danych....................................................................................................... 392
       Przetwarzanie danych .................................................................................................. 393

  Rozdział 21. Python ..................................................................................................................................397
       Przygotowanie programu .............................................................................................. 397
       Pobieranie danych....................................................................................................... 398
       Przetwarzanie danych .................................................................................................. 400
8        MySQL


    Rozdział 22. API MySQL++.......................................................................................................................403
         Przygotowanie programu .............................................................................................. 403
         Pobieranie danych....................................................................................................... 404
         Przetwarzanie danych .................................................................................................. 406


Część IV Zagadnienia zaawansowane                                                                                                               409
    Rozdział 23. Administracja bazą danych .................................................................................................411
         Zakres odpowiedzialności ............................................................................................ 411
         Udostępnianie danych ................................................................................................. 412
         Zapewnienie spójności bazy danych.............................................................................. 413
         W razie awarii ............................................................................................................. 414
         Pomoc użytkownikom .................................................................................................. 414
         Tworzenie i wdrażanie standardów................................................................................ 415

    Rozdział 24. Fizyczne struktury danych ................................................................................................417
         Model bazy danych i tabel............................................................................................ 417
         Partycje dedykowane ................................................................................................... 418
         Typy tabel................................................................................................................... 418
         Kolumny..................................................................................................................... 425
         Blokowanie tabel ........................................................................................................ 426
         Indeksy ...................................................................................................................... 426
         Deskryptory plików ...................................................................................................... 428
         Pamięć systemowa ..................................................................................................... 429
         Dzienniki .................................................................................................................... 429

    Rozdział 25. Jak radzić sobie z awarią .................................................................................................435
         Sprawdzanie tabel i ich naprawianie ............................................................................. 435
         Kopie bezpieczeństwa, odzyskiwanie danych ................................................................. 438

    Rozdział 26. Optymalizacja .....................................................................................................................445
         Zanim zajmiesz się optymalizacją ................................................................................. 445
         Badanie wydajności..................................................................................................... 446
         Optymalizacja na etapie projektu.................................................................................. 450
         Optymalizacja w aplikacjach......................................................................................... 451
         Optymalizacja zapytań ................................................................................................. 452
         Optymalizacja zapytań SQL .......................................................................................... 455
         Troska o tabele........................................................................................................... 456
         Dostrajanie serwera .................................................................................................... 457
         Rekompilacja MySQL................................................................................................... 459

    Rozdział 27. Bezpieczeństwo..................................................................................................................463
         System uprawnień ...................................................................................................... 463
         Nadawanie uprawnień ................................................................................................. 469
         Zapewnianie bezpieczeństwa ....................................................................................... 471

    Rozdział 28. Zmiana bazy danych...........................................................................................................475
         Zmiana serwerów baz danych....................................................................................... 475
         Uzupełnianie możliwości MySQL................................................................................... 476
         Użycie trybu ANSI........................................................................................................ 481
         Wyjątkowe cechy MySQL.............................................................................................. 482
Spis treści               9


  Rozdział 29. Rozproszone bazy danych .................................................................................................487
       Pojęcie rozproszonych baz danych ................................................................................ 487
       Synchronizacja opóźniona ............................................................................................ 490
       Replikacja w MySQL .................................................................................................... 492
       Uruchamianie wielu serwerów ...................................................................................... 497

  Rozdział 30. Odwzorowanie na obiekty .................................................................................................499
       Model obiektowy ......................................................................................................... 500
       Serializacja obiektów................................................................................................... 500
       Odwzorowanie obiektowości i relacyjności ..................................................................... 503

  Rozdział 31. Rozszerzanie mo liwości ....................................................................................................513
       Biblioteka do analizy błędów ........................................................................................ 513
       Dodawanie zestawów znaków ...................................................................................... 515
       Funkcje ...................................................................................................................... 520
       Procedury ................................................................................................................... 523


Dodatki                                                                                                                                                525
  Dodatek A Zasoby internetowe...............................................................................................................527
       Oficjalne listy mailingowe............................................................................................. 527
       Nieoficjalne listy wysyłkowe ......................................................................................... 529
       Archiwa list wysyłkowych.............................................................................................. 529
       Witryny....................................................................................................................... 530

  Dodatek B Dalsza lektura ........................................................................................................................533

  Dodatek C Biznes i kwestie prawne .......................................................................................................535
       Licencja MySQL .......................................................................................................... 535
       Publiczna licencja GNU ................................................................................................ 535
       Stabilność .................................................................................................................. 542
       Pomoc ....................................................................................................................... 542

  Dodatek D Słowa zastrze one ................................................................................................................545

  Dodatek E Kody błędów MySQL ...............................................................................................................549

  Dodatek F Styl kodowania w SQL .............................................................................................................561
       Zalecenia ogólne ........................................................................................................ 561
       Identyfikatory.............................................................................................................. 562
       Tabele ....................................................................................................................... 562
       Instrukcje ................................................................................................................... 563

  Dodatek G Projekt przykładowej bazy danych ..................................................................................... 565
       Diagramy.................................................................................................................... 565
       Schemat SQL ............................................................................................................. 567

  Skorowidz ................................................................................................................................................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ą nawiasó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ą du 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 pomagają 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.         O[USN 5'.'%6 $'0%*/#4-
 5170':
 .GQP 
Funkcja               

BENCHMARK             ^ $'0%*/#4-
 5170':
 .GQP  ^
                      

                      ^                                   ^
                      

                       TQY KP UGV 
 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łączenia bie ącego — patrz: rysunek 12.2.

Rysunek 12.2.         O[USN 5'.'%6 %100'%6+10A+

Funkcja               

CONNECTION_ID         ^ %100'%6+10A+
 ^
                      

                      ^                ^
                      

                       TQY KP UGV 
 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: rysunek 12.3.

Rysunek 12.3.           O[USN 5'.'%6 #6#$#5'

Funkcja                 

DATABASE                ^ #6#$#5'
 ^
                        

                        ^ VGUV       ^
                        

                         TQY KP UGV 
 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.           O[USN 5'.'%6 .#56A+05'46A+

Funkcja                 

LAST_INSERT_ID          ^ NCUVAKPUGTVAKF
 ^
                        

                        ^                 ^
                        

                         TQY KP UGV 
 UGE

                        O[USN +05'46 +061 RTQFWMV[ 8#.7'5 
07.. /[F Q   VTÎLRCM 
                        
                        3WGT[ 1-  TQY CHHGEVGF 
 UGE

                        O[USN 5'.'%6 .#56A+05'46A+

                        

                        ^ NCUVAKPUGTVAKF
 ^
                        

                        ^                 ^
                        

                         TQY KP UGV 
 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.

Rysunek 12.5.            O[USN 5'.'%6 75'4

Funkcja                  

USER                     ^ 75'4
         ^
                         

                         ^ 1$%NQECNJQUV ^
                         

                          TQY KP UGV 
 UGE




VERSION()
       Funkcja zwraca numer wersji serwera MySQL — patrz: rysunek 12.6.

Rysunek 12.6.            O[USN 5'.'%6 8'45+10

Funkcja                  

VERSION                  ^ 8'45+10
 ^
                         

                         ^ PV ^
                         

                          TQY KP UGV 
 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ółbie 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 +PPC YCTVQ è.

Rysunek 12.7.          O[USN 5'.'%6 .R %#5' .R
Instrukcja                       9*'0  6*'0 ,GFGP
CASE                             9*'0  6*'0 YC
                                 '.5' +PPC YCTVQ è
                                 '0 #5 4GWNVCV[ FKC CPKC %#5'
                            (41/ RTQFWMV[
                       


                       ^ .R ^ 4GWNVCV[ FKC CPKC %#5' ^
                       


                       ^  ^ ,GFGP                    ^
                       ^  ^ YC                      ^
                       ^  ^ +PPC YCTVQ è             ^
                       ^  ^ +PPC YCTVQ è             ^
                       ^  ^ +PPC YCTVQ è             ^
                       


                        TQYU KP UGV 
 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 wartości zwracane mogą być dowolnym
       prawidłowym wyra eniem, w tym wywołaniem funkcji lub odwoł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 pierwszy 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.          O[USN 5'.'%6 .R %#5'
Instrukcja                        9*'0 .R   6*'0 219'4
.R
CASE WHEN                         9*'0 .R   6*'0 .R
                                  '.5' 0CYC
                                  '0 #5 4GWNVCV[ FKC CPKC %#5'
                            (41/ RTQFWMV[
                       


                       ^ .R ^ 4GWNVCV[ FKC CPKC %#5' ^
                       


                       ^  ^                   ^
                       ^  ^                   ^
                       ^  ^                  5EQVMC ^
                       ^  ^                          ^
                       ^  ^                     /[F Q ^
                       


                        TQYU KP UGV 
 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.          O[USN 5'.'%6 )'6A.1%-
 RTQFWMV[.R  
Funkcja                

GET_LOCK               ^ )'6A.1%-
 RTQFWMV[.R   ^
                       

                       ^                              ^
                       

                        TQY KP UGV 
 UGE

                       O[USN 72#6' RTQFWMV[ 5'6 %GPC 9*'4' .R
                       3WGT[ 1-  TQY CHHGEVGF 
 UGE
                       4QYU OCVEJGF  %JCPIGF  9CTPKPIU 

                       O[USN 5'.'%6 4'.'#5'A.1%-
 RTQFWMV[.R 
                       

                       ^ 4'.'#5'A.1%-
 RTQFWMV[.R  ^
                       

                       ^                              ^
                       

                        TQY KP UGV 
 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 w weekendzie.

Rysunek 12.10.         O[USN 5'.'%6 +(
#;1(9''-
019
 KP 
   YGGMGPF  FKG V[IQFPKC 
Instrukcja IF          

                       ^ +(
#;1(9''-
019
 KP 
   YGGMGPF  FKG V[IQFPKC  ^
                       

                       ^ FKG V[IQFPKC                                                  ^
                       

                        TQY KP UGV 
 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.         O[USN 5'.'%6 0CYC
Funkcja                          +(07..
1RKU $TCM QRKUW  #5 1RKU
IFNULL                      (41/ RTQFWMV[
                       


                       ^ 0CYC       ^ 1RKU       ^
                       


                       ^ 5EQVGEMC ^ $TCM QRKUW ^
                       ^ )TGDKG     ^ $TCM QRKUW ^
                       ^ 5EQVMC    ^ $TCM QRKUW ^
                       ^ 2CUVC       ^ $TCM QRKUW ^
                       ^ /[F Q       ^ VTÎLRCM    ^
                       


                        TQYU KP UGV 
 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 rozdziale 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.          O[USN 5'.'%6 0CYC 07..+(
/CIC[P  #5 /CIC[P
Funkcja                      (41/ RTQFWMV[
NULLIF                  


                        ^ 0CYC       ^ /CIC[P ^
                        


                        ^ 5EQVGEMC ^    07.. ^
                        ^ )TGDKG     ^    07.. ^
                        ^ 5EQVMC    ^    07.. ^
                        ^ 2CUVC       ^    07.. ^
                        ^ /[F Q       ^      ^
                        


                         TQYU KP UGV 
 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 funkcji )'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 tabeli, 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.         O[USN %4'#6' 6#$.' VGUVITWR 

Przykład                       .R +06 016 07.. #761A+0%4'/'06
grupowania                     TW[PC 8#4%*#4

danych                         9[PKM +06
                               24+/#4; -';
.R
                               
                       3WGT[ 1-  TQYU CHHGEVGF 
 UGE

                       O[USN +05'46 +061 VGUVITWR 
TW[PC 9[PKM 8#.7'5
                                
 %GTYQPK  
                                
 %GTYQPK  
                                
 %GTYQPK  
                                
 %GTYQPK  
                                
 %GTYQPK  
                                
 %GTYQPK  
                                
 %GTYQPK  
                                
 %GTYQPK  
                                
 0KGDKGUE[  
                                
 0KGDKGUE[  
                                
 0KGDKGUE[  
                                
 0KGDKGUE[  
                                
 0KGDKGUE[  
                                
 0KGDKGUE[  
                                
 0KGDKGUE[  
                                
 0KGDKGUE[  
                       3WGT[ 1-  TQYU CHHGEVGF 
 UGE
                       4GEQTFU  WRNKECVGU  9CTPKPIU 




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.         O[USN 5'.'%6 TW[PC #8)
9[PKM
Funkcja AVG                 (41/ VGUVITWR
                            )4172 $; TW[PC
                       


                       ^ TW[PC ^ #8)
9[PKM ^
                       


                       ^ %GTYQPK ^      ^
                       ^ 0KGDKGUE[ ^     ^
                       


                        TQYU KP UGV 
 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 najmniej jednym wyniku.

Rysunek 12.15.         O[USN 5'.'%6 TW[PC $+6A#0
9[PKM $+6A14
9[PKM
Funkcja                     (41/ VGUVITWR
BIT_OR                      )4172 $; TW[PC
                       



                       ^ TW[PC ^ $+6A#0
9[PKM ^ $+6A14
9[PKM ^
                       



                       ^ %GTYQPK ^                ^            ^
                       ^ 0KGDKGUE[ ^               ^            ^
                       



                        TQYU KP UGV 
 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 dla niej 7.

Rysunek 12.16.         O[USN 5'.'%6 TW[PC %1706
9[PKM %1706
+56+0%6 9[PKM
Funkcja                     (41/ VGUVITWR
COUNT                       )4172 $; TW[PC
                       



                       ^ TW[PC ^ %1706
9[PKM ^ %1706
+56+0%6 9[PKM ^
                       



                       ^ %GTYQPK ^              ^                      ^
                       ^ 0KGDKGUE[ ^             ^                      ^
                       



                        TQYU KP UGV 
 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.

Rysunek 12.17.           O[USN 5'.'%6 TW[PC /+0
9[PKM /#:
9[PKM
Funkcja MAX                   (41/ VGUVITWR
                              )4172 $; TW[PC
                         



                         ^ TW[PC ^ /+0
9[PKM ^ /#:
9[PKM ^
                         



                         ^ %GTYQPK ^           ^          ^
                         ^ 0KGDKGUE[ ^           ^          ^
                         



                          TQYU KP UGV 
 UGE




MIN(…)
       Funkcja zwraca najmniejszą wartość w grupie. Minimalna wartość łańcuchowa to ta, która
       występuje pierwsza w kolejności alfabetycznej (patrz: rysunek 12.17).


STD(…)
       Funkcja zwraca odchylenie standardowe dla grupy — patrz: rysunek 12.18.

Rysunek 12.18.           O[USN 5'.'%6 TW[PC 56
9[PKM
Funkcja STD                   (41/ VGUVITWR
                              )4172 $; TW[PC
                         


                         ^ TW[PC ^ 56
9[PKM ^
                         


                         ^ %GTYQPK ^      ^
                         ^ 0KGDKGUE[ ^     ^
                         


                          TQYU KP UGV 
 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.         O[USN 5'.'%6 TW[PC 57/
9[PKM
Funkcja SUM                 (41/ VGUVITWR
                            )4172 $; TW[PC
                       


                       ^ TW[PC ^ 57/
9[PKM ^
                       


                       ^ %GTYQPK ^          ^
                       ^ 0KGDKGUE[ ^         ^
                       


                        TQYU KP UGV 
 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: rysunek 12.20.

Rysunek 12.20.         O[USN 5'.'%6 #$5

Funkcja ABS            

                       ^ #$5
 ^
                       

                       ^        ^
                       

                        TQY KP UGV 
 UGE




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.         O[USN 5'.'%6 #%15

Funkcja ACOS           

                       ^ #%15
 ^
                       

                       ^  ^
                       

                        TQY KP UGV 
 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.

Rysunek 12.22.         O[USN 5'.'%6 #5+0

Funkcja ASIN           

                       ^ #5+0
 ^
                       

                       ^  ^
                       

                        TQY KP UGV 
 UGE




ATAN(liczba)
       Funkcja zwraca arcus tangens z liczby — patrz: rysunek 12.23.

Rysunek 12.23.         O[USN 5'.'%6 #6#0

Funkcja ATAN           

                       ^ #6#0
 ^
                       

                       ^  ^
                       

                        TQY KP UGV 
 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: rysunek 12.24.

Rysunek 12.24.         O[USN 5'.'%6 #6#0

Funkcja ATAN2          

                       ^ #6#0
 ^
                       

                       ^  ^
                       

                        TQY KP UGV 
 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


Rysunek 12.25.         O[USN 5'.'%6 %'+.+0)

Funkcja                

CEILING                ^ %'+.+0)
 ^
                       

                       ^             ^
                       

                        TQY KP UGV 
 UGE




COS(liczba)
       Funkcja zwraca cosinus z liczby wyra ony w radianach — patrz: rysunek 12.26.

Rysunek 12.26.         O[USN 5'.'%6 %15

Funkcja COS            

                       ^ %15
 ^
                       

                       ^  ^
                       

                        TQY KP UGV 
 UGE




COT(liczba)
       Funkcja zwraca cotangens z liczby — patrz: rysunek 12.27.

Rysunek 12.27.         O[USN 5'.'%6 %16

Funkcja COT            

                       ^ %16
     ^
                       

                       ^  ^
                       

                        TQY KP UGV 
 UGE




DEGREES(liczba)
       Funkcja zamienia radiany na stopnie — patrz: rysunek 12.28.

Rysunek 12.28.         O[USN 5'.'%6 ')4''5

Funkcja                

DEGREES                ^ ')4''5
      ^
                       

                       ^  ^
                       

                        TQY KP UGV 
 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.

Rysunek 12.29.          O[USN 5'.'%6 ':2

Funkcja EXP             

                        ^ ':2
 ^
                        

                        ^  ^
                        

                         TQY KP UGV 
 UGE




FLOOR(liczba)
       Funkcja zwraca najbli szą mniejszą liczbę całkowitą dla podanej liczby zmiennoprzecin-
       kowej — patrz: rysunek 12.30.

Rysunek 12.30.          O[USN 5'.'%6 (.114

Funkcja                 

FLOOR                   ^ (.114
 ^
                        

                        ^           ^
                        

                         TQY KP UGV 
 UGE




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.

Rysunek 12.31.          O[USN 5'.'%6 )4'#6'56

Funkcja                 

GREATEST                ^ )4'#6'56
 ^
                        

                        ^                ^
                        

                         TQY KP UGV 
 UGE




LEAST(…)
       Funkcja zwraca najmniejszą wartość z podanej listy, działając zarówno na łańcuchach, jak i na
       liczbach — patrz: rysunek 12.32.
150    Część II n Encyklopedia MySQL


Rysunek 12.32.         O[USN 5'.'%6 .'#56

Funkcja LEAST          

                       ^ .'#56
 ^
                       

                       ^             ^
                       

                        TQY KP UGV 
 UGE




LOG(liczba)
       Funkcja zwraca logarytm naturalny z liczby — patrz: rysunek 12.33.

Rysunek 12.33.         O[USN 5'.'%6 .1)

Funkcja LOG            

                       ^ .1)
 ^
                       

                       ^  ^
                       

                        TQY KP UGV 
 UGE




LOG10(liczba)
       Funkcja zwraca logarytm dziesiętny z liczby — patrz: rysunek 13.34.

Rysunek 13.34.         O[USN 5'.'%6 .1)

Funkcja LOG10          

                       ^ .1)
 ^
                       

                       ^     ^
                       

                        TQY KP UGV 
 UGE




MOD(liczba, liczba)
       Funkcja zwraca resztę z dzielenia, podobnie jak operator — patrz: rysunek 12.35.

Rysunek 12.35.         O[USN 5'.'%6 /1
 
Funkcja MOD            

                       ^ /1
  ^
                       

                       ^           ^
                       

                        TQY KP UGV 
 UGE
Rozdział 12. n Funkcje wewnętrzne      151


PI()
       Funkcja zwraca kilka pierwszych cyfr liczby π — patrz: rysunek 12.36. Wewnętrznie MySQL
       przechowuje pełną, podwójnej precyzji wartość π.

Rysunek 12.36.           O[USN 5'.'%6 2+

Funkcja PI               

                         ^ 2+
     ^
                         

                         ^  ^
                         

                          TQY KP UGV 
 UGE




POW(liczba, liczba)
       Funkcja zwraca pierwszą liczbę podniesioną do potęgi liczby drugiej — patrz: rysunek 12.37.

Rysunek 12.37.           O[USN 5'.'%6 219

Funkcja POW              

                         ^ 219
 ^
                         

                         ^  ^
                         

                          TQY KP UGV 
 UGE




POWER(liczba, liczba)
       Jest to alias funkcji 219.


RADIANS(liczba)
       Funkcja zamienia stopnie na radiany — patrz: rysunek 12.38.

Rysunek 12.38.           O[USN 5'.'%6 4#+#05

Funkcja                  

RADIANS                  ^ 4#+#05
      ^
                         

                         ^  ^
                         

                          TQY KP UGV 
 UGE
152    Część II n Encyklopedia MySQL


RAND([zarodek])
       Funkcja zwraca liczbę pseudolosową z zakresu od 0 do 1. Zarodka nale y u ywać, aby roz-
       począć generowanie liczb pseudolosowych od określonego punktu w sekwencji. Je eli nie
       podamy zarodka, MySQL u yje jako zarodka dla generatora liczb pseudolosowych wartość
       pobraną z zegara systemowego — patrz: rysunek 12.39.

Rysunek 12.39.           O[USN 5'.'%6 4#0

Funkcja RAND             

                         ^ 4#0
      ^
                         

                         ^  ^
                         

                          TQY KP UGV 
 UGE




ROUND(liczba[, dokładność])
       Funkcja zaokrągla liczbę zmiennoprzecinkową do całkowitej lub opcjonalnie do podanej liczby
       cyfr po przecinku — patrz: rysunek 12.40.

Rysunek 12.40.           O[USN 5'.'%6 4170
 
Funkcja ROUND            

                         ^ 4170
  ^
                         

                         ^             ^
                         

                          TQY KP UGV 
 UGE




SIGN(liczba)
       Funkcja zwraca –1, je eli liczba jest ujemna, lub 1, je eli jest dodatnia — patrz: rysunek 12.41.

Rysunek 12.41.           O[USN 5'.'%6 5+)0

Funkcja SIGN             

                         ^ 5+)0
 ^
                         

                         ^         ^
                         

                          TQY KP UGV 
 UGE




SIN(liczba)
       Funkcja zwraca sinus z liczby — patrz: rysunek 12.42.
Rozdział 12. n Funkcje wewnętrzne     153


Rysunek 12.42.         O[USN 5'.'%6 5+0

Funkcja SIN            

                       ^ 5+0
 ^
                       

                       ^  ^
                       

                        TQY KP UGV 
 UGE




SQRT(liczba)
       Funkcja zwraca pierwiastek kwadratowy z liczby — patrz: rysunek 12.43.

Rysunek 12.43.         O[USN 5'.'%6 5346

Funkcja SQRT           

                       ^ 5346
 ^
                       

                       ^  ^
                       

                        TQY KP UGV 
 UGE




TAN(liczba)
       Funkcja zwraca tangens z kąta wyra onego w radianach — patrz: rysunek 12.44.

Rysunek 12.44.         O[USN 5'.'%6 6#0

Funkcja TAN            

                       ^ 6#0
 ^
                       

                       ^  ^
                       

                        TQY KP UGV 
 UGE




TRUNCATE(liczba, dokładność)
       Funkcja skraca część ułamkową liczby do podanej dokładności — patrz: rysunek 12.45.

Rysunek 12.45.         O[USN 5'.'%6 6470%#6'
 
Funkcja                

TRUNCATE               ^ 6470%#6'
  ^
                       

                       ^                 ^
                       

                        TQY KP UGV 
 UGE
154    Część II n Encyklopedia MySQL



Łańcuchy
       Opisane tu funkcje wykonują operacje na łańcuchach i zwracają łańcuchy. Jak pamiętamy,
       MySQL udostępnia operatory do porównywania łańcuchów, w tym .+-' i 4')':2.


ASCII(znak)
       Funkcja zwraca kod ASCII pierwszego znaku w danym łańcuchu — patrz: rysunek 12.46.

Rysunek 12.46.         O[USN 5'.'%6 #5%++
 C 
Funkcja ASCII          

                       ^ #5%++
 C  ^
                       

                       ^          ^
                       

                        TQY KP UGV 
 UGE




BIN(liczba_całk)
       Funkcja zwraca reprezentację binarną podanej liczby całkowitej — patrz: rysunek 12.47.

Rysunek 12.47.         O[USN 5'.'%6 $+0

Funkcja BIN            

                       ^ $+0
 ^
                       

                       ^     ^
                       

                        TQY KP UGV 
 UGE




BINARY łańcuch
       Słowo kluczowe $+0#4; sprawia, e dany łańcuch jest traktowany jako binarny, co oznacza, e
       wielkość liter ma znaczenie przy porównaniach. Słowo $+0#4; ma wy szy priorytet ni ope-
       ratory porównania (wykonywane jest przed nimi). Rysunek 12.48 ilustruje zjawisko rozró nia-
       nia du ych i małych liter w łańcuchach binarnych i nierozró niania w łańcuchach normalnych.

Rysunek 12.48.         O[USN 5'.'%6 C  #  $+0#4; C  # 
Słowo kluczowe         


BINARY                 ^ C  # ^ $+0#4; C  # ^
                       


                       ^        ^               ^
                       


                        TQY KP UGV 
 UGE
Rozdział 12. n Funkcje wewnętrzne   155


CHAR(…)
       Funkcja zwraca łańcuch podany jako lista kodów ASCII — patrz: rysunek 12.49.

Rysunek 12.49.          O[USN 5'.'%6 %*#4

Funkcja CHAR            

                        ^ %*#4
 ^
                        

                        ^ CDE            ^
                        

                         TQY KP UGV 
 UGE




CHARACTER_LENGHT(łańcuch)
       Jest to alias funkcji %*#4A.'0)*6.


CHAR_LENGTH(łańcuch)
       Funkcja zwraca liczbę znaków w łańcuchu— patrz: rysunek 12.50. Znaki wielobajtowe są
       liczone jako jeden znak.

Rysunek 12.50.          O[USN 5'.'%6 %*#4A.'0)6*
 /[53. 
Funkcja                 

CHAR_LENGTH             ^ %*#4A.'0)6*
 /[53.  ^
                        

                        ^                     ^
                        

                         TQY KP UGV 
 UGE




CONCAT(…)
       Funkcja dokonuje połączenia łańcuchów podanych w liście — patrz: rysunek 12.51. Je eli
       którykolwiek z podanych elementów ma wartość PWNN, zwracane jest równie PWNN.

Rysunek 12.51.          O[USN 5'.'%6 %10%#6
 C  D  E 
Funkcja                 

CONCAT                  ^ %10%#6
 C  D  E  ^
                        

                        ^ CDE                   ^
                        

                         TQY KP UGV 
 UGE
156    Część II n Encyklopedia MySQL


CONCAT_WS(separator, …)
       Funkcja dokonuje połączenia łańcuchów, rozdzielając je separatorem — patrz: rysunek 12.52.
       W odró nieniu od funkcji %10%#6 wartość PWNN jest tu ignorowana. Separator o wartości PWNN
       powoduje, e funkcja zwraca PWNN.

Rysunek 12.52.         O[USN 5'.'%6 %10%#6A95
   C  D  E 
Funkcja                

CONCAT_WS              ^ %10%#6A95
   C  D  E  ^
                       

                       ^ C D E                        ^
                       

                        TQY KP UGV 
 UGE




CONV(liczba_całk, z_podstawy, do_podstawy)
       Funkcja dokonuje konwersji liczby całkowitej z jednego systemu liczenia na inny. Funkcja ta
       mo e zastępować funkcje $+0, *': i 1%6. Na rysunku 12.53 przedstawiono konwersję liczby
       ósemkowej na dziesiętną.

Rysunek 12.53.         O[USN 5'.'%6 %108
    
Funkcja                

CONV                   ^ %108
     ^
                       

                       ^                  ^
                       

                        TQY KP UGV 
 UGE




DECODE(tekst_zaszyfrowany, hasło)
       Funkcja odszyfrowuje łańcuch zaszyfrowany za pomocą funkcji '0%1' — patrz: rysunek 12.54.

Rysunek 12.54.         O[USN 5'.'%6 '%1'
'0%1'
 /[53.  JCU Q  JCU Q 
Funkcja                

DECODE                 ^ '%1'
'0%1'
 /[53.  JCU Q  JCU Q  ^
                       

                       ^ /[53.                                     ^
                       

                        TQY KP UGV 
 UGE




ELT(element, …)
       Funkcja zwraca element o indeksie wskazanym przez pierwszy argument — patrz: rysunek
       12.55. Pierwszy element ma numer 1.
Rozdział 12. n Funkcje wewnętrzne    157


Rysunek 12.55.         O[USN 5'.'%6 '.6
 C  D  E  F 
Funkcja ELT            

                       ^ '.6
 C  D  E  F  ^
                       

                       ^ E                       ^
                       

                        TQY KP UGV 
 UGE




ENCODE(tekst, hasło)
       Funkcja zwraca łańcuch zaszyfrowany za pomocą podanego hasła. Zwrócony łańcuch jest
       łańcuchem binarnym o tej samej długości, co pierwotny tekst. Łańcuch mo na odszyfrować
       za pomocą funkcji '%1'. Funkcji tej nie nale y stosować dla kolumny 2CUUYQTF w tabeli
       uprawnień (ang. grant table) MySQL. Do tego celu słu y funkcja 2#55914. Rysunek 12.56
       prezentuje zastosowanie '0%1' do ukrycia pól zawierających hasła w aplikacji.

Rysunek 12.56.         O[USN 72#6' W[VMQYPKM
Funkcja                 5'6 JCUNQ  '0%1'
 UGMTGV  JCU Q 
ENCODE                           9*'4' .R
                            3WGT[ 1M  TQY CHHGEVGF 
 UGE
                            4QYU OCVEJGF  %JCPIGF  9CTPKPIU 




ENCRYPT(łańcuch[, domieszka])
       Funkcja odbudowuje funkcję ET[RV języka C — patrz: rysunek 12.57. Jest to szyfrowanie
       nieodwracalne. Drugi argument mo e być dwuznakowym łańcuchem poprawiającym loso-
       wość szyfrowania. Dłu sze łańcuchy są skracane. Funkcja ta nie jest kompatybilna z funkcją
       2#55914 i ka dy system operacyjny mo e mieć odmienną implementację ET[RV (w bazach
       MySQL instalowanych w systemach Windows funkcja mo e zwracać wartość NULL).

Rysunek 12.57.         O[USN 5'.'%6 '0%4;26
 JCU Q  CD 
Funkcja                

ENCRYPT                ^ '0%4;26
 JCUNQ  CD  ^
                       

                       ^ CD,PIIZJ$[9+          ^
                       

                        TQY KP UGV 
 UGE




EXPORT_SET(pole_bitowe, opis_włączonej,
opis_wyłączonej[, separator[,liczba_bitów]])
       Funkcja zwraca łańcuch opcji odpowiadający bitom pierwszego argumentu. Bity, skonwer-
       towane kolejno od najmłodszego do najstarszego, budują łańcuch od lewej do prawej. Drugi
       i trzeci argument to ciągi tekstowe reprezentujące odpowiednio włączone i wyłączone bity.
158    Część II n Encyklopedia MySQL

       Domyślnym separatorem jest przecinek, ale mo e być nim dowolny łańcuch. Domyślnie
       u ywane są wszystkie 64 bity reprezentacji liczby całkowitej, ale mo na to ograniczyć za
       pomocą piątego argumentu. Na rysunku 12.58 znaczniki T i N są rozdzielane pionową kreską.
       Ukazano 8 pól (bitów) — pola aktywne definiuje liczba 9 (dwójkowo 1001).

Rysunek 12.58.         O[USN 5'.'%6 ':2146A5'6
 6  0  ^  
Funkcja                

EXPORT_SET             ^ ':2146A5'6
 6  0  ^   ^
                       

                       ^ 6^0^0^6^0^0^0^0                 ^
                       

                        TQY KP UGV 
 UGE




FIELD(element, …)
       Funkcja zwraca indeks pierwszego argumentu w obrębie listy, która po nim następuje —
       patrz: rysunek 12.59. Elementy listy są indeksowane od 1. Je eli szukany ciąg nie zostanie
       odnaleziony, na liście zwracane jest 0.

Rysunek 12.59.         O[USN 5'.'%6 (+'.
 D  C  D  E  F 
Funkcja                

FIELD                  ^ (+'.
 D  C  D  E  F  ^
                       

                       ^                            ^
                       

                        TQY KP UGV 
 UGE




FIND_IN_SET(łańcuch, lista)
       Funkcja zwraca indeks elementu listy łańcuchowej — listy elementów oddzielonych prze-
       cinkami, będącej łańcuchem (patrz: rysunek 12.60). Elementy listy są numerowane od 1.

Rysunek 12.60.         O[USN 5'.'%6 (+0A+0A5'6
 E  CDEF 
Funkcja                

FIND_IN_SET            ^ (+0A+0A5'6
 E  CDEF  ^
                       

                       ^                            ^
                       

                        TQY KP UGV 
 UGE




FORMAT(liczba, dokładność)
       Funkcja zwraca liczbę zmiennoprzecinkową z przecinkami wstawionymi co trzy potęgi liczby
       10 i z podaną liczbą cyfr w części ułamkowej — patrz: rysunek 12.61.
Rozdział 12. n Funkcje wewnętrzne     159


Rysunek 12.61.         O[USN 5'.'%6 (14/#6
 
Funkcja                

FORMAT                 ^ (14/#6
  ^
                       

                       ^               ^
                       

                        TQY KP UGV 
 UGE




HEX(liczba_całk)
       Funkcja zwraca szesnastkową reprezentację liczby całkowitej — patrz: rysunek 12.62.

Rysunek 12.62.         O[USN 5'.'%6 *':

Funkcja HEX            

                       ^ *':
 ^
                       

                       ^ #(       ^
                       

                        TQY KP UGV 
 UGE




INET_ATON(adres)
       Funkcja konwertuje adres internetowy zapisany jako łańcuch do postaci numerycznej. Adresy
       cztero- i ośmiobitowe są akceptowane — patrz: rysunek 12.63.

Rysunek 12.63.         O[USN 5'.'%6 +0'6A#610
  
Funkcja                

INET_ATON              ^ +0'6A#610
   ^
                       

                       ^                ^
                       

                        TQY KP UGV 
 UGE




INET_NTOA(adres)
       Funkcja zwraca łańcuchową reprezentację numerycznego adresu internetowego — patrz:
       rysunek 12.64.

Rysunek 12.64.         O[USN 5'.'%6 +0'6A061#
  
Funkcja                

INET_NTOA              ^ +0'6A061#
   ^
                       

                       ^              ^
                       

                        TQY KP UGV 
 UGE
160    Część II n Encyklopedia MySQL


INSERT(ciąg, pozycja, długość, podciąg)
       Funkcja wstawia łańcuch, opcjonalnie nadpisując istniejący podciąg. Drugi argument wska-
       zuje znak, a trzeci określa, ile znaków usunąć od wskazanego znaku przed wstawieniem
       łańcucha. Rysunek 12.65 ilustruje wstawienie ciągu ABC w pozycji 3 z nadpisaniem jednego
       znaku.

Rysunek 12.65.         O[USN 5'.'%6 +05'46
 CDEFGHI    #$% 
Funkcja                

INSERT                 ^ +05'46
 CDEFGHI    #$%  ^
                       

                       ^ CD#$%FGHI                      ^
                       

                        TQY KP UGV 
 UGE




INSTR(ciąg, podciąg)
       Funkcja zwraca wskaźnik do pierwszego wystąpienia podciągu w danym ciągu — patrz:
       rysunek 12.66.

Rysunek 12.66.         O[USN 5'.'%6 +0564
 UCOQNQV  NQV 
Funkcja                

INSTR                  ^ +0564
 UCOQNQV  NQV  ^
                       

                       ^                        ^
                       

                        TQY KP UGV 
 UGE




LCASE(ciąg)
       Funkcja zwraca łańcuch z wielkimi literami zamienionymi na małe — patrz: rysunek 12.67.
       Aliasem jest .19'4.

Rysunek 12.67.         O[USN 5'.'%6 .%#5'
 #D%F 
Funkcja                

LCASE                  ^ .%#5'
 #D%F  ^
                       

                       ^ CDEF          ^
                       

                        TQY KP UGV 
 UGE




LEFT(ciąg, długość)
       Funkcja zwraca podciąg z danego ciągu o podanej długości — patrz: rysunek 12.68.
Rozdział 12. n Funkcje wewnętrzne   161


Rysunek 12.68.         O[USN 5'.'%6 .'(6
 CDEFGH  
Funkcja                

LEFT                   ^ .'(6
 CDEFGH   ^
                       

                       ^ CDE               ^
                       

                        TQY KP UGV 
 UGE



LENGTH(ciąg)
       Funkcja zwraca liczbę bajtów dla danego ciągu — patrz: rysunek 12.69. Znaki dwubajtowe
       są interpretowane przez tę funkcję jako 2. Aby odnaleźć liczbę znaków w ciągach zawie-
       rających znaki wielobajtowe, nale y zastosować funkcję %*#4A.'0)6*. Aliasem .'0)*6 jest
       1%6'6A.'0)*6.

Rysunek 12.69.         O[USN 5'.'%6 .'0)6*
 CDE 
Funkcja                

LENGTH                 ^ .'0)6*
 CDE  ^
                       

                       ^              ^
                       

                        TQY KP UGV 
 UGE



LOAD_FILE(nazwa)
       Funkcja zwraca zawartość pliku znajdującego się w systemie plików serwera. U ytkownik
       musi mieć uprawnienia do otwarcia tego pliku w obrębie MySQL, a sam plik musi być udo-
       stęniony do odczytu wszystkim u ytkownikom systemu. Na rysunku 12.70 przedstawiono
       ładowanie treści wiadomości z forum do tabeli przechowującej wiadomości.

Rysunek 12.70.         O[USN 72#6' YKCFQOQUEK
Funkcja                5'6 VTGUE.1#A(+.'
 JQOGHQTWOVZV 
LOAD_FILE              9*'4' .R



LOCATE(podciąg, ciąg[, pozycja])
       Funkcja zwraca miejsce pierwszego wystąpienia podciągu w drugim argumencie — patrz:
       rysunek 12.71. Opcjonalnie wyszukiwanie mo na rozpocząć od określonej pozycji.

Rysunek 12.71.         O[USN 5'.'%6 .1%#6'
 D  CDECDE  
Funkcja                

LOCATE                 ^ .1%#6'
 D  CDECDE   ^
                       

                       ^                         ^
                       

                        TQY KP UGV 
 UGE
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL

More Related Content

What's hot

Oracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychOracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychWydawnictwo Helion
 
Oracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstawOracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstawWydawnictwo Helion
 
Microsoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga ekspertaMicrosoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga ekspertaWydawnictwo Helion
 
PHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie IIIPHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie IIIWydawnictwo Helion
 
Oracle Database 10g. Kompendium administratora
Oracle Database 10g. Kompendium administratoraOracle Database 10g. Kompendium administratora
Oracle Database 10g. Kompendium administratoraWydawnictwo Helion
 
Projektowanie baz danych XML. Vademecum profesjonalisty
Projektowanie baz danych XML. Vademecum profesjonalistyProjektowanie baz danych XML. Vademecum profesjonalisty
Projektowanie baz danych XML. Vademecum profesjonalistyWydawnictwo Helion
 
PHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstawPHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstawWydawnictwo Helion
 
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danychPHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danychWydawnictwo Helion
 
Oracle. Projektowanie rozproszonych baz danych
Oracle. Projektowanie rozproszonych baz danychOracle. Projektowanie rozproszonych baz danych
Oracle. Projektowanie rozproszonych baz danychWydawnictwo Helion
 
Oracle Database 10g RMAN. Archiwizacja i odzyskiwanie danych
Oracle Database 10g RMAN. Archiwizacja i odzyskiwanie danychOracle Database 10g RMAN. Archiwizacja i odzyskiwanie danych
Oracle Database 10g RMAN. Archiwizacja i odzyskiwanie danychWydawnictwo Helion
 

What's hot (13)

Oracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychOracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danych
 
Oracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstawOracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstaw
 
Microsoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga ekspertaMicrosoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga eksperta
 
PHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie IIIPHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie III
 
100 sposobów na Access
100 sposobów na Access100 sposobów na Access
100 sposobów na Access
 
SQL. Od podstaw
SQL. Od podstawSQL. Od podstaw
SQL. Od podstaw
 
Oracle Database 10g. Kompendium administratora
Oracle Database 10g. Kompendium administratoraOracle Database 10g. Kompendium administratora
Oracle Database 10g. Kompendium administratora
 
Transact-SQL. Czarna księga
Transact-SQL. Czarna księgaTransact-SQL. Czarna księga
Transact-SQL. Czarna księga
 
Projektowanie baz danych XML. Vademecum profesjonalisty
Projektowanie baz danych XML. Vademecum profesjonalistyProjektowanie baz danych XML. Vademecum profesjonalisty
Projektowanie baz danych XML. Vademecum profesjonalisty
 
PHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstawPHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstaw
 
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danychPHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
 
Oracle. Projektowanie rozproszonych baz danych
Oracle. Projektowanie rozproszonych baz danychOracle. Projektowanie rozproszonych baz danych
Oracle. Projektowanie rozproszonych baz danych
 
Oracle Database 10g RMAN. Archiwizacja i odzyskiwanie danych
Oracle Database 10g RMAN. Archiwizacja i odzyskiwanie danychOracle Database 10g RMAN. Archiwizacja i odzyskiwanie danych
Oracle Database 10g RMAN. Archiwizacja i odzyskiwanie danych
 

Viewers also liked

Viewers also liked (20)

14
1414
14
 
M. Kachniewska: Jak nowe media zmieniły filozofię myślenia o marketingu
M. Kachniewska: Jak nowe media zmieniły filozofię myślenia o marketinguM. Kachniewska: Jak nowe media zmieniły filozofię myślenia o marketingu
M. Kachniewska: Jak nowe media zmieniły filozofię myślenia o marketingu
 
Doradztwo rehabilitacyjne jako forma pomocy osobom niepełnosprawnym
Doradztwo rehabilitacyjne jako forma pomocy osobom niepełnosprawnymDoradztwo rehabilitacyjne jako forma pomocy osobom niepełnosprawnym
Doradztwo rehabilitacyjne jako forma pomocy osobom niepełnosprawnym
 
Asystent.osoby.niepelnosprawnej 346[02] z2.04_u
Asystent.osoby.niepelnosprawnej 346[02] z2.04_uAsystent.osoby.niepelnosprawnej 346[02] z2.04_u
Asystent.osoby.niepelnosprawnej 346[02] z2.04_u
 
8
88
8
 
Umysl Lidera
Umysl LideraUmysl Lidera
Umysl Lidera
 
Perl 6. Podstawy
Perl 6. PodstawyPerl 6. Podstawy
Perl 6. Podstawy
 
Cud UważNośCi Thich Nhat Hanh
Cud UważNośCi  Thich Nhat HanhCud UważNośCi  Thich Nhat Hanh
Cud UważNośCi Thich Nhat Hanh
 
Sunpower E20 327Wp / 333Wp Datasheet
Sunpower E20 327Wp / 333Wp DatasheetSunpower E20 327Wp / 333Wp Datasheet
Sunpower E20 327Wp / 333Wp Datasheet
 
Aktywni mieszkańcy Tarnów
Aktywni mieszkańcy TarnówAktywni mieszkańcy Tarnów
Aktywni mieszkańcy Tarnów
 
56
5656
56
 
Metody ewaluacji programu zdrowotnego.
Metody ewaluacji programu zdrowotnego.Metody ewaluacji programu zdrowotnego.
Metody ewaluacji programu zdrowotnego.
 
Zapozyczenia z jezyka angielskiego
Zapozyczenia z jezyka angielskiegoZapozyczenia z jezyka angielskiego
Zapozyczenia z jezyka angielskiego
 
Archiwizacja
ArchiwizacjaArchiwizacja
Archiwizacja
 
Koncepcje Fonsa Trompenaarsa
Koncepcje Fonsa TrompenaarsaKoncepcje Fonsa Trompenaarsa
Koncepcje Fonsa Trompenaarsa
 
Klasyfikacja pojazdów samochodowych
Klasyfikacja pojazdów samochodowychKlasyfikacja pojazdów samochodowych
Klasyfikacja pojazdów samochodowych
 
Projekt ustawy o oze
Projekt ustawy o ozeProjekt ustawy o oze
Projekt ustawy o oze
 
Koncepcja i formy e-learningu
Koncepcja i formy e-learninguKoncepcja i formy e-learningu
Koncepcja i formy e-learningu
 
7.1 sprzedawca
7.1 sprzedawca7.1 sprzedawca
7.1 sprzedawca
 
Ustawa o pdop
Ustawa o pdopUstawa o pdop
Ustawa o pdop
 

Similar to MySQL

PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startPHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startWydawnictwo Helion
 
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalistyMySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalistyWydawnictwo Helion
 
Bazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktykaBazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktykaWydawnictwo Helion
 
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie IIPHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie IIWydawnictwo Helion
 
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalistyPHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalistyWydawnictwo Helion
 
Oracle9i. Przewodnik dla początkujących
Oracle9i. Przewodnik dla początkującychOracle9i. Przewodnik dla początkujących
Oracle9i. Przewodnik dla początkującychWydawnictwo Helion
 
Visual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga ekspertaVisual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga ekspertaWydawnictwo Helion
 
C# 3.0 i .NET 3.5. Technologia LINQ
C# 3.0 i .NET 3.5. Technologia LINQC# 3.0 i .NET 3.5. Technologia LINQ
C# 3.0 i .NET 3.5. Technologia LINQWydawnictwo Helion
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie IIPHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie IIWydawnictwo Helion
 
100 sposobów na serwery Windows
100 sposobów na serwery Windows100 sposobów na serwery Windows
100 sposobów na serwery WindowsWydawnictwo Helion
 
Wprowadzenie do systemów baz danych
Wprowadzenie do systemów baz danychWprowadzenie do systemów baz danych
Wprowadzenie do systemów baz danychWydawnictwo Helion
 

Similar to MySQL (20)

PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startPHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki start
 
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalistyMySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
 
Bazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktykaBazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktyka
 
Linux w sieci
Linux w sieciLinux w sieci
Linux w sieci
 
Delphi 7 i bazy danych
Delphi 7 i bazy danychDelphi 7 i bazy danych
Delphi 7 i bazy danych
 
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie IIPHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
 
Access 2007 PL. Kurs
Access 2007 PL. KursAccess 2007 PL. Kurs
Access 2007 PL. Kurs
 
Ajax w akcji
Ajax w akcjiAjax w akcji
Ajax w akcji
 
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalistyPHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
PHP i MySQL. Tworzenie stron WWW. Wydanie drugie. Vademecum profesjonalisty
 
Po prostu Access 2003 PL
Po prostu Access 2003 PLPo prostu Access 2003 PL
Po prostu Access 2003 PL
 
Access 2003 PL. Kurs
Access 2003 PL. KursAccess 2003 PL. Kurs
Access 2003 PL. Kurs
 
Oracle9i. Przewodnik dla początkujących
Oracle9i. Przewodnik dla początkującychOracle9i. Przewodnik dla początkujących
Oracle9i. Przewodnik dla początkujących
 
PHP5 i MySQL. Biblia
PHP5 i MySQL. BibliaPHP5 i MySQL. Biblia
PHP5 i MySQL. Biblia
 
Access. Programowanie w VBA
Access. Programowanie w VBAAccess. Programowanie w VBA
Access. Programowanie w VBA
 
Visual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga ekspertaVisual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga eksperta
 
C# 3.0 i .NET 3.5. Technologia LINQ
C# 3.0 i .NET 3.5. Technologia LINQC# 3.0 i .NET 3.5. Technologia LINQ
C# 3.0 i .NET 3.5. Technologia LINQ
 
SQL. Szybki start
SQL. Szybki startSQL. Szybki start
SQL. Szybki start
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie IIPHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
 
100 sposobów na serwery Windows
100 sposobów na serwery Windows100 sposobów na serwery Windows
100 sposobów na serwery Windows
 
Wprowadzenie do systemów baz danych
Wprowadzenie do systemów baz danychWprowadzenie do systemów baz danych
Wprowadzenie do systemów baz danych
 

More from Wydawnictwo Helion

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyWydawnictwo Helion
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikWydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieWydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuWydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIWydawnictwo Helion
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningWydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykWydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
 

More from Wydawnictwo Helion (20)

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 

MySQL

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI MySQL KATALOG KSI¥¯EK Autor: Leon Atkinson T³umaczenie: Jaros³aw Dobrzañski, Tomasz ¯mijewski KATALOG ONLINE ISBN: 83-7361-170-3 Tytu³ orygina³u: Core MySQL ZAMÓW DRUKOWANY KATALOG Format: B5, stron: 608 TWÓJ KOSZYK DODAJ DO KOSZYKA 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 CENNIK I INFORMACJE aplikacje, niezale¿nie od stopnia ich skomplikowania. Ksi¹¿ka rozpoczyna siê od omówienia podstaw MySQL-a: zapytañ SQL, zasad ZAMÓW INFORMACJE projektowania baz danych, normalizacji, transakcji i przetwarzania równoleg³ego. O NOWO CIACH 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, ZAMÓW CENNIK 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 CZYTELNIA SQL w MySQL-u • Typy danych, zmienne, funkcje wbudowane i narzêdzia dostêpne z linii komend FRAGMENTY KSI¥¯EK ONLINE 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 Wydawnictwo Helion FreeTrade: zestawu narzêdzi open source wykorzystuj¹cego MySQL i PHP. Atkinson ul. Chopina 6 od 1997 roku u¿ywa MySQL w wielu aplikacjach sieciowych i e-commerce. 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl
  • 2. Spis treści Wstęp............................................................................................................................................................11 Część I MySQL i model relacyjny 13 Rozdział 1. Wprowadzenie do MySQL ........................................................................................................15 Jak się korzysta z baz danych?....................................................................................... 16 Dlaczego bazy danych są lepsze niż pliki? ....................................................................... 23 Bazy danych nie są lekiem na całe zło ............................................................................ 25 Dlaczego MySQL? ......................................................................................................... 26 Historia MySQL............................................................................................................. 27 Rozdział 2. Instalacja MySQL .................................................................................................................... 29 Pobieranie plików instalacyjnych..................................................................................... 29 Linux RPM .................................................................................................................... 30 Windows ...................................................................................................................... 31 Kompilowanie kodu źródłowego...................................................................................... 33 Nadawanie uprawnień ................................................................................................... 33 Rozdział 3. Interakcja z MySQL ................................................................................................................ 35 Połączenie klient-serwer poprzez TCP/IP ......................................................................... 35 Narzędzia wiersza poleceń ............................................................................................. 36 Interfejsy graficzne ........................................................................................................ 38 ODBC........................................................................................................................... 39 Interfejsy WWW............................................................................................................. 40 Rozdział 4. Modele baz danych ..................................................................................................................41 Historia........................................................................................................................ 41 Terminologia................................................................................................................. 43 DBMS — system zarządzania bazą danych ..................................................................... 43 Bazy danych oparte na zwykłych plikach.......................................................................... 44 Hierarchiczne bazy danych ............................................................................................. 45 Sieciowe bazy danych.................................................................................................... 46 Relacyjne bazy danych................................................................................................... 47 Obiektowe bazy danych ................................................................................................. 48 Obiektowo-relacyjne bazy danych .................................................................................... 49 Rozdział 5. Model relacyjny.......................................................................................................................51 Algebra relacyjna .......................................................................................................... 51 Tabele, wiersze i kolumny .............................................................................................. 52 Klucze.......................................................................................................................... 53 Powiązania ................................................................................................................... 55
  • 3. 4 MySQL Operacje relacyjne......................................................................................................... 56 Czy MySQL to prawdziwy system RDMBS? ...................................................................... 62 Rozdział 6. Język zapytań strukturalnych.............................................................................................. 63 SQL jako język czwartej generacji ................................................................................... 63 Definiowanie danych ..................................................................................................... 64 Wstawianie wierszy ....................................................................................................... 66 Aktualizacja wierszy....................................................................................................... 67 Usuwanie wierszy.......................................................................................................... 67 Zapytania ..................................................................................................................... 68 Złączenia ..................................................................................................................... 69 Porządkowanie.............................................................................................................. 71 Grupowanie .................................................................................................................. 71 Stosowanie ograniczeń.................................................................................................. 72 Zmiana formy tabeli ...................................................................................................... 73 Rozdział 7. Projektowanie bazy danych .................................................................................................. 75 Specyfikacja wymagań................................................................................................... 76 Specyfikacja projektowa ................................................................................................ 79 Tworzenie diagramów .................................................................................................... 81 Języki modelowania....................................................................................................... 83 Diagramy ER................................................................................................................. 84 Tworzenie diagramu ...................................................................................................... 85 Implementacja projektu ................................................................................................. 85 Testowanie................................................................................................................... 88 Planowanie rozwoju ....................................................................................................... 88 Rozdział 8. Normalizacja ............................................................................................................................91 Zasadność normalizacji ................................................................................................. 92 Pierwsza postać normalna ............................................................................................. 93 Druga postać normalna ................................................................................................. 94 Trzecia postać normalna................................................................................................ 96 Postać normalna Boyce-Codda ....................................................................................... 97 Czwarta postać normalna .............................................................................................. 98 Denormalizacja ............................................................................................................. 99 Rozdział 9. Transakcje i współbie ność ..................................................................................................101 Współbieżność ........................................................................................................... 102 Transakcje ................................................................................................................. 102 Blokowanie................................................................................................................. 106 Sekwencje.................................................................................................................. 107 Część II Encyklopedia MySQL 109 Rozdział 10. Typy danych, zmienne i wyra enia...................................................................................... 111 Typy danych................................................................................................................ 111 Zmienne..................................................................................................................... 114 Operatory ................................................................................................................... 116 Wyrażenia .................................................................................................................. 123 Nazwy ze spacjami ...................................................................................................... 124
  • 4. Spis treści 5 Rozdział 11. Typy kolumn i indeksów .......................................................................................................125 Liczby ........................................................................................................................ 126 Łańcuchy.................................................................................................................... 128 Wartości opisujące czas .............................................................................................. 131 Aliasy typów kolumn.................................................................................................... 133 Indeksy ...................................................................................................................... 133 Rozdział 12. Funkcje wewnętrzne ...........................................................................................................135 Diagnostyka i konfiguracja ........................................................................................... 136 Sterowanie przebiegiem egzekucji ................................................................................ 138 Grupowanie ................................................................................................................ 142 Funkcje matematyczne ................................................................................................ 146 Łańcuchy.................................................................................................................... 154 Czas .......................................................................................................................... 169 Pozostałe funkcje........................................................................................................ 181 Procedury ................................................................................................................... 183 Rozdział 13. Instrukcje SQL ......................................................................................................................185 Komentarze................................................................................................................ 185 Alter Table.................................................................................................................. 186 Analyze Table ............................................................................................................. 190 Backup Table.............................................................................................................. 191 Begin [Work]............................................................................................................... 192 Change Master ........................................................................................................... 192 Check Table ............................................................................................................... 193 Commit ...................................................................................................................... 193 Create Database......................................................................................................... 194 Create Function .......................................................................................................... 194 Create Index............................................................................................................... 194 Create Table............................................................................................................... 195 Delete........................................................................................................................ 201 Describe .................................................................................................................... 202 Drop Database ........................................................................................................... 203 Drop Function ............................................................................................................. 204 Drop Index.................................................................................................................. 204 Drop Table ................................................................................................................. 204 Explain....................................................................................................................... 204 Flush ......................................................................................................................... 206 Grant ......................................................................................................................... 207 Insert......................................................................................................................... 209 Kill............................................................................................................................. 210 Lock Tables................................................................................................................ 210 Load Data Infile .......................................................................................................... 211 Load Table ................................................................................................................. 213 Optimize Table............................................................................................................ 214 Purge Master Logs...................................................................................................... 214 Rename Table ............................................................................................................ 214 Repair Table ............................................................................................................... 215 Replace ..................................................................................................................... 215 Reset Master ............................................................................................................. 216 Reset Slave................................................................................................................ 216
  • 5. 6 MySQL Restore Table ............................................................................................................. 216 Revoke....................................................................................................................... 216 Rollback..................................................................................................................... 217 Select ........................................................................................................................ 217 Set ............................................................................................................................ 222 Set Transaction .......................................................................................................... 226 Show Columns............................................................................................................ 226 Show Create Table...................................................................................................... 227 Show Databases......................................................................................................... 228 Show Grants............................................................................................................... 228 Show Index................................................................................................................. 229 Show Logs ................................................................................................................. 229 Show Processlist ........................................................................................................ 230 Show Status............................................................................................................... 230 Show Table Status ...................................................................................................... 232 Show Tables............................................................................................................... 233 Show Variables........................................................................................................... 233 Slave ......................................................................................................................... 237 Truncate .................................................................................................................... 237 Unlock Tables............................................................................................................. 237 Update....................................................................................................................... 238 Use ........................................................................................................................... 239 Rozdział 14. Narzędzia uruchamiane z wiersza poleceń.......................................................................241 Zmienne środowiskowe ............................................................................................... 241 Pliki opcji ................................................................................................................... 242 comp_err.................................................................................................................... 244 isamchk ..................................................................................................................... 244 make_binary_distribution............................................................................................. 244 msql2mysql................................................................................................................ 244 my_print_defaults ....................................................................................................... 245 myisamchk................................................................................................................. 246 myisamlog.................................................................................................................. 252 myisampack ............................................................................................................... 254 mysql......................................................................................................................... 256 mysql_install_db ......................................................................................................... 268 mysqlaccess .............................................................................................................. 268 mysqladmin................................................................................................................ 269 mysqlbinlog ................................................................................................................ 277 mysqlbug ................................................................................................................... 279 mysqlc ....................................................................................................................... 279 mysqld....................................................................................................................... 280 mysqld-max ................................................................................................................ 296 mysqld-nt ................................................................................................................... 296 mysqld-opt ................................................................................................................. 297 mysqld_multi .............................................................................................................. 297 mysqldump ................................................................................................................ 299 mysqldumpslow .......................................................................................................... 306 mysqlhotcopy ............................................................................................................. 308 mysqlimport ............................................................................................................... 311 mysqlshow ................................................................................................................. 315
  • 6. Spis treści 7 pack_isam ................................................................................................................. 317 perror ........................................................................................................................ 317 replace ...................................................................................................................... 318 safe_mysqld............................................................................................................... 319 Rozdział 15. API C ......................................................................................................................................321 Typy danych................................................................................................................ 321 Funkcje klienckie ........................................................................................................ 325 Funkcje obsługi tablic.................................................................................................. 350 Funkcje zestawów znaków ........................................................................................... 350 Funkcje obsługi plików................................................................................................. 352 Funkcje obsługi błędów ............................................................................................... 354 Funkcje mieszające ..................................................................................................... 354 Funkcje list................................................................................................................. 355 Funkcje zarządzające pamięcią..................................................................................... 356 Funkcje opcji .............................................................................................................. 357 Funkcje obsługi haseł.................................................................................................. 357 Funkcje łańcuchowe .................................................................................................... 358 Funkcje obsługi wątków ............................................................................................... 360 Część III Pisanie programów klienckich MySQL 361 Rozdział 16. Programowanie w API języka C.........................................................................................363 Przygotowanie programu .............................................................................................. 363 Pobieranie danych....................................................................................................... 365 Przetwarzanie danych .................................................................................................. 367 Rozdział 17. JDBC ......................................................................................................................................371 Przygotowanie programu .............................................................................................. 371 Pobieranie danych....................................................................................................... 373 Przetwarzanie danych .................................................................................................. 375 Rozdział 18. VBScript i ODBC ...................................................................................................................377 Przygotowanie programu .............................................................................................. 377 Pobieranie danych....................................................................................................... 379 Przetwarzanie danych .................................................................................................. 381 Rozdział 19. PHP .......................................................................................................................................385 Przygotowanie programu .............................................................................................. 385 Pobieranie danych....................................................................................................... 386 Przetwarzanie danych .................................................................................................. 388 Rozdział 20. Perl .......................................................................................................................................391 Przygotowanie programu .............................................................................................. 391 Pobieranie danych....................................................................................................... 392 Przetwarzanie danych .................................................................................................. 393 Rozdział 21. Python ..................................................................................................................................397 Przygotowanie programu .............................................................................................. 397 Pobieranie danych....................................................................................................... 398 Przetwarzanie danych .................................................................................................. 400
  • 7. 8 MySQL Rozdział 22. API MySQL++.......................................................................................................................403 Przygotowanie programu .............................................................................................. 403 Pobieranie danych....................................................................................................... 404 Przetwarzanie danych .................................................................................................. 406 Część IV Zagadnienia zaawansowane 409 Rozdział 23. Administracja bazą danych .................................................................................................411 Zakres odpowiedzialności ............................................................................................ 411 Udostępnianie danych ................................................................................................. 412 Zapewnienie spójności bazy danych.............................................................................. 413 W razie awarii ............................................................................................................. 414 Pomoc użytkownikom .................................................................................................. 414 Tworzenie i wdrażanie standardów................................................................................ 415 Rozdział 24. Fizyczne struktury danych ................................................................................................417 Model bazy danych i tabel............................................................................................ 417 Partycje dedykowane ................................................................................................... 418 Typy tabel................................................................................................................... 418 Kolumny..................................................................................................................... 425 Blokowanie tabel ........................................................................................................ 426 Indeksy ...................................................................................................................... 426 Deskryptory plików ...................................................................................................... 428 Pamięć systemowa ..................................................................................................... 429 Dzienniki .................................................................................................................... 429 Rozdział 25. Jak radzić sobie z awarią .................................................................................................435 Sprawdzanie tabel i ich naprawianie ............................................................................. 435 Kopie bezpieczeństwa, odzyskiwanie danych ................................................................. 438 Rozdział 26. Optymalizacja .....................................................................................................................445 Zanim zajmiesz się optymalizacją ................................................................................. 445 Badanie wydajności..................................................................................................... 446 Optymalizacja na etapie projektu.................................................................................. 450 Optymalizacja w aplikacjach......................................................................................... 451 Optymalizacja zapytań ................................................................................................. 452 Optymalizacja zapytań SQL .......................................................................................... 455 Troska o tabele........................................................................................................... 456 Dostrajanie serwera .................................................................................................... 457 Rekompilacja MySQL................................................................................................... 459 Rozdział 27. Bezpieczeństwo..................................................................................................................463 System uprawnień ...................................................................................................... 463 Nadawanie uprawnień ................................................................................................. 469 Zapewnianie bezpieczeństwa ....................................................................................... 471 Rozdział 28. Zmiana bazy danych...........................................................................................................475 Zmiana serwerów baz danych....................................................................................... 475 Uzupełnianie możliwości MySQL................................................................................... 476 Użycie trybu ANSI........................................................................................................ 481 Wyjątkowe cechy MySQL.............................................................................................. 482
  • 8. Spis treści 9 Rozdział 29. Rozproszone bazy danych .................................................................................................487 Pojęcie rozproszonych baz danych ................................................................................ 487 Synchronizacja opóźniona ............................................................................................ 490 Replikacja w MySQL .................................................................................................... 492 Uruchamianie wielu serwerów ...................................................................................... 497 Rozdział 30. Odwzorowanie na obiekty .................................................................................................499 Model obiektowy ......................................................................................................... 500 Serializacja obiektów................................................................................................... 500 Odwzorowanie obiektowości i relacyjności ..................................................................... 503 Rozdział 31. Rozszerzanie mo liwości ....................................................................................................513 Biblioteka do analizy błędów ........................................................................................ 513 Dodawanie zestawów znaków ...................................................................................... 515 Funkcje ...................................................................................................................... 520 Procedury ................................................................................................................... 523 Dodatki 525 Dodatek A Zasoby internetowe...............................................................................................................527 Oficjalne listy mailingowe............................................................................................. 527 Nieoficjalne listy wysyłkowe ......................................................................................... 529 Archiwa list wysyłkowych.............................................................................................. 529 Witryny....................................................................................................................... 530 Dodatek B Dalsza lektura ........................................................................................................................533 Dodatek C Biznes i kwestie prawne .......................................................................................................535 Licencja MySQL .......................................................................................................... 535 Publiczna licencja GNU ................................................................................................ 535 Stabilność .................................................................................................................. 542 Pomoc ....................................................................................................................... 542 Dodatek D Słowa zastrze one ................................................................................................................545 Dodatek E Kody błędów MySQL ...............................................................................................................549 Dodatek F Styl kodowania w SQL .............................................................................................................561 Zalecenia ogólne ........................................................................................................ 561 Identyfikatory.............................................................................................................. 562 Tabele ....................................................................................................................... 562 Instrukcje ................................................................................................................... 563 Dodatek G Projekt przykładowej bazy danych ..................................................................................... 565 Diagramy.................................................................................................................... 565 Schemat SQL ............................................................................................................. 567 Skorowidz ................................................................................................................................................579
  • 9. 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ą nawiasó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ą du ych i małych liter.
  • 10. 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 pomagają 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. O[USN 5'.'%6 $'0%*/#4- 5170': .GQP Funkcja BENCHMARK ^ $'0%*/#4- 5170': .GQP ^ ^ ^ TQY KP UGV 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łączenia bie ącego — patrz: rysunek 12.2. Rysunek 12.2. O[USN 5'.'%6 %100'%6+10A+ Funkcja CONNECTION_ID ^ %100'%6+10A+ ^ ^ ^ TQY KP UGV UGE
  • 11. 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: rysunek 12.3. Rysunek 12.3. O[USN 5'.'%6 #6#$#5' Funkcja DATABASE ^ #6#$#5' ^ ^ VGUV ^ TQY KP UGV 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. O[USN 5'.'%6 .#56A+05'46A+ Funkcja LAST_INSERT_ID ^ NCUVAKPUGTVAKF ^ ^ ^ TQY KP UGV UGE O[USN +05'46 +061 RTQFWMV[ 8#.7'5 07.. /[F Q VTÎLRCM 3WGT[ 1- TQY CHHGEVGF UGE O[USN 5'.'%6 .#56A+05'46A+ ^ NCUVAKPUGTVAKF ^ ^ ^ TQY KP UGV 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ść”.
  • 12. 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. Rysunek 12.5. O[USN 5'.'%6 75'4 Funkcja USER ^ 75'4 ^ ^ 1$%NQECNJQUV ^ TQY KP UGV UGE VERSION() Funkcja zwraca numer wersji serwera MySQL — patrz: rysunek 12.6. Rysunek 12.6. O[USN 5'.'%6 8'45+10 Funkcja VERSION ^ 8'45+10 ^ ^ PV ^ TQY KP UGV 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ółbie nością.
  • 13. 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 +PPC YCTVQ è. Rysunek 12.7. O[USN 5'.'%6 .R %#5' .R Instrukcja 9*'0 6*'0 ,GFGP CASE 9*'0 6*'0 YC '.5' +PPC YCTVQ è '0 #5 4GWNVCV[ FKC CPKC %#5' (41/ RTQFWMV[ ^ .R ^ 4GWNVCV[ FKC CPKC %#5' ^ ^ ^ ,GFGP ^ ^ ^ YC ^ ^ ^ +PPC YCTVQ è ^ ^ ^ +PPC YCTVQ è ^ ^ ^ +PPC YCTVQ è ^ TQYU KP UGV 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 wartości zwracane mogą być dowolnym prawidłowym wyra eniem, w tym wywołaniem funkcji lub odwoł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 pierwszy 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.
  • 14. 140 Część II n Encyklopedia MySQL Rysunek 12.8. O[USN 5'.'%6 .R %#5' Instrukcja 9*'0 .R 6*'0 219'4 .R CASE WHEN 9*'0 .R 6*'0 .R '.5' 0CYC '0 #5 4GWNVCV[ FKC CPKC %#5' (41/ RTQFWMV[ ^ .R ^ 4GWNVCV[ FKC CPKC %#5' ^ ^ ^ ^ ^ ^ ^ ^ ^ 5EQVMC ^ ^ ^ ^ ^ ^ /[F Q ^ TQYU KP UGV 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. O[USN 5'.'%6 )'6A.1%- RTQFWMV[.R Funkcja GET_LOCK ^ )'6A.1%- RTQFWMV[.R ^ ^ ^ TQY KP UGV UGE O[USN 72#6' RTQFWMV[ 5'6 %GPC 9*'4' .R 3WGT[ 1- TQY CHHGEVGF UGE 4QYU OCVEJGF %JCPIGF 9CTPKPIU O[USN 5'.'%6 4'.'#5'A.1%- RTQFWMV[.R ^ 4'.'#5'A.1%- RTQFWMV[.R ^ ^ ^ TQY KP UGV UGE
  • 15. 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 w weekendzie. Rysunek 12.10. O[USN 5'.'%6 +( #;1(9''- 019 KP YGGMGPF FKG V[IQFPKC Instrukcja IF ^ +( #;1(9''- 019 KP YGGMGPF FKG V[IQFPKC ^ ^ FKG V[IQFPKC ^ TQY KP UGV 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. O[USN 5'.'%6 0CYC Funkcja +(07.. 1RKU $TCM QRKUW #5 1RKU IFNULL (41/ RTQFWMV[ ^ 0CYC ^ 1RKU ^ ^ 5EQVGEMC ^ $TCM QRKUW ^ ^ )TGDKG ^ $TCM QRKUW ^ ^ 5EQVMC ^ $TCM QRKUW ^ ^ 2CUVC ^ $TCM QRKUW ^ ^ /[F Q ^ VTÎLRCM ^ TQYU KP UGV 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
  • 16. 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 rozdziale 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. O[USN 5'.'%6 0CYC 07..+( /CIC[P #5 /CIC[P Funkcja (41/ RTQFWMV[ NULLIF ^ 0CYC ^ /CIC[P ^ ^ 5EQVGEMC ^ 07.. ^ ^ )TGDKG ^ 07.. ^ ^ 5EQVMC ^ 07.. ^ ^ 2CUVC ^ 07.. ^ ^ /[F Q ^ ^ TQYU KP UGV 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 funkcji )'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 tabeli, 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.
  • 17. Rozdział 12. n Funkcje wewnętrzne 143 Rysunek 12.13. O[USN %4'#6' 6#$.' VGUVITWR Przykład .R +06 016 07.. #761A+0%4'/'06 grupowania TW[PC 8#4%*#4 danych 9[PKM +06 24+/#4; -'; .R 3WGT[ 1- TQYU CHHGEVGF UGE O[USN +05'46 +061 VGUVITWR TW[PC 9[PKM 8#.7'5 %GTYQPK %GTYQPK %GTYQPK %GTYQPK %GTYQPK %GTYQPK %GTYQPK %GTYQPK 0KGDKGUE[ 0KGDKGUE[ 0KGDKGUE[ 0KGDKGUE[ 0KGDKGUE[ 0KGDKGUE[ 0KGDKGUE[ 0KGDKGUE[ 3WGT[ 1- TQYU CHHGEVGF UGE 4GEQTFU WRNKECVGU 9CTPKPIU 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. O[USN 5'.'%6 TW[PC #8) 9[PKM Funkcja AVG (41/ VGUVITWR )4172 $; TW[PC ^ TW[PC ^ #8) 9[PKM ^ ^ %GTYQPK ^ ^ ^ 0KGDKGUE[ ^ ^ TQYU KP UGV UGE BIT_AND(kolumna) Funkcja wykonuje na grupie bitową operację AND i zwraca dziesiętną liczbę całkowitą — patrz: rysunek 12.15.
  • 18. 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 najmniej jednym wyniku. Rysunek 12.15. O[USN 5'.'%6 TW[PC $+6A#0 9[PKM $+6A14 9[PKM Funkcja (41/ VGUVITWR BIT_OR )4172 $; TW[PC ^ TW[PC ^ $+6A#0 9[PKM ^ $+6A14 9[PKM ^ ^ %GTYQPK ^ ^ ^ ^ 0KGDKGUE[ ^ ^ ^ TQYU KP UGV UGE COUNT(kolumna) Funkcja zwraca liczbę niepustych elementów w grupie. Mo na te zastosować znak gwiazdki (
  • 19. ) 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 dla niej 7. Rysunek 12.16. O[USN 5'.'%6 TW[PC %1706 9[PKM %1706 +56+0%6 9[PKM Funkcja (41/ VGUVITWR COUNT )4172 $; TW[PC ^ TW[PC ^ %1706 9[PKM ^ %1706 +56+0%6 9[PKM ^ ^ %GTYQPK ^ ^ ^ ^ 0KGDKGUE[ ^ ^ ^ TQYU KP UGV 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
  • 20. 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. Rysunek 12.17. O[USN 5'.'%6 TW[PC /+0 9[PKM /#: 9[PKM Funkcja MAX (41/ VGUVITWR )4172 $; TW[PC ^ TW[PC ^ /+0 9[PKM ^ /#: 9[PKM ^ ^ %GTYQPK ^ ^ ^ ^ 0KGDKGUE[ ^ ^ ^ TQYU KP UGV UGE MIN(…) Funkcja zwraca najmniejszą wartość w grupie. Minimalna wartość łańcuchowa to ta, która występuje pierwsza w kolejności alfabetycznej (patrz: rysunek 12.17). STD(…) Funkcja zwraca odchylenie standardowe dla grupy — patrz: rysunek 12.18. Rysunek 12.18. O[USN 5'.'%6 TW[PC 56 9[PKM Funkcja STD (41/ VGUVITWR )4172 $; TW[PC ^ TW[PC ^ 56 9[PKM ^ ^ %GTYQPK ^ ^ ^ 0KGDKGUE[ ^ ^ TQYU KP UGV 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.
  • 21. 146 Część II n Encyklopedia MySQL Rysunek 12.19. O[USN 5'.'%6 TW[PC 57/ 9[PKM Funkcja SUM (41/ VGUVITWR )4172 $; TW[PC ^ TW[PC ^ 57/ 9[PKM ^ ^ %GTYQPK ^ ^ ^ 0KGDKGUE[ ^ ^ TQYU KP UGV 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: rysunek 12.20. Rysunek 12.20. O[USN 5'.'%6 #$5 Funkcja ABS ^ #$5 ^ ^ ^ TQY KP UGV UGE 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. O[USN 5'.'%6 #%15 Funkcja ACOS ^ #%15 ^ ^ ^ TQY KP UGV UGE
  • 22. 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. Rysunek 12.22. O[USN 5'.'%6 #5+0 Funkcja ASIN ^ #5+0 ^ ^ ^ TQY KP UGV UGE ATAN(liczba) Funkcja zwraca arcus tangens z liczby — patrz: rysunek 12.23. Rysunek 12.23. O[USN 5'.'%6 #6#0 Funkcja ATAN ^ #6#0 ^ ^ ^ TQY KP UGV 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: rysunek 12.24. Rysunek 12.24. O[USN 5'.'%6 #6#0 Funkcja ATAN2 ^ #6#0 ^ ^ ^ TQY KP UGV UGE CEILING(liczba) Funkcja zaokrągla liczbę zmiennoprzecinkową do najbli szej większej liczby całkowitej — patrz: rysunek 12.25.
  • 23. 148 Część II n Encyklopedia MySQL Rysunek 12.25. O[USN 5'.'%6 %'+.+0) Funkcja CEILING ^ %'+.+0) ^ ^ ^ TQY KP UGV UGE COS(liczba) Funkcja zwraca cosinus z liczby wyra ony w radianach — patrz: rysunek 12.26. Rysunek 12.26. O[USN 5'.'%6 %15 Funkcja COS ^ %15 ^ ^ ^ TQY KP UGV UGE COT(liczba) Funkcja zwraca cotangens z liczby — patrz: rysunek 12.27. Rysunek 12.27. O[USN 5'.'%6 %16 Funkcja COT ^ %16 ^ ^ ^ TQY KP UGV UGE DEGREES(liczba) Funkcja zamienia radiany na stopnie — patrz: rysunek 12.28. Rysunek 12.28. O[USN 5'.'%6 ')4''5 Funkcja DEGREES ^ ')4''5 ^ ^ ^ TQY KP UGV UGE
  • 24. Rozdział 12. n Funkcje wewnętrzne 149 EXP(liczba) Funkcja zwraca podstawę logarytmu naturalnego (e) podniesioną do podanej potęgi — patrz: rysunek 12.29. Rysunek 12.29. O[USN 5'.'%6 ':2 Funkcja EXP ^ ':2 ^ ^ ^ TQY KP UGV UGE FLOOR(liczba) Funkcja zwraca najbli szą mniejszą liczbę całkowitą dla podanej liczby zmiennoprzecin- kowej — patrz: rysunek 12.30. Rysunek 12.30. O[USN 5'.'%6 (.114 Funkcja FLOOR ^ (.114 ^ ^ ^ TQY KP UGV UGE 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. Rysunek 12.31. O[USN 5'.'%6 )4'#6'56 Funkcja GREATEST ^ )4'#6'56 ^ ^ ^ TQY KP UGV UGE LEAST(…) Funkcja zwraca najmniejszą wartość z podanej listy, działając zarówno na łańcuchach, jak i na liczbach — patrz: rysunek 12.32.
  • 25. 150 Część II n Encyklopedia MySQL Rysunek 12.32. O[USN 5'.'%6 .'#56 Funkcja LEAST ^ .'#56 ^ ^ ^ TQY KP UGV UGE LOG(liczba) Funkcja zwraca logarytm naturalny z liczby — patrz: rysunek 12.33. Rysunek 12.33. O[USN 5'.'%6 .1) Funkcja LOG ^ .1) ^ ^ ^ TQY KP UGV UGE LOG10(liczba) Funkcja zwraca logarytm dziesiętny z liczby — patrz: rysunek 13.34. Rysunek 13.34. O[USN 5'.'%6 .1) Funkcja LOG10 ^ .1) ^ ^ ^ TQY KP UGV UGE MOD(liczba, liczba) Funkcja zwraca resztę z dzielenia, podobnie jak operator — patrz: rysunek 12.35. Rysunek 12.35. O[USN 5'.'%6 /1 Funkcja MOD ^ /1 ^ ^ ^ TQY KP UGV UGE
  • 26. Rozdział 12. n Funkcje wewnętrzne 151 PI() Funkcja zwraca kilka pierwszych cyfr liczby π — patrz: rysunek 12.36. Wewnętrznie MySQL przechowuje pełną, podwójnej precyzji wartość π. Rysunek 12.36. O[USN 5'.'%6 2+ Funkcja PI ^ 2+ ^ ^ ^ TQY KP UGV UGE POW(liczba, liczba) Funkcja zwraca pierwszą liczbę podniesioną do potęgi liczby drugiej — patrz: rysunek 12.37. Rysunek 12.37. O[USN 5'.'%6 219 Funkcja POW ^ 219 ^ ^ ^ TQY KP UGV UGE POWER(liczba, liczba) Jest to alias funkcji 219. RADIANS(liczba) Funkcja zamienia stopnie na radiany — patrz: rysunek 12.38. Rysunek 12.38. O[USN 5'.'%6 4#+#05 Funkcja RADIANS ^ 4#+#05 ^ ^ ^ TQY KP UGV UGE
  • 27. 152 Część II n Encyklopedia MySQL RAND([zarodek]) Funkcja zwraca liczbę pseudolosową z zakresu od 0 do 1. Zarodka nale y u ywać, aby roz- począć generowanie liczb pseudolosowych od określonego punktu w sekwencji. Je eli nie podamy zarodka, MySQL u yje jako zarodka dla generatora liczb pseudolosowych wartość pobraną z zegara systemowego — patrz: rysunek 12.39. Rysunek 12.39. O[USN 5'.'%6 4#0 Funkcja RAND ^ 4#0 ^ ^ ^ TQY KP UGV UGE ROUND(liczba[, dokładność]) Funkcja zaokrągla liczbę zmiennoprzecinkową do całkowitej lub opcjonalnie do podanej liczby cyfr po przecinku — patrz: rysunek 12.40. Rysunek 12.40. O[USN 5'.'%6 4170 Funkcja ROUND ^ 4170 ^ ^ ^ TQY KP UGV UGE SIGN(liczba) Funkcja zwraca –1, je eli liczba jest ujemna, lub 1, je eli jest dodatnia — patrz: rysunek 12.41. Rysunek 12.41. O[USN 5'.'%6 5+)0 Funkcja SIGN ^ 5+)0 ^ ^ ^ TQY KP UGV UGE SIN(liczba) Funkcja zwraca sinus z liczby — patrz: rysunek 12.42.
  • 28. Rozdział 12. n Funkcje wewnętrzne 153 Rysunek 12.42. O[USN 5'.'%6 5+0 Funkcja SIN ^ 5+0 ^ ^ ^ TQY KP UGV UGE SQRT(liczba) Funkcja zwraca pierwiastek kwadratowy z liczby — patrz: rysunek 12.43. Rysunek 12.43. O[USN 5'.'%6 5346 Funkcja SQRT ^ 5346 ^ ^ ^ TQY KP UGV UGE TAN(liczba) Funkcja zwraca tangens z kąta wyra onego w radianach — patrz: rysunek 12.44. Rysunek 12.44. O[USN 5'.'%6 6#0 Funkcja TAN ^ 6#0 ^ ^ ^ TQY KP UGV UGE TRUNCATE(liczba, dokładność) Funkcja skraca część ułamkową liczby do podanej dokładności — patrz: rysunek 12.45. Rysunek 12.45. O[USN 5'.'%6 6470%#6' Funkcja TRUNCATE ^ 6470%#6' ^ ^ ^ TQY KP UGV UGE
  • 29. 154 Część II n Encyklopedia MySQL Łańcuchy Opisane tu funkcje wykonują operacje na łańcuchach i zwracają łańcuchy. Jak pamiętamy, MySQL udostępnia operatory do porównywania łańcuchów, w tym .+-' i 4')':2. ASCII(znak) Funkcja zwraca kod ASCII pierwszego znaku w danym łańcuchu — patrz: rysunek 12.46. Rysunek 12.46. O[USN 5'.'%6 #5%++ C Funkcja ASCII ^ #5%++ C ^ ^ ^ TQY KP UGV UGE BIN(liczba_całk) Funkcja zwraca reprezentację binarną podanej liczby całkowitej — patrz: rysunek 12.47. Rysunek 12.47. O[USN 5'.'%6 $+0 Funkcja BIN ^ $+0 ^ ^ ^ TQY KP UGV UGE BINARY łańcuch Słowo kluczowe $+0#4; sprawia, e dany łańcuch jest traktowany jako binarny, co oznacza, e wielkość liter ma znaczenie przy porównaniach. Słowo $+0#4; ma wy szy priorytet ni ope- ratory porównania (wykonywane jest przed nimi). Rysunek 12.48 ilustruje zjawisko rozró nia- nia du ych i małych liter w łańcuchach binarnych i nierozró niania w łańcuchach normalnych. Rysunek 12.48. O[USN 5'.'%6 C # $+0#4; C # Słowo kluczowe BINARY ^ C # ^ $+0#4; C # ^ ^ ^ ^ TQY KP UGV UGE
  • 30. Rozdział 12. n Funkcje wewnętrzne 155 CHAR(…) Funkcja zwraca łańcuch podany jako lista kodów ASCII — patrz: rysunek 12.49. Rysunek 12.49. O[USN 5'.'%6 %*#4 Funkcja CHAR ^ %*#4 ^ ^ CDE ^ TQY KP UGV UGE CHARACTER_LENGHT(łańcuch) Jest to alias funkcji %*#4A.'0)*6. CHAR_LENGTH(łańcuch) Funkcja zwraca liczbę znaków w łańcuchu— patrz: rysunek 12.50. Znaki wielobajtowe są liczone jako jeden znak. Rysunek 12.50. O[USN 5'.'%6 %*#4A.'0)6* /[53. Funkcja CHAR_LENGTH ^ %*#4A.'0)6* /[53. ^ ^ ^ TQY KP UGV UGE CONCAT(…) Funkcja dokonuje połączenia łańcuchów podanych w liście — patrz: rysunek 12.51. Je eli którykolwiek z podanych elementów ma wartość PWNN, zwracane jest równie PWNN. Rysunek 12.51. O[USN 5'.'%6 %10%#6 C D E Funkcja CONCAT ^ %10%#6 C D E ^ ^ CDE ^ TQY KP UGV UGE
  • 31. 156 Część II n Encyklopedia MySQL CONCAT_WS(separator, …) Funkcja dokonuje połączenia łańcuchów, rozdzielając je separatorem — patrz: rysunek 12.52. W odró nieniu od funkcji %10%#6 wartość PWNN jest tu ignorowana. Separator o wartości PWNN powoduje, e funkcja zwraca PWNN. Rysunek 12.52. O[USN 5'.'%6 %10%#6A95 C D E Funkcja CONCAT_WS ^ %10%#6A95 C D E ^ ^ C D E ^ TQY KP UGV UGE CONV(liczba_całk, z_podstawy, do_podstawy) Funkcja dokonuje konwersji liczby całkowitej z jednego systemu liczenia na inny. Funkcja ta mo e zastępować funkcje $+0, *': i 1%6. Na rysunku 12.53 przedstawiono konwersję liczby ósemkowej na dziesiętną. Rysunek 12.53. O[USN 5'.'%6 %108 Funkcja CONV ^ %108 ^ ^ ^ TQY KP UGV UGE DECODE(tekst_zaszyfrowany, hasło) Funkcja odszyfrowuje łańcuch zaszyfrowany za pomocą funkcji '0%1' — patrz: rysunek 12.54. Rysunek 12.54. O[USN 5'.'%6 '%1' '0%1' /[53. JCU Q JCU Q Funkcja DECODE ^ '%1' '0%1' /[53. JCU Q JCU Q ^ ^ /[53. ^ TQY KP UGV UGE ELT(element, …) Funkcja zwraca element o indeksie wskazanym przez pierwszy argument — patrz: rysunek 12.55. Pierwszy element ma numer 1.
  • 32. Rozdział 12. n Funkcje wewnętrzne 157 Rysunek 12.55. O[USN 5'.'%6 '.6 C D E F Funkcja ELT ^ '.6 C D E F ^ ^ E ^ TQY KP UGV UGE ENCODE(tekst, hasło) Funkcja zwraca łańcuch zaszyfrowany za pomocą podanego hasła. Zwrócony łańcuch jest łańcuchem binarnym o tej samej długości, co pierwotny tekst. Łańcuch mo na odszyfrować za pomocą funkcji '%1'. Funkcji tej nie nale y stosować dla kolumny 2CUUYQTF w tabeli uprawnień (ang. grant table) MySQL. Do tego celu słu y funkcja 2#55914. Rysunek 12.56 prezentuje zastosowanie '0%1' do ukrycia pól zawierających hasła w aplikacji. Rysunek 12.56. O[USN 72#6' W[VMQYPKM Funkcja 5'6 JCUNQ '0%1' UGMTGV JCU Q ENCODE 9*'4' .R 3WGT[ 1M TQY CHHGEVGF UGE 4QYU OCVEJGF %JCPIGF 9CTPKPIU ENCRYPT(łańcuch[, domieszka]) Funkcja odbudowuje funkcję ET[RV języka C — patrz: rysunek 12.57. Jest to szyfrowanie nieodwracalne. Drugi argument mo e być dwuznakowym łańcuchem poprawiającym loso- wość szyfrowania. Dłu sze łańcuchy są skracane. Funkcja ta nie jest kompatybilna z funkcją 2#55914 i ka dy system operacyjny mo e mieć odmienną implementację ET[RV (w bazach MySQL instalowanych w systemach Windows funkcja mo e zwracać wartość NULL). Rysunek 12.57. O[USN 5'.'%6 '0%4;26 JCU Q CD Funkcja ENCRYPT ^ '0%4;26 JCUNQ CD ^ ^ CD,PIIZJ$[9+ ^ TQY KP UGV UGE EXPORT_SET(pole_bitowe, opis_włączonej, opis_wyłączonej[, separator[,liczba_bitów]]) Funkcja zwraca łańcuch opcji odpowiadający bitom pierwszego argumentu. Bity, skonwer- towane kolejno od najmłodszego do najstarszego, budują łańcuch od lewej do prawej. Drugi i trzeci argument to ciągi tekstowe reprezentujące odpowiednio włączone i wyłączone bity.
  • 33. 158 Część II n Encyklopedia MySQL Domyślnym separatorem jest przecinek, ale mo e być nim dowolny łańcuch. Domyślnie u ywane są wszystkie 64 bity reprezentacji liczby całkowitej, ale mo na to ograniczyć za pomocą piątego argumentu. Na rysunku 12.58 znaczniki T i N są rozdzielane pionową kreską. Ukazano 8 pól (bitów) — pola aktywne definiuje liczba 9 (dwójkowo 1001). Rysunek 12.58. O[USN 5'.'%6 ':2146A5'6 6 0 ^ Funkcja EXPORT_SET ^ ':2146A5'6 6 0 ^ ^ ^ 6^0^0^6^0^0^0^0 ^ TQY KP UGV UGE FIELD(element, …) Funkcja zwraca indeks pierwszego argumentu w obrębie listy, która po nim następuje — patrz: rysunek 12.59. Elementy listy są indeksowane od 1. Je eli szukany ciąg nie zostanie odnaleziony, na liście zwracane jest 0. Rysunek 12.59. O[USN 5'.'%6 (+'. D C D E F Funkcja FIELD ^ (+'. D C D E F ^ ^ ^ TQY KP UGV UGE FIND_IN_SET(łańcuch, lista) Funkcja zwraca indeks elementu listy łańcuchowej — listy elementów oddzielonych prze- cinkami, będącej łańcuchem (patrz: rysunek 12.60). Elementy listy są numerowane od 1. Rysunek 12.60. O[USN 5'.'%6 (+0A+0A5'6 E CDEF Funkcja FIND_IN_SET ^ (+0A+0A5'6 E CDEF ^ ^ ^ TQY KP UGV UGE FORMAT(liczba, dokładność) Funkcja zwraca liczbę zmiennoprzecinkową z przecinkami wstawionymi co trzy potęgi liczby 10 i z podaną liczbą cyfr w części ułamkowej — patrz: rysunek 12.61.
  • 34. Rozdział 12. n Funkcje wewnętrzne 159 Rysunek 12.61. O[USN 5'.'%6 (14/#6 Funkcja FORMAT ^ (14/#6 ^ ^ ^ TQY KP UGV UGE HEX(liczba_całk) Funkcja zwraca szesnastkową reprezentację liczby całkowitej — patrz: rysunek 12.62. Rysunek 12.62. O[USN 5'.'%6 *': Funkcja HEX ^ *': ^ ^ #( ^ TQY KP UGV UGE INET_ATON(adres) Funkcja konwertuje adres internetowy zapisany jako łańcuch do postaci numerycznej. Adresy cztero- i ośmiobitowe są akceptowane — patrz: rysunek 12.63. Rysunek 12.63. O[USN 5'.'%6 +0'6A#610 Funkcja INET_ATON ^ +0'6A#610 ^ ^ ^ TQY KP UGV UGE INET_NTOA(adres) Funkcja zwraca łańcuchową reprezentację numerycznego adresu internetowego — patrz: rysunek 12.64. Rysunek 12.64. O[USN 5'.'%6 +0'6A061# Funkcja INET_NTOA ^ +0'6A061# ^ ^ ^ TQY KP UGV UGE
  • 35. 160 Część II n Encyklopedia MySQL INSERT(ciąg, pozycja, długość, podciąg) Funkcja wstawia łańcuch, opcjonalnie nadpisując istniejący podciąg. Drugi argument wska- zuje znak, a trzeci określa, ile znaków usunąć od wskazanego znaku przed wstawieniem łańcucha. Rysunek 12.65 ilustruje wstawienie ciągu ABC w pozycji 3 z nadpisaniem jednego znaku. Rysunek 12.65. O[USN 5'.'%6 +05'46 CDEFGHI #$% Funkcja INSERT ^ +05'46 CDEFGHI #$% ^ ^ CD#$%FGHI ^ TQY KP UGV UGE INSTR(ciąg, podciąg) Funkcja zwraca wskaźnik do pierwszego wystąpienia podciągu w danym ciągu — patrz: rysunek 12.66. Rysunek 12.66. O[USN 5'.'%6 +0564 UCOQNQV NQV Funkcja INSTR ^ +0564 UCOQNQV NQV ^ ^ ^ TQY KP UGV UGE LCASE(ciąg) Funkcja zwraca łańcuch z wielkimi literami zamienionymi na małe — patrz: rysunek 12.67. Aliasem jest .19'4. Rysunek 12.67. O[USN 5'.'%6 .%#5' #D%F Funkcja LCASE ^ .%#5' #D%F ^ ^ CDEF ^ TQY KP UGV UGE LEFT(ciąg, długość) Funkcja zwraca podciąg z danego ciągu o podanej długości — patrz: rysunek 12.68.
  • 36. Rozdział 12. n Funkcje wewnętrzne 161 Rysunek 12.68. O[USN 5'.'%6 .'(6 CDEFGH Funkcja LEFT ^ .'(6 CDEFGH ^ ^ CDE ^ TQY KP UGV UGE LENGTH(ciąg) Funkcja zwraca liczbę bajtów dla danego ciągu — patrz: rysunek 12.69. Znaki dwubajtowe są interpretowane przez tę funkcję jako 2. Aby odnaleźć liczbę znaków w ciągach zawie- rających znaki wielobajtowe, nale y zastosować funkcję %*#4A.'0)6*. Aliasem .'0)*6 jest 1%6'6A.'0)*6. Rysunek 12.69. O[USN 5'.'%6 .'0)6* CDE Funkcja LENGTH ^ .'0)6* CDE ^ ^ ^ TQY KP UGV UGE LOAD_FILE(nazwa) Funkcja zwraca zawartość pliku znajdującego się w systemie plików serwera. U ytkownik musi mieć uprawnienia do otwarcia tego pliku w obrębie MySQL, a sam plik musi być udo- stęniony do odczytu wszystkim u ytkownikom systemu. Na rysunku 12.70 przedstawiono ładowanie treści wiadomości z forum do tabeli przechowującej wiadomości. Rysunek 12.70. O[USN 72#6' YKCFQOQUEK Funkcja 5'6 VTGUE.1#A(+.' JQOGHQTWOVZV LOAD_FILE 9*'4' .R LOCATE(podciąg, ciąg[, pozycja]) Funkcja zwraca miejsce pierwszego wystąpienia podciągu w drugim argumencie — patrz: rysunek 12.71. Opcjonalnie wyszukiwanie mo na rozpocząć od określonej pozycji. Rysunek 12.71. O[USN 5'.'%6 .1%#6' D CDECDE Funkcja LOCATE ^ .1%#6' D CDECDE ^ ^ ^ TQY KP UGV UGE