IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TRE CI   MySQL
           KATALOG KSI¥¯EK           ...
Spis treści
  Wstęp..........................................................................................................
4        MySQL

         Operacje relacyjne..................................................................................
Spis treści               5


Rozdział 11. Typy kolumn i indeksów ...........................................................
6       MySQL

        Restore Table ........................................................................................
Spis treści               7

       pack_isam ...............................................................................
8        MySQL


    Rozdział 22. API MySQL++................................................................................
Spis treści               9


  Rozdział 29. Rozproszone bazy danych ........................................................
Funkcje wewnętrzne
W tym rozdziale:
  n   Diagnostyka i konfiguracja
  n   Sterowanie przebiegiem egzekucji
  n   Grupowan...
136   Część II n Encyklopedia MySQL

      Wielokropek () oznacza, e funkcja pobiera listę wartości oddzielonych przecinka...
Rozdział 12. n Funkcje wewnętrzne      137


DATABASE()
       Funkcja zwraca nazwę domyślnej bazy danych. Je eli nie zost...
138    Część II n Encyklopedia MySQL


SESSION_USER()
       Jest to alias funkcji 75'4.


SYSTEM_USER()
       Jest to al...
Rozdział 12. n Funkcje wewnętrzne    139


CASE wartość_testowa WHEN przypadek1 THEN
wartość_zwracana1 [WHEN przypadek2 TH...
140    Część II n Encyklopedia MySQL


Rysunek 12.8.          O[USN 5'.'%6 .R %#5'
Instrukcja                        9*'0 ...
Rozdział 12. n Funkcje wewnętrzne     141


IF(wartość_testowa, wartość_prawda, wartość_fałsz)
       Funkcja zwraca jedną...
142    Część II n Encyklopedia MySQL

       jest od razu wartość PWNN. Je eli serwer podrzędny nie został jeszcze uruchom...
Rozdział 12. n Funkcje wewnętrzne   143


Rysunek 12.13.         O[USN %4'#6' 6#$.' VGUVITWR 

Przykład                   ...
144    Część II n Encyklopedia MySQL


BIT_OR(kolumna)
       Funkcja wykonuje na grupie bitową operację OR i zwraca dzies...
)
       do sprawdzenia liczby wierszy niezale nie od tego, czy mają wartość PWNN. Na rysunku 12.16
       za ka dym razem...
Rozdział 12. n Funkcje wewnętrzne   145

       mogą nie być poprawnie sortowane, chyba e stanowią część kolumny ;'#4. Kon...
146    Część II n Encyklopedia MySQL


Rysunek 12.19.         O[USN 5'.'%6 TW[PC 57/
9[PKM
Funkcja SUM                 (41...
Rozdział 12. n Funkcje wewnętrzne     147


ASIN(liczba)
       Funkcja zwraca arcus sinus z liczby. Arcus sinus z liczb w...
148    Część II n Encyklopedia MySQL


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

Funkcja                

CEILING      ...
Rozdział 12. n Funkcje wewnętrzne      149


EXP(liczba)
       Funkcja zwraca podstawę logarytmu naturalnego (e) podniesi...
150    Część II n Encyklopedia MySQL


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

Funkcja LEAST          

               ...
Rozdział 12. n Funkcje wewnętrzne      151


PI()
       Funkcja zwraca kilka pierwszych cyfr liczby π — patrz: rysunek 12...
152    Część II n Encyklopedia MySQL


RAND([zarodek])
       Funkcja zwraca liczbę pseudolosową z zakresu od 0 do 1. Zaro...
Rozdział 12. n Funkcje wewnętrzne     153


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

Funkcja SIN            

            ...
154    Część II n Encyklopedia MySQL



Łańcuchy
       Opisane tu funkcje wykonują operacje na łańcuchach i zwracają łańc...
Rozdział 12. n Funkcje wewnętrzne   155


CHAR(…)
       Funkcja zwraca łańcuch podany jako lista kodów ASCII — patrz: rys...
156    Część II n Encyklopedia MySQL


CONCAT_WS(separator, …)
       Funkcja dokonuje połączenia łańcuchów, rozdzielając ...
Rozdział 12. n Funkcje wewnętrzne    157


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

 ...
158    Część II n Encyklopedia MySQL

       Domyślnym separatorem jest przecinek, ale mo e być nim dowolny łańcuch. Domyś...
Rozdział 12. n Funkcje wewnętrzne     159


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

FORMAT  ...
160    Część II n Encyklopedia MySQL


INSERT(ciąg, pozycja, długość, podciąg)
       Funkcja wstawia łańcuch, opcjonalnie...
Rozdział 12. n Funkcje wewnętrzne   161


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

LEFT...
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
MySQL
Upcoming SlideShare
Loading in …5
×

MySQL

1,056 views
1,006 views

Published on

Przewodnik zaawansowanego programisty

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

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

W książce opisano między innymi:

* Instalację i korzystanie z MySQL-a -- wraz ze szczegółowym opisem
implementacji SQL w MySQL-u
* Typy danych, zmienne, funkcje wbudowane i narzędzia dostępne z linii
komend
* API MySQL w języku C
* Administrację bazami MySQL, wykonywanie kopii zapasowych i usuwanie
skutków awarii
* Optymalizację i zabezpieczanie aplikacji
* Tworzenie rozproszonych baz danych
* Rozszerzanie funkcjonalności MySQL-a
* Tworzenie baz danych przenośnych na inne platformy

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

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

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

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,056
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

MySQL

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

×