Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
MySQL
Autor: Leon Atkinson
Tumaczenie: Jarosaw Dobrzaski, Tomasz mijewski
ISBN: 83-7361-170-3
Tytu oryginau: Core MySQL
Format: B5, stron: 608
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Leon Atkinson jest autorem ksiki PHP. Programowanie. Jest te inicjatorem projektu
FreeTrade: zestawu narzdzi open source wykorzystujcego MySQL i PHP. Atkinson
od 1997 roku uywa MySQL w wielu aplikacjach sieciowych i e-commerce.
Spis treci
Wstp............................................................................................................................................................11
13
MySQL
Operacje relacyjne......................................................................................................... 56
Czy MySQL to prawdziwy system RDMBS? ...................................................................... 62
Cz II Encyklopedia MySQL
109
Spis treci
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
Spis treci
361
MySQL
Rozdzia 22. API MySQL++.......................................................................................................................403
Przygotowanie programu .............................................................................................. 403
Pobieranie danych....................................................................................................... 404
Przetwarzanie danych .................................................................................................. 406
Cz IV Zagadnienia zaawansowane
409
Spis treci
Dodatki
525
Skorowidz ................................................................................................................................................579
Funkcje wewntrzne
W tym rozdziale:
n
Diagnostyka i konfiguracja
Grupowanie
Funkcje matematyczne
acuchy
Czas
Pozostae funkcje
Procedury
136
Cz II n Encyklopedia MySQL
Wielokropek () oznacza, e funkcja pobiera list wartoci oddzielonych przecinkami.
Wszystko, co umieszczone zostao w nawiasach kwadratowych, jest opcjonalne. Niektre
funkcje maj kilka poziomw parametrw opcjonalnych.
Jak pamitamy, wartoci wikszoci wyrae, ktre zawieraj warto , bdzie rwnie warto . Dotyczy to rwnie wywoa funkcji. Na przykad konkatenacja wartoci
z dowolnym acuchem daje .
Diagnostyka i konfiguracja
Opisane tu funkcje zwracaj informacje o serwerze i pomagaj w diagnostyce.
BENCHMARK(rundy, warto)
Funkcja oblicza warto wyraenia tyle razy, na ile wskazuje pierwszy argument. Zwraca
zawsze zero, ale uywajc klienta , mona sprawdzi, ile czasu zajo jej wykonanie.
Rysunek 12.1 pokazuje, ile czasu zabiera MySQL przeprowadzenie 100 000 wywoa funkcji
.
Rysunek 12.1.
Funkcja
BENCHMARK
!
"####################################"
$
$
"####################################"
$$
"####################################"
%&'()*+,
Naley pamita, e zgoszony czas to czas wykonania wywoania, a nie czas korzystania
z procesora. Tok na serwerze lub w sieci moe znaczco spowolni czas egzekucji.
CONNECTION_ID()
Funkcja zwraca identyfikator poczenia dla poczenia biecego patrz: rysunek 12.2.
Rysunek 12.2.
Funkcja
CONNECTION_ID
-.- !
"#################"
$ -.- $
"#################"
$$
"#################"
%&'(),
137
DATABASE()
Funkcja zwraca nazw domylnej bazy danych. Jeeli nie zostaa wybrana adna domylna
baza danych, zwracana jest warto null patrz: rysunek 12.3.
Rysunek 12.3.
Funkcja
DATABASE
!
"############"
$
$
"############"
$(($
"############"
%&'(),
LAST_INSERT_ID([klucz_gwny])
MySQL dla kadego poczenia przechowuje warto ostatnio uytego klucza gwnego.
Funkcja
zwraca t warto. Jeeli przelemy jej argument, warto zostanie
zgodnie z nim ustawiona.
Istniej dwa sposoby uycia tej funkcji. Najczciej stosowany dotyczy kolumn
.
Jeeli kolumnie nadana zostaa warto w wyniku automatycznej inkrementacji, to funkcji
przypisana zostaje wanie ta warto. Z kolei automatycznie inkrementowana
kolumna, ktrej nadamy warto rcznie zamiast podawania zera lub , nie spowoduje
stosownej aktualizacji wartoci zwracanej przez
. Rysunek 12.4 przedstawia,
jak zmienia si warto
po wstawieniu wiersza z wartoci dla kolumny automatycznie inkrementowanej.
Rysunek 12.4.
Funkcja
LAST_INSERT_ID
.- .- !
"##################"
$/(.'%(.'0 $
"##################"
$$
"##################"
%&'(),
- -1%023(4
056)7+(%891/3
* !
:2%%&/;;,(0),
.- .- !
"##################"
$/(.'%(.'0 $
"##################"
$+$
"##################"
%&'(),
138
Cz II n Encyklopedia MySQL
SESSION_USER()
Jest to alias funkcji .
SYSTEM_USER()
Jest to alias funkcji .
USER()
Funkcja zwraca nazw uytkownika, ktry zainicjowa sesj, wraz z domen komputera,
z ktrego nastpuje poczenie patrz: rysunek 12.5.
Rysunek 12.5.
Funkcja
USER
!
"################"
$ $
"################"
$
<,/=($
"################"
%&'(),
VERSION()
Funkcja zwraca numer wersji serwera MySQL patrz: rysunek 12.6.
Rysunek 12.6.
Funkcja
VERSION
4 - !
"###########"
$4 - $
"###########"
$>))*#($
"###########"
%&'()*,
139
1
1
#? @0
#? * &/
#
-/&/%(AB
# C2(/(0C'/5/'/
#D1%023(!
"####"#########################"
$
1$C2(/(0C'/5/'/ $
"####"#########################"
$$@0$
$*$&/$
$6$-/&/%(AB$
$>$-/&/%(AB$
$+$-/&/%(AB$
"####"#########################"
+%&'(),
GET_LOCK(nazwa, limit_czasu)
Przez okrelony czas mierzony w sekundach funkcja stara si uzyska dostp do
blokady o podanej nazwie. Wywoanie zakoczy si dopiero z chwil upynicia zadanego
czasu lub uzyskania dostpu do blokady.
140
Cz II n Encyklopedia MySQL
Rysunek 12.8.
Instrukcja
CASE WHEN
1
#?
1E6 F?
1*
#?
1G>
1
#
/C&/
# C2(/(0C'/5/'/
#D1%023(!
"####"##########################"
$
1$C2(/(0C'/5/'/ $
"####"##########################"
$$)$
$*$>)$
$6$C,C(3/$
$>$>$
$+$05$
"####"##########################"
+%&'(),
Jedno poczenie moe utrzymywa tylko jedn blokad naraz. Wywoanie uwalnia
blokad utrzymywan dotychczas, ale dobrym nawykiem jest uywanie z chwil, gdy blokada nie jest ju potrzebna. Blokada jest zwalniana rwnie w chwili przerwania
poczenia.
Fakt utrzymywania blokady nie stwarza adnych ogranicze dla innych pocze ani nie daje
adnych korzyci dla poczenia j utrzymujcego. Blokad mona jednak uywa w powizaniu, implementujc w ten sposb dowolny poziom blokowania. Zastosowanie do
implementacji powizanego blokowania wierszy zostao opisane w rozdziale 9. Prosty przykad przedstawiono na rysunku 12.9.
Rysunek 12.9.
Funkcja
GET_LOCK
H .
1%023()
1G6I !
"###############################"
$H .
1%023()
1G6I $
"###############################"
$$
"###############################"
%&'(),
F 1%023( /G6)+?
1G6!
:2%%&/;;,(0),
&/(,=0J=/K0J?/%'KJ
.
1%023()
1G6 !
"###############################"
$
.
1%023()
1G6 $
"###############################"
$$
"###############################"
%&'(),
141
-DLD? ? 'I7 &300C'M(K0'/ !
"################################################################"
$-DLD? ? 'I7 &300C'M(K0'/ $
"################################################################"
$0C'M(K0'/$
"################################################################"
%&'(),
IFNULL(warto_testowa, warto_zwracana)
Funkcja zwraca warto testow, jeeli jest ona niepusta w innym przypadku zwracany
jest drugi argument. Przykad przedstawiony na rysunku 12.11 pokazuje, jak mona za pomoc
instrukcji
zamienia wartoci stosownymi opisami.
Rysunek 12.11.
Funkcja
IFNULL
/C&/
#-D
MASTER_POS_WAIT(nazwa, pozycja)
Funkcja oczekuje, a serwer podrzdny dogoni serwer nadrzdny w obrbie rodowiska
replikacyjnego. Wymagane jest podanie nazwy pliku dziennika i pozycji w dzienniku, ktr
serwer podrzdny musi osign. Jeeli serwer nie jest serwerem nadrzdnym, zwracana
142
Cz II n Encyklopedia MySQL
jest od razu warto . Jeeli serwer podrzdny nie zosta jeszcze uruchomiony, funkcja
bdzie trwaa w zablokowaniu, oczekujc na uruchomienie serwera i jego dotarcie do okrelonej pozycji w dzienniku.
Funkcja zwraca liczb przerobionych w czasie oczekiwania zdarze w dzienniku. Wicej
informacji na temat replikacji znajduje si w rozdziale 29. Rozproszone bazy danych.
NULLIF(warto_testowa1, warto_testowa2)
Funkcja zwraca , jeeli obydwie wartoci testowe s rwne. W innym przypadku zwraca
pierwsz warto testow. Funkcja ta przydaje si do zamiany wartoci zerowych na ,
co ilustruje rysunek 12.12.
Rysunek 12.12.
Funkcja
NULLIF
/C&/
-D/K/C /K/C
#D1%023(!
"#############"#########"
$/C&/$/K/C$
"#############"#########"
$C,C(,C3/$
$
$H%CN'M$
$
$C,C(3/$
$
$F/(/$
$
$05$*$
"#############"#########"
+%&'(),
RELEASE_LOCK(nazwa)
Funkcja zwalnia blokad wskazan argumentem , uzyskan wczeniej za pomoc
funkcji . Jeeli wskazana blokada nie jest utrzymywana, zwracana jest warto
. Przykad zastosowania znajduje si w opisie funkcji .
Grupowanie
Opisane tu funkcje dziaaj na kilku wartociach w kolumnie. Jeeli nie podano klauzuli
, wwczas obejmuj swoim dziaaniem wszystkie wiersze. Na potrzeby przykadw
tu przedstawionych stworzona zostaa nowa definicja tabeli, ktr przedstawia rysunek 12.13.
Kolumny z wartoci s pomijane w obliczeniach, dokonywanych przez te funkcje.
Uycie w wyraeniu zawsze spowoduje zwrcenie , ale funkcja grupujca zastosowana na kolumnie zawierajcej nie powoduje tego efektu jest wwczas
ignorowane.
143
((K%21
#
1-
.-
#%2C/4I
#?'3-
#F-L L
1
# !
:2%%&/;;,(0),
- -((K%21%2C/?'3 4
#C%&'
#C%&'>+
#C%&'OP
#C%&'O
#C%&'
#C%&'67
#C%&'7
#C%&'7+
#'N',*6
#'N',O
#'N',P
#'N',I6
#'N',++
#'N',PO
#'N',I>
#'N',+ !
:2%I%&/;;,(0),
,%0JI21',/(J?/%'KJ
AVG(kolumna)
Funkcja zwraca redni arytmetyczn wynikw z grupy. Jest ona definiowana jako suma
wszystkich wartoci w grupie podzielona przez ich liczb. Rysunek 12.14 prezentuje rednie
wyniki kadej druyny.
Rysunek 12.14.
Funkcja AVG
%2C/4H?'3
#D((K%21
#HF
L%2C/!
"###########"############"
$%2C/$4H?'3 $
"###########"############"
$C%&'$6O)*+$
$'N',$+P)7+$
"###########"############"
*%&'(),
BIT_AND(kolumna)
Funkcja wykonuje na grupie bitow operacj AND i zwraca dziesitn liczb cakowit
patrz: rysunek 12.15.
144
Cz II n Encyklopedia MySQL
BIT_OR(kolumna)
Funkcja wykonuje na grupie bitow operacj OR i zwraca dziesitn liczb cakowit. Rysunek 12.15 ukazuje, e nie ma bitw, ktre byyby ustawione we wszystkich wynikach,
ale pierwszych siedem jest ustawionych w co najmniej jednym wyniku.
Rysunek 12.15.
Funkcja
BIT_OR
%2C/
-.?'3
-.?'3
#D((K%21
#HF
L%2C/!
"###########"################"###############"
$%2C/$
-.?'3 $
-.?'3 $
"###########"################"###############"
$C%&'$$*7$
$'N',$$*7$
"###########"################"###############"
*%&'(),
COUNT(kolumna)
Funkcja zwraca liczb niepustych elementw w grupie. Mona te zastosowa znak gwiazdki ()
do sprawdzenia liczby wierszy niezalenie od tego, czy maj warto . Na rysunku 12.16
za kadym razem widzimy 8 wynikw. W druynie Czerwonych dwukrotnie pojawi si
wynik 11, wic liczba niepowtarzalnych wynikw wynosi dla niej 7.
Rysunek 12.16.
Funkcja
COUNT
%2C/?'3 --?'3
#D((K%21
#HF
L%2C/!
"###########"##############"#######################"
$%2C/$?'3 $--?'3 $
"###########"##############"#######################"
$C%&'$P$7$
$'N',$P$P$
"###########"##############"#######################"
*%&'(),
COUNT([DISTINCT] )
Ta forma funkcji
zwraca liczb niepowtarzalnych kombinacji wartoci kolumn podanych jako argumenty patrz: rysunek 12.16.
MAX()
Funkcja zwraca najwiksz warto w grupie. Maksymalna warto acuchowa jest definiowana jako ta, ktra wystpuje ostatnia w kolejnoci alfabetycznej. Poniewa daty mona
porzdkowa, maksymalna data to ostatnia w kolejnoci. Dwucyfrowe oznaczenia roku
145
%2C/-?'3 ?'3
#D((K%21
#HF
L%2C/!
"###########"############"############"
$%2C/$-?'3 $?'3 $
"###########"############"############"
$C%&'$$OP$
$'N',$+$O$
"###########"############"############"
*%&'(),
MIN()
Funkcja zwraca najmniejsz warto w grupie. Minimalna warto acuchowa to ta, ktra
wystpuje pierwsza w kolejnoci alfabetycznej (patrz: rysunek 12.17).
STD()
Funkcja zwraca odchylenie standardowe dla grupy patrz: rysunek 12.18.
Rysunek 12.18.
Funkcja STD
%2C/?'3
#D((K%21
#HF
L%2C/!
"###########"############"
$%2C/$?'3 $
"###########"############"
$C%&'$6)>6$
$'N',$*P)7O+I$
"###########"############"
*%&'(),
STDDEV()
Jest to alias funkcji .
SUM()
Funkcja zwraca sum elementw grupy. acuchy i daty s przeksztacane na liczby cakowite patrz: rysunek 12.19.
146
Cz II n Encyklopedia MySQL
Rysunek 12.19.
Funkcja SUM
%2C/?'3
#D((K%21
#HF
L%2C/!
"###########"############"
$%2C/$?'3 $
"###########"############"
$C%&'$66$
$'N',$>7$
"###########"############"
*%&'(),
Funkcje matematyczne
Opisane tu funkcje wykonuj operacje matematyczne. Wikszo z nich pobiera i zwraca liczby
zmiennoprzecinkowe.
ABS(liczba)
Funkcja zwraca warto bezwzgldn z liczby patrz: rysunek 12.20.
Rysunek 12.20.
Funkcja ABS
#7 !
"##########"
$
#7 $
"##########"
$7$
"##########"
%&'(),
ACOS(liczba)
Funkcja zwraca arcus cosinus z liczby. Arcus cosinus z liczb wikszych od 1 lub mniejszych
od 0 jest nieokrelony patrz: rysunek 12.21.
Rysunek 12.21.
Funkcja ACOS
!
"##########"
$ $
"##########"
$)$
"##########"
%&'(),
147
ASIN(liczba)
Funkcja zwraca arcus sinus z liczby. Arcus sinus z liczb wikszych od 1 lub mniejszych od 0
jest nieokrelony patrz: rysunek 12.22.
Rysunek 12.22.
Funkcja ASIN
- !
"##########"
$- $
"##########"
$)+77OI$
"##########"
%&'(),
ATAN(liczba)
Funkcja zwraca arcus tangens z liczby patrz: rysunek 12.23.
Rysunek 12.23.
Funkcja ATAN
!
"##########"
$ $
"##########"
$)7P+6OP$
"##########"
%&'(),
ATAN2(liczba, liczba)
Funkcja zwraca kt midzy odcinkiem czcym dany punkt z pocztkiem ukadu wsprzdnych a osi x, wyraony w radianach patrz: rysunek 12.24.
Rysunek 12.24.
Funkcja ATAN2
*67 !
"############"
$*67 $
"############"
$)>>PO*$
"############"
%&'(),
CEILING(liczba)
Funkcja zaokrgla liczb zmiennoprzecinkow do najbliszej wikszej liczby cakowitej
patrz: rysunek 12.25.
148
Cz II n Encyklopedia MySQL
Rysunek 12.25.
Funkcja
CEILING
-
-H)6 !
"##############"
$ -
-H)6 $
"##############"
$*$
"##############"
%&'(),
COS(liczba)
Funkcja zwraca cosinus z liczby wyraony w radianach patrz: rysunek 12.26.
Rysunek 12.26.
Funkcja COS
!
"##########"
$ $
"##########"
$)+>6*$
"##########"
%&'(),
COT(liczba)
Funkcja zwraca cotangens z liczby patrz: rysunek 12.27.
Rysunek 12.27.
Funkcja COT
!
"############"
$ $
"############"
$)I>*O*I*$
"############"
%&'(),
DEGREES(liczba)
Funkcja zamienia radiany na stopnie patrz: rysunek 12.28.
Rysunek 12.28.
Funkcja
DEGREES
H !
"#################"
$ H $
"#################"
$+7)*O+77O+6P*$
"#################"
%&'(),
149
EXP(liczba)
Funkcja zwraca podstaw logarytmu naturalnego (e) podniesion do podanej potgi patrz:
rysunek 12.29.
Rysunek 12.29.
Funkcja EXP
F* !
"##########"
$ F* $
"##########"
$7)6PO+I$
"##########"
%&'(),
FLOOR(liczba)
Funkcja zwraca najblisz mniejsz liczb cakowit dla podanej liczby zmiennoprzecinkowej patrz: rysunek 12.30.
Rysunek 12.30.
Funkcja
FLOOR
D
)7 !
"############"
$D
)7 $
"############"
$$
"############"
%&'(),
GREATEST()
Funkcja zwraca najwiksz warto z podanej listy, dziaajc zarwno na acuchach, jak
i na liczbach patrz: rysunek 12.31.
Rysunek 12.31.
Funkcja
GREATEST
H *6 !
"#################"
$H *6 $
"#################"
$6$
"#################"
%&'(),
LEAST()
Funkcja zwraca najmniejsz warto z podanej listy, dziaajc zarwno na acuchach, jak i na
liczbach patrz: rysunek 12.32.
150
Cz II n Encyklopedia MySQL
Rysunek 12.32.
Funkcja LEAST
*6 !
"##############"
$
*6 $
"##############"
$$
"##############"
%&'(),
LOG(liczba)
Funkcja zwraca logarytm naturalny z liczby patrz: rysunek 12.33.
Rysunek 12.33.
Funkcja LOG
H !
"##########"
$
H $
"##########"
$*)6*+P+$
"##########"
%&'(),
LOG10(liczba)
Funkcja zwraca logarytm dziesitny z liczby patrz: rysunek 13.34.
Rysunek 13.34.
Funkcja LOG10
H*6> !
"#############"
$
H*6> $
"#############"
$6)O6+$
"#############"
%&'(),
MOD(liczba, liczba)
Funkcja zwraca reszt z dzielenia, podobnie jak operator patrz: rysunek 12.35.
Rysunek 12.35.
Funkcja MOD
6+> !
"############"
$6+> $
"############"
$6$
"############"
%&'(),
151
PI()
Funkcja zwraca kilka pierwszych cyfr liczby patrz: rysunek 12.36. Wewntrznie MySQL
przechowuje pen, podwjnej precyzji warto .
Rysunek 12.36.
Funkcja PI
F- !
"##########"
$F- $
"##########"
$6)>+O6$
"##########"
%&'(),
POW(liczba, liczba)
Funkcja zwraca pierwsz liczb podniesion do potgi liczby drugiej patrz: rysunek 12.37.
Rysunek 12.37.
Funkcja POW
F?* !
"#############"
$F?* $
"#############"
$*>)$
"#############"
%&'(),
POWER(liczba, liczba)
Jest to alias funkcji .
RADIANS(liczba)
Funkcja zamienia stopnie na radiany patrz: rysunek 12.38.
Rysunek 12.38.
Funkcja
RADIANS
->+ !
"##################"
$->+ $
"##################"
$)7P+6OPI66O7>+$
"##################"
%&'(),
152
Cz II n Encyklopedia MySQL
RAND([zarodek])
Funkcja zwraca liczb pseudolosow z zakresu od 0 do 1. Zarodka naley uywa, aby rozpocz generowanie liczb pseudolosowych od okrelonego punktu w sekwencji. Jeeli nie
podamy zarodka, MySQL uyje jako zarodka dla generatora liczb pseudolosowych warto
pobran z zegara systemowego patrz: rysunek 12.39.
Rysunek 12.39.
Funkcja RAND
*6>+ !
"##################"
$*6>+ $
"##################"
$)II+76>6*6*66$
"##################"
%&'(),
ROUND(liczba[, dokadno])
Funkcja zaokrgla liczb zmiennoprzecinkow do cakowitej lub opcjonalnie do podanej liczby
cyfr po przecinku patrz: rysunek 12.40.
Rysunek 12.40.
Funkcja ROUND
+)III* !
"##################"
$+)III* $
"##################"
$+)I7$
"##################"
%&'(),
SIGN(liczba)
Funkcja zwraca 1, jeeli liczba jest ujemna, lub 1, jeeli jest dodatnia patrz: rysunek 12.41.
Rysunek 12.41.
Funkcja SIGN
-H# !
"###########"
$-H# $
"###########"
$#$
"###########"
%&'(),
SIN(liczba)
Funkcja zwraca sinus z liczby patrz: rysunek 12.42.
- !
"##########"
$- $
"##########"
$)P>>7$
"##########"
%&'(),
SQRT(liczba)
Funkcja zwraca pierwiastek kwadratowy z liczby patrz: rysunek 12.43.
Rysunek 12.43.
Funkcja SQRT
:+ !
"##########"
$:+ $
"##########"
$6)P7*OP6$
"##########"
%&'(),
TAN(liczba)
Funkcja zwraca tangens z kta wyraonego w radianach patrz: rysunek 12.44.
Rysunek 12.44.
Funkcja TAN
!
"##########"
$ $
"##########"
$)++7>P$
"##########"
%&'(),
TRUNCATE(liczba, dokadno)
Funkcja skraca cz uamkow liczby do podanej dokadnoci patrz: rysunek 12.45.
Rysunek 12.45.
Funkcja
TRUNCATE
)*6>+* !
"#####################"
$ )*6>+* $
"#####################"
$)*6$
"#####################"
%&'(),
153
154
Cz II n Encyklopedia MySQL
acuchy
Opisane tu funkcje wykonuj operacje na acuchach i zwracaj acuchy. Jak pamitamy,
MySQL udostpnia operatory do porwnywania acuchw, w tym i
.
ASCII(znak)
Funkcja zwraca kod ASCII pierwszego znaku w danym acuchu patrz: rysunek 12.46.
Rysunek 12.46.
Funkcja ASCII
--/ !
"############"
$--/ $
"############"
$O7$
"############"
%&'(),
BIN(liczba_cak)
Funkcja zwraca reprezentacj binarn podanej liczby cakowitej patrz: rysunek 12.47.
Rysunek 12.47.
Funkcja BIN
-6 !
"#########"
$
-6 $
"#########"
$$
"#########"
%&'(),
BINARY acuch
Sowo kluczowe
sprawia, e dany acuch jest traktowany jako binarny, co oznacza, e
wielko liter ma znaczenie przy porwnaniach. Sowo
ma wyszy priorytet ni operatory porwnania (wykonywane jest przed nimi). Rysunek 12.48 ilustruje zjawisko rozrniania duych i maych liter w acuchach binarnych i nierozrniania w acuchach normalnych.
Rysunek 12.48.
Sowo kluczowe
BINARY
/G
-L/G!
"#########"################"
$/G$
-L/G$
"#########"################"
$$$
"#########"################"
%&'(),
155
CHAR()
Funkcja zwraca acuch podany jako lista kodw ASCII patrz: rysunek 12.49.
Rysunek 12.49.
Funkcja CHAR
O7OPOO !
"################"
$O7OPOO $
"################"
$/N,$
"################"
%&'(),
CHARACTER_LENGHT(acuch)
Jest to alias funkcji
.
CHAR_LENGTH(acuch)
Funkcja zwraca liczb znakw w acuchu patrz: rysunek 12.50. Znaki wielobajtowe s
liczone jako jeden znak.
Rysunek 12.50.
Funkcja
CHAR_LENGTH
.
H:
!
"######################"
$.
H:
$
"######################"
$+$
"######################"
%&'(),
CONCAT()
Funkcja dokonuje poczenia acuchw podanych w licie patrz: rysunek 12.51. Jeeli
ktrykolwiek z podanych elementw ma warto , zwracane jest rwnie .
Rysunek 12.51.
Funkcja
CONCAT
/N, !
"#######################"
$/N, $
"#######################"
$/N,$
"#######################"
%&'(),
156
Cz II n Encyklopedia MySQL
CONCAT_WS(separator, )
Funkcja dokonuje poczenia acuchw, rozdzielajc je separatorem patrz: rysunek 12.52.
W odrnieniu od funkcji
warto jest tu ignorowana. Separator o wartoci
powoduje, e funkcja zwraca .
Rysunek 12.52.
Funkcja
CONCAT_WS
.?E/N, !
"################################"
$.?E/N, $
"################################"
$/ENE,$
"################################"
%&'(),
4P !
"####################"
$4P $
"####################"
$I>$
"####################"
%&'(),
DECODE(tekst_zaszyfrowany, haso)
Funkcja odszyfrowuje acuch zaszyfrowany za pomoc funkcji
patrz: rysunek 12.54.
Rysunek 12.54.
Funkcja
DECODE
:
=/5 =/5 !
"###########################################"
$ :
=/5 =/5 $
"###########################################"
$:
$
"###########################################"
%&'(),
ELT(element, )
Funkcja zwraca element o indeksie wskazanym przez pierwszy argument patrz: rysunek
12.55. Pierwszy element ma numer 1.
157
6/N,0 !
"#########################"
$
6/N,0 $
"#########################"
$,$
"#########################"
%&'(),
ENCODE(tekst, haso)
Funkcja zwraca acuch zaszyfrowany za pomoc podanego hasa. Zwrcony acuch jest
acuchem binarnym o tej samej dugoci, co pierwotny tekst. acuch mona odszyfrowa
za pomoc funkcji . Funkcji tej nie naley stosowa dla kolumny
w tabeli
uprawnie (ang. grant table) MySQL. Do tego celu suy funkcja . Rysunek 12.56
prezentuje zastosowanie
do ukrycia pl zawierajcych hasa w aplikacji.
Rysunek 12.56.
Funkcja
ENCODE
F 2C(3&'3
# =/G 3%(=/5
#?
1G!
:2%3)%&/;;,(0),
&/(,=0=/K0?/%'K
ENCRYPT(acuch[, domieszka])
Funkcja odbudowuje funkcj jzyka C patrz: rysunek 12.57. Jest to szyfrowanie
nieodwracalne. Drugi argument moe by dwuznakowym acuchem poprawiajcym losowo szyfrowania. Dusze acuchy s skracane. Funkcja ta nie jest kompatybilna z funkcj
i kady system operacyjny moe mie odmienn implementacj (w bazach
MySQL instalowanych w systemach Windows funkcja moe zwraca warto NULL).
Rysunek 12.57.
Funkcja
ENCRYPT
LF=/5/N !
"########################"
$ LF=//N $
"########################"
$/N@KKQ=
R?-$
"########################"
%&'(),
EXPORT_SET(pole_bitowe, opis_wczonej,
opis_wyczonej[, separator[,liczba_bitw]])
Funkcja zwraca acuch opcji odpowiadajcy bitom pierwszego argumentu. Bity, skonwertowane kolejno od najmodszego do najstarszego, buduj acuch od lewej do prawej. Drugi
i trzeci argument to cigi tekstowe reprezentujce odpowiednio wczone i wyczone bity.
158
Cz II n Encyklopedia MySQL
Domylnym separatorem jest przecinek, ale moe by nim dowolny acuch. Domylnie
uywane s wszystkie 64 bity reprezentacji liczby cakowitej, ale mona to ograniczy za
pomoc pitego argumentu. Na rysunku 12.58 znaczniki T i N s rozdzielane pionow kresk.
Ukazano 8 pl (bitw) pola aktywne definiuje liczba 9 (dwjkowo 1001).
Rysunek 12.58.
Funkcja
EXPORT_SET
F. O$P !
"#################################"
$ F. O$P $
"#################################"
$$$$$$$$$
"#################################"
%&'()>,
FIELD(element, )
Funkcja zwraca indeks pierwszego argumentu w obrbie listy, ktra po nim nastpuje
patrz: rysunek 12.59. Elementy listy s indeksowane od 1. Jeeli szukany cig nie zostanie
odnaleziony, na licie zwracane jest 0.
Rysunek 12.59.
Funkcja
FIELD
D-
N/N,0 !
"#############################"
$D-
N/N,0 $
"#############################"
$*$
"#############################"
%&'(),
FIND_IN_SET(acuch, lista)
Funkcja zwraca indeks elementu listy acuchowej listy elementw oddzielonych przecinkami, bdcej acuchem (patrz: rysunek 12.60). Elementy listy s numerowane od 1.
Rysunek 12.60.
Funkcja
FIND_IN_SET
D-.-. ,/N,0 !
"#############################"
$D-.-. ,/N,0 $
"#############################"
$6$
"#############################"
%&'(),
FORMAT(liczba, dokadno)
Funkcja zwraca liczb zmiennoprzecinkow z przecinkami wstawionymi co trzy potgi liczby
10 i z podan liczb cyfr w czci uamkowej patrz: rysunek 12.61.
159
D*6>+I7P)OO** !
"############################"
$D*6>+I7P)OO** $
"############################"
$*6>+I7P)O$
"############################"
%&'(),
HEX(liczba_cak)
Funkcja zwraca szesnastkow reprezentacj liczby cakowitej patrz: rysunek 12.62.
Rysunek 12.62.
Funkcja HEX
+I6P*6 !
"#############"
$ +I6P*6 $
"#############"
$POID$
"#############"
%&'(),
INET_ATON(adres)
Funkcja konwertuje adres internetowy zapisany jako acuch do postaci numerycznej. Adresy
cztero- i omiobitowe s akceptowane patrz: rysunek 12.63.
Rysunek 12.63.
Funkcja
INET_ATON
- .I>)*P)I7)7 !
"##########################"
$- .I>)*P)I7)7 $
"##########################"
$7++O>+>$
"##########################"
%&'(),
INET_NTOA(adres)
Funkcja zwraca acuchow reprezentacj numerycznego adresu internetowego patrz:
rysunek 12.64.
Rysunek 12.64.
Funkcja
INET_NTOA
- .7++O>+> !
"#########################"
$- .7++O>+> $
"#########################"
$I>)*P)I7)7$
"#########################"
%&'(),
160
Cz II n Encyklopedia MySQL
- /N,0;K6
!
"################################"
$- /N,0;K6
$
"################################"
$/N
0;K$
"################################"
%&'(),
INSTR(cig, podcig)
Funkcja zwraca wskanik do pierwszego wystpienia podcigu w danym cigu patrz:
rysunek 12.66.
Rysunek 12.66.
Funkcja
INSTR
-/(( !
"#########################"
$-/(( $
"#########################"
$+$
"#########################"
%&'(),
LCASE(cig)
Funkcja zwraca acuch z wielkimi literami zamienionymi na mae patrz: rysunek 12.67.
Aliasem jest .
Rysunek 12.67.
Funkcja
LCASE
N0 !
"###############"
$
N0 $
"###############"
$/N,0$
"###############"
%&'(),
LEFT(cig, dugo)
Funkcja zwraca podcig z danego cigu o podanej dugoci patrz: rysunek 12.68.
161
D/N,0;6 !
"###################"
$
D/N,0;6 $
"###################"
$/N,$
"###################"
%&'(),
LENGTH(cig)
Funkcja zwraca liczb bajtw dla danego cigu patrz: rysunek 12.69. Znaki dwubajtowe
s interpretowane przez t funkcj jako 2. Aby odnale liczb znakw w cigach zawierajcych znaki wielobajtowe, naley zastosowa funkcj
. Aliasem
jest
.
Rysunek 12.69.
Funkcja
LENGTH
H/N, !
"###############"
$
H/N, $
"###############"
$6$
"###############"
%&'(),
LOAD_FILE(nazwa)
Funkcja zwraca zawarto pliku znajdujcego si w systemie plikw serwera. Uytkownik
musi mie uprawnienia do otwarcia tego pliku w obrbie MySQL, a sam plik musi by udostniony do odczytu wszystkim uytkownikom systemu. Na rysunku 12.70 przedstawiono
adowanie treci wiadomoci z forum do tabeli przechowujcej wiadomoci.
Rysunek 12.70.
Funkcja
LOAD_FILE
F &'/0,'
(%,G
.D-
R=R;%2R*6>)(Q(
?
1G*>+!
N/N,/N,6 !
"##########################"
$
N/N,/N,6 $
"##########################"
$+$
"##########################"
%&'(),
162
Cz II n Encyklopedia MySQL
LOWER(cig)
Jest to alias funkcji .
F/N,+) !
"######################"
$
F/N,+) $
"######################"
$))))))))))))/N,$
"######################"
%&'(),
LTRIM(cig)
Funkcja usuwa spacje z lewej strony cigu patrz: rysunek 12.73.
Rysunek 12.73.
Funkcja
LTRIM
-/N, !
"###################"
$
-/N, $
"###################"
$/N,$
"###################"
%&'(),
MAKE_SET(pole_bitowe, )
Funkcja zwraca list acuchow utworzon w efekcie wybierania elementw z listy na podstawie pola bitowego. Cyfry binarne pola ustawione na 1 powoduj wybranie elementu z listy.
Pierwszy element z lewej odpowiada pierwszemu bitowi. Funkcja zwraca acuch z elementami zbioru oddzielonymi przecinkami. Na rysunku 12.74 liczba dziesitna 5 to dwjkowo 0101, co powoduje wybranie pierwszego i trzeciego elementu.
Rysunek 12.74.
Funkcja
MAKE_SET
. +/N, !
"############################"
$ . +/N, $
"############################"
$/,$
"############################"
%&'(),
163
1
D&'/0,
? (%, H-:
!
MD5(cig)
Funkcja zwraca 32-znakow warto bdc efektem mieszania (ang. hash) zgodnie z dokumentem RFC 1321 patrz: rysunek 12.76. Identyfikatory MD5 teoretycznie s niepowtarzalne dla kadego acucha.
Rysunek 12.76.
Funkcja MD5
+'9(
&&'S !
"##################################"
$+'9(
&&'S $
"##################################"
$*NINNION>6*O0I+O*P>O670+>/$
"##################################"
%&'(),
OCT(liczba_cak)
Funkcja zwraca semkow reprezentacj dziesitnej liczby cakowitej patrz: rysunek 12.77.
Rysunek 12.77.
Funkcja OCT
I !
"#########"
$I $
"#########"
$*$
"#########"
%&'(),
164
Cz II n Encyklopedia MySQL
OCTET_LENGTH(cig)
Jest to alias funkcji
.
ORD(cig)
Funkcja zwraca liczb porzdkow dla pierwszego znaku z lewej strony w danym cigu.
W odrnieniu od , bierze pod uwag znaki wielobajtowe.
PASSWORD(cig)
Funkcja szyfruje podane w formacie tekstowym haso. Proces szyfrowania jest nieodwracalny.
Funkcja ta jest przeznaczona do wstawiania wartoci do kolumny hase w !" tabeli
uprawnie uytkownikw. Rysunek 12.78 przedstawia kod SQL zmieniajcy haso na sekret.
Rysunek 12.78.
Funkcja
PASSWORD
F 2%
F/&%0GF?3%(
? %G!
POSITION(podcig IN cig)
Jest to inna forma funkcji . Rnica polega na innej postaci argumentw patrz:
rysunek 12.79.
Rysunek 12.79.
Funkcja
POSITION
F--N-/N,/N, !
"###########################"
$F--N-/N,/N, $
"###########################"
$*$
"###########################"
%&'(),
REPEAT(cig, powtrzenia)
Funkcja zwraca acuch zoony z danego cigu, powtrzonego okrelon liczb razy
patrz: rysunek 12.80.
Rysunek 12.80.
Funkcja
REPEAT
F / !
"#################"
$ F / $
"#################"
$//////////$
"#################"
%&'(),
165
F
/#N#,#0#R !
"##############################"
$ F
/#N#,#0#R $
"##############################"
$/RNR,R0$
"##############################"
%&'(),
REVERSE(cig)
Funkcja odwraca kolejno znakw w cigu patrz: rysunek 12.82.
Rysunek 12.82.
Funkcja
REVERSE
4 /N,0; !
"###################"
$ 4 /N,0; $
"###################"
$;0,N/$
"###################"
%&'(),
RIGHT(cig, liczba)
Funkcja zwraca okrelon liczb znakw od prawej strony danego cigu. Do pobierania
znakw z lewej strony cigu suy funkcja patrz: rysunek 12.83.
Rysunek 12.83.
Funkcja
RIGHT
-H/N,0;6 !
"####################"
$-H/N,0;6 $
"####################"
$0;$
"####################"
%&'(),
166
Cz II n Encyklopedia MySQL
Rysunek 12.84.
Funkcja
RPAD
F/N,+) !
"######################"
$F/N,+) $
"######################"
$/N,))))))))))))$
"######################"
%&'(),
RTRIM(cig)
Funkcja usuwa spacje po prawej stronie cigu. Na rysunku 12.85 z cigu usunite zostaj
spacje z prawej strony, po czym jest on czony z innym cigiem, aby pokaza brak spacji.
Rysunek 12.85.
Funkcja
RTRIM
-/N, 0; !
"#################################"
$-/N, 0; $
"#################################"
$/N,0;$
"#################################"
%&'(),
SOUNDEX(cig)
Funkcja zwraca cig bdcy rezultatem mieszania, oparty na tym, jakie jest brzmienie danego sowa. Donald Knuth opisa ten algorytm w trzecim tomie ksiki Sztuka programowania (WNT, 2003). Rezultaty mieszania s czteroznakowe i rozpoczynaj si od litery.
Rysunek 12.86 ilustruje niewielk rnic w angielskiej wymowie sw lion i lying.
Rysunek 12.86.
Funkcja
SOUNDEX
' 'K !
"#################"##################"
$ ' $ 'K $
"#################"##################"
$
+$
+*$
"#################"##################"
%&'(),
SPACE(liczba)
Funkcja zwraca acuch zoony z podanej liczby spacji patrz: rysunek 12.87. W zamian
mona zastosowa funkcj .
167
/F N !
"#############################"
$/F N $
"#############################"
$/N$
"#############################"
%&'(),
STRCMP(cig, cig)
Funkcja porwnuje dwa acuchy i zwraca 0, jeeli s one rwne, 1 jeeli pierwszy poprzedza drugi w kolejnoci alfabetycznej, i 1 jeeli pierwszy wystpuje w kolejnoci alfabetycznej po drugim. Rysunek 12.88 pokazuje, e abc stoi przed abd.
Rysunek 12.88.
Funkcja
STRCMP
F/N,/N0 !
"######################"
$F/N,/N0 $
"######################"
$#$
"######################"
%&'(),
-H/N,0;66 !
"###########################"
$
-H/N,0;66 $
"###########################"
$,0$
"###########################"
%&'(),
168
Cz II n Encyklopedia MySQL
-H.- /N,0* !
"####################################"
$
-H.- /N,0* $
"####################################"
$/N$
"####################################"
%&'(),
-/N, !
"#######################"
$-/N, $
"#######################"
$/N,$
"#######################"
%&'(),
UCASE(cig)
Funkcja zwraca acuch z maymi literami zamienionymi na wielkie patrz: rysunek 12.92.
Zamian cigu na mae litery umoliwia .
Rysunek 12.92.
Funkcja
UCASE
N0 !
"###############"
$ N0 $
"###############"
$
$
"###############"
%&'(),
UPPER(cig)
Jest to alias funkcji .
169
Czas
Funkcje tu opisane operuj na wartociach opisujcych czas. W zalenoci od kontekstu
wartoci te przybieraj formy kolumn, acuchw i liczb cakowitych. Na przykad funkcja
zwraca domylnie acuch typu !, ale jeeli oczekiwana jest liczba
cakowita, to zwraca !. Kada funkcja, ktra oczekuje daty lub czasu, zaakceptuje poczony czas i dat.
CURDATE()
Funkcja zwraca biec dat patrz: rysunek 12.93. Mona w tym celu uy rwnie #
.
Rysunek 12.93.
Funkcja
CURDATE
!
"############"
$ $
"############"
$*6#+#*I$
"############"
%&'(),
CURRENT_DATE
Funkcja zwraca biec dat patrz: rysunek 12.94. Jak wida, nie wymaga ona adnych
nawiasw. Zamiennie mona zastosowa .
Rysunek 12.94.
Funkcja
CURRENT_DATE
. !
"##############"
$ . $
"##############"
$*6#+#*I$
"##############"
%&'(),
CURRENT_TIME
Funkcja zwraca biecy czas patrz: rysunek 12.95. Jak wida, nie wymaga ona adnych
nawiasw. Zamiennie mona zastosowa .
170
Cz II n Encyklopedia MySQL
Rysunek 12.95.
Funkcja
CURRENT_TIME
.- !
"##############"
$ .- $
"##############"
$+J*J*I$
"##############"
%&'(),
CURRENT_TIMESTAMP
Funkcja zwraca biec dat i czas patrz: rysunek 12.96. Jak wida, nie wymaga ona adnych
nawiasw. Zamiennie mona zastosowa
.
Rysunek 12.96.
Funkcja
CURRENT
_TIMESTAMP
.- F!
"#####################"
$ .- F$
"#####################"
$*6#+#*I+J*6J*7$
"#####################"
%&'(),
CURTIME()
Funkcja zwraca biecy czas patrz:rysunek 12.97. Zamiennie mona uy
.
Rysunek 12.97.
Funkcja
CURTIME
- !
"###########"
$- $
"###########"
$+J*+J*$
"###########"
%&'(),
171
Format
L
dni
L.
'dni godziny'
L.-
'dni godziny:minuty'
L.
'dni godziny:minuty:sekundy'
godziny
.-
'godziny:minuty'
.
'godziny:minuty:sekundy'
-
minuty
- .
'minuty:sekundy'
miesice
sekundy
L
lata
L .
'lata-miesice'
Interwa czasowy mona te doda do daty za pomoc operatora dodawania ("#, np.
%&
'
$(. Aby odj czas od daty, naley posuy si funkcj lub znakiem minusa. Pominicie czci wartoci interwau powoduje, e MySQL przyporzdkowuje wartoci od prawej do lewej, a brakujce wartoci ustawia na zero. Na przykad podanie ()* dla interwau
jest rwnorzdne uyciu
. Rysunek 12.98
przedstawia czas biecy i czas sprzed dwch tygodni.
Rysunek 12.98.
Funkcja
DATE_ADD
? .? - 4
>L !
"#####################"##################################"
$? $ .? - 4
>L $
"#####################"##################################"
$*6#+#*I+J6OJ*+$*6#I#O+J6OJ*+$
"#####################"##################################"
%&'(),
DATE_FORMAT(data, format)
Funkcja formatuje dat zgodnie z podanym formatem. acuch formatujcy moe zawiera
dowoln liczb kodw rozpoczynajcych si od znaku procenta (), symbolizujcych poszczeglne elementy daty. Reszta znakw acucha zostaje zwrcona w postaci dosownej.
Kody zostay wymienione w tabeli 12.2.
172
Cz II n Encyklopedia MySQL
Opis
Przykady
TT
T/
)))
TN
@)))
T,
)))*
T0
*6>)))
T
)))6
T
Dzie miesica
)))6
T;
Mikrosekundy
)))OOOOOO
T
)))*6
T=
)))*
T-
Rwnoznaczny T=
)))*
T'
)))+O
T9
)))6II
T3
)))*6
T
)))*
T
Nazwa miesica
@L)))
T
)))*
T1
AM lub PM
F
T%
J+J6
T
Sekundy
)))+O
T
Sekundy
)))+O
+J6*J
T2
)))+6
T
)))+6
TU
)))+6
T4
)))+6
T&
)))I
T?
L)))L
TQ
)))OOOO
T
)))OOOO
T
)))OO
TL
Rok
)))OOOO
173
Kody +, $, , i
wykorzystuj zasad, e rok musi zaczyna si albo w niedziel, albo w poniedziaek. Zgodnie z t logik, 1 stycznia 1970 roku nalea do 53. tygodnia roku 1969.
Rysunek 12.99 przedstawia dat 1 stycznia 1970 sformatowan tak, aby zawieraa dzie tygodnia.
Rysunek 12.99.
Funkcja
DATE_FORMAT
.DO7##T?TTTL !
"############################################"
$ .DO7##T?TTTL $
"############################################"
$=2%0/@/2/%(O7$
"############################################"
%&'(),
DAYNAME(data)
Funkcja zwraca nazw dnia tygodnia dla podanej daty. Z rysunku 12.100 wynika, e 1 stycznia
1970 roku przypada w czwartek.
Rysunek 12.100.
Funkcja
DAYNAME
L O7## !
"#######################"
$L O7## $
"#######################"
$=2%0/$
"#######################"
%&'(),
DAYOFMONTH(data)
Funkcja zwraca dzie miesica na podstawie podanej daty. Z rysunku 12.101 wynika, e 1 stycznia 1970 by pierwszym dniem miesica.
Rysunek 12.101.
Funkcja
DAYOFMONTH
LDO7## !
"##########################"
$LDO7## $
"##########################"
$$
"##########################"
%&'(),
174
Cz II n Encyklopedia MySQL
DAYOFWEEK(data)
Funkcja zwraca dzie tygodnia jako liczb. Niedziela jest traktowana jako pierwszy dzie
tygodnia. Z rysunku 12.102 wynika, e 1 stycznia 1970 roku by pitym dniem tygodnia, czyli
czwartkiem.
Rysunek 12.102.
Funkcja
DAYOFWEEK
LD? O7## !
"#########################"
$LD? O7## $
"#########################"
$+$
"#########################"
%&'(),
DAYOFYEAR(data)
Funkcja zwraca liczb dni od pocztku roku, traktujc 1 stycznia jako pierwszy dzie. Z rysunku 12.103 wynika, e 6 maja 1984 roku by 127. dniem roku.
Rysunek 12.103.
Funkcja
DAYOFYEAR
LDL OP>#+#IJ6J !
"##################################"
$LDL OP>#+#IJ6J $
"##################################"
$*7$
"##################################"
%&'(),
L DO7## !
"#################################"
$ L DO7## $
"#################################"
$O7$
"#################################"
%&'(),
175
FROM_DAYS(dni)
Funkcja zwraca dat na podstawie liczby dni od pocztku danego systemu kalendarzowego.
Jednak daty przed rokiem 1582 nie s przedstawiane dokadnie. MySQL nie bierze pod uwag
zmian, jakie nastpiy z chwil wprowadzenia kalendarza gregoriaskiego. Rysunek 12.105
demonstruje zastosowanie tej funkcji. Odwrotne dziaanie ma funkcja .
Rysunek 12.105.
Funkcja
FROM_DAYS
D.L7O+*P !
"###################"
$D.L7O+*P $
"###################"
$O7##$
"###################"
%&'(),
FROM_UNIXTIME(sekundy[, format])
Funkcja zwraca dat na podstawie datownika UNIX-a, ktry jest liczb sekund od 1 stycznia
1970 roku. Opcjonalny argument
$ definiuje format zwracanego acucha. Moe on
zawiera te same kody, ktrych uywa si z patrz: tabela 12.2. Wartoci
przekazane do
s przeznaczone dla czasu Greenwich (GMT). Rysunek 12.106
przedstawia rezultaty dla komputera w strefie rodkowoeuropejskiej.
Rysunek 12.106.
Funkcja
FROM_UNIXTIME
D.-- *PP !
"######################"
$D.-- *PP $
"######################"
$O7##OJJ$
"######################"
%&'(),
HOUR(czas)
Funkcja zwraca godzin na podstawie podanego czasu patrz: rysunek 12.107.
Rysunek 12.107.
Funkcja
HOUR
J*6J>+ !
"##################"
$J*6J>+ $
"##################"
$$
"##################"
%&'(),
176
Cz II n Encyklopedia MySQL
MINUTE(czas)
Funkcja zwraca minut na podstawie podanego czasu patrz: rysunek 12.108.
Rysunek 12.108.
Funkcja
MINUTE
- J*6J>+ !
"####################"
$- J*6J>+ $
"####################"
$*6$
"####################"
%&'(),
MONTH(data)
Funkcja zwraca miesic jako liczb na podstawie podanej daty, poczwszy od 1 patrz:
rysunek 12.109.
Rysunek 12.109.
Funkcja
MONTH
O7## !
"#####################"
$O7## $
"#####################"
$$
"#####################"
%&'(),
MONTHNAME(data)
Funkcja zwraca nazw miesica na podstawie podanej daty patrz: rysunek 12.110.
Rysunek 12.110.
Funkcja
MONTHNAME
O7## !
"#########################"
$ O7## $
"#########################"
$@/2/%$
"#########################"
%&'(),
NOW()
Funkcja zwraca biec dat i czas. Zwrcona warto bdzie odpowiednia do kontekstu
wywoania. Rysunek 12.111 przedstawia wersj acuchow.
177
? !
"#####################"
$? $
"#####################"
$*6#+#*I7J**J*$
"#####################"
%&'(),
PERIOD_ADD(okres, miesice)
Funkcja dodaje okrelon liczb miesicy do okresu, ktry jest miesicem pewnego roku. Z rysunku 12.112 wynika, e 15 miesicy po styczniu 1970 nastpi kwiecie 1971 roku.
Rysunek 12.112.
Funkcja
PERIOD_ADD
F -.O7+ !
"########################"
$F -.O7+ $
"########################"
$O7>$
"########################"
%&'(),
PERIOD_DIFF(okres, okres)
Funkcja zwraca rnic w miesicach pomidzy dwoma okresami. Okres to miesic okrelonego roku. Z rysunku 12.113 wynika, e stycze 1970 roku by o 15 miesicy wczeniej
ni kwiecie roku 1971.
Rysunek 12.113.
Funkcja
PERIOD_DIFF
F -.-DDO7O7> !
"#############################"
$F -.-DDO7O7> $
"#############################"
$#+$
"#############################"
%&'(),
QUARTER(data)
Funkcja zwraca kwarta roku dla danej daty. Pierwszy kwarta rozpoczyna si wraz z pocztkiem roku i obejmuje pierwsze trzy miesice. Z rysunku 12.114 wynika, e 1 stycznia
1970 roku przypada w pierwszym kwartale.
178
Cz II n Encyklopedia MySQL
Rysunek 12.114.
Funkcja
QUARTER
: O7## !
"#######################"
$: O7## $
"#######################"
$$
"#######################"
%&'(),
SECOND(czas)
Funkcja zwraca sekundy z podanego czasu patrz: rysunek 12.115.
Rysunek 12.115.
Funkcja
SECOND
J*6J>+ !
"#####################"
$ J*6J>+ $
"#####################"
$>+$
"#####################"
%&'(),
SEC_TO_TIME(sekundy)
Funkcja zwraca czas na podstawie liczby sekund patrz: rysunek 12.116. Nie ma tu ograniczenia do wartoci, ktre mieszcz si w obrbie jednego dnia. Podanie liczby sekund
wikszej ni 86 400 spowoduje po prostu zwrcenie wartoci wikszej ni 24 godziny. Odwrotne dziaanie ma funkcja .
Rysunek 12.116.
Funkcja
SEC_TO_TIME
..- +*+ !
"###################"
$ ..- +*+ $
"###################"
$J*6J>+$
"###################"
%&'(),
SYSDATE()
Jest to alias funkcji
.
179
TIME_FORMAT(czas, format)
Funkcja zwraca czas sformatowany zgodnie z kodami podanymi w argumencie
$ .
Dopuszczalne kody s takie same, jak w przypadku funkcji . Rysunek 12.117
przedstawia czas sformatowany dla zegara dwunastogodzinnego.
Rysunek 12.117.
Funkcja
TIME_FORMAT
- .D*6J>+JT% !
"###############################"
$- .D*6J>+JT% $
"###############################"
$J>+JF$
"###############################"
%&'(),
TIME_TO_SEC(czas)
Funkcja zwraca liczb sekund, jak reprezentuje podany czas patrz: rysunek 12.118.
Wykonuje ona operacj odwrotn do funkcji .
Rysunek 12.118.
Funkcja
TIME_TO_SEC
- .. J*6J>+ !
"#########################"
$- .. J*6J>+ $
"#########################"
$+*+$
"#########################"
%&'()>,
TO_DAYS(data)
Funkcja zwraca liczb dni od pocztku systemu kalendarzowego do danej daty patrz rysunek 12.119. Daty przed 1582 rokiem nie s odwzorowywane dokadnie w zwizku ze
zmianami dokonanymi w kalendarzu gregoriaskim. Funkcja wykonuje operacj odwrotn
do . Za jej pomoc mona oblicza liczb dni dzielc dwie daty. Na przykad
%.*//(#/0#/(.&-%.*//(#/*#/(.& zwraca 212 liczb dni od 1 wrzenia
2001 do 1 lutego 2001 roku.
Rysunek 12.119.
Funkcja
TO_DAYS
.LO7## !
"#######################"
$.LO7## $
"#######################"
$7O+*P$
"#######################"
%&'(),
180
Cz II n Encyklopedia MySQL
UNIX_TIMESTAMP([data_i_czas])
Funkcja zwraca biecy czas jako datownik UNIX-a, ktry zdefiniowany jest jako liczba sekund od 1 stycznia 1970 roku dla czasu Greenwich patrz: rysunek 12.120. Jeeli podane
zostan opcjonalne data i czas, zwrcony zostanie datownik dla teje daty.
Rysunek 12.120.
Funkcja
UNIX_TIMESTAMP
-.- F !
"##################"
$-.- F $
"##################"
$+6O*O6I>$
"##################"
%&'(),
WEEK(data[, pierwszy_dzie])
Funkcja zwraca numer tygodnia na podstawie podanej daty patrz: rysunek 12.121. Tygodnie s liczone od pierwszego tygodnia roku. Pierwszy dzie tygodnia to domylnie niedziela,
ale jeeli drugi argument wynosi 1, wwczas za pocztek tygodnia uwaany jest poniedziaek.
Rysunek 12.121.
Funkcja
WEEK
? O7#I# !
"#######################"
$? O7#I# $
"#######################"
$**$
"#######################"
%&'(),
WEEKDAY(data)
Funkcja zwraca numer dnia tygodnia na podstawie podanej daty, gdzie poniedziaek ma
numer 0. Z rysunku 12.122 wynika, e 6 czerwca 1970 roku przypada w sobot.
Rysunek 12.122.
Funkcja
WEEKDAY
? LO7#I#I !
"#######################"
$? LO7#I#I $
"#######################"
$+$
"#######################"
%&'(),
181
YEAR(data)
Funkcja zwraca rok dla podanej daty patrz: rysunek 12.123.
Rysunek 12.123.
Funkcja
YEAR
L O7#I#I !
"####################"
$L O7#I#I $
"####################"
$O7$
"####################"
%&'(),
YEARWEEK(data[, pierwszy_dzie])
Funkcja zwraca okres na podstawie daty. Drugi argument decyduje o tym, czy tygodnie zaczynaj si od niedzieli, czy od poniedziaku. W pierwszym przypadku naley uy 0, a w drugim 1. Z rysunku 12.124 wynika, e 6 czerwca 1970 przypada w 22. tygodniu tego roku.
Rysunek 12.124.
Funkcja
YEARWEEK
L ? O7#I#I !
"###########################"
$L ? O7#I#I $
"###########################"
$O7**$
"###########################"
%&'(),
Pozostae funkcje
Opisane tu funkcje nie pasuj do adnej z wczeniejszych kategorii.
BIT_COUNT(liczba_cak)
Funkcja traktuje podan liczb cakowit jako liczb dwjkow i zwraca liczb ustawionych
w niej bitw. Z rysunku 12.125 wynika, e liczba dziesitna 19 ma w swej postaci dwjkowej
ustawione 3 bity.
Rysunek 12.125.
Funkcja
BIT_COUNT
-.O
-O !
"###############"#########"
$
-.O $
-O $
"###############"#########"
$6$$
"###############"#########"
%&'(),
182
Cz II n Encyklopedia MySQL
COALESCE()
Funkcja zwraca pierwszy element, liczc od lewej strony listy, ktry nie jest wartoci .
Jeeli wszystkie elementy s puste, zwracana jest warto . Rysunek 12.126 przedstawia
jej dziaanie.
Rysunek 12.126.
Funkcja
COALESCE
*6 !
"#####################################"
$
*6 $
"#####################################"
$$
"#####################################"
%&'(),
INTERVAL(cel, )
Funkcja zwraca pozycj na licie elementw, od ktrej
jest wikszy, ale jednoczenie
mniejszy ni kolejna warto na licie. Elementy listy musz by posortowane od najmniejszego do najwikszego. W obrbie listy wykonywane jest wyszukiwanie binarne pierwszy element ma numer 1. Z rysunku 12.127 wynika, e 9 jest wiksze ni pity element,
ktrym jest 7, i mniejsze od 11 na pozycji szstej.
Rysunek 12.127.
Funkcja
INTERVAL
- 4
O*6+767 !
"################################"
$- 4
O*6+767 $
"################################"
$+$
"################################"
%&'(),
ISNULL(warto)
Funkcja
zwraca 1, jeeli argument ma warto null, lub 0 w innych przypadkach. Z rysunku 12.128 wynika, e do
przesane zostay trzy wyraenia.
Rysunek 12.128.
Funkcja
ISNULL
-
-
2 -
"
!
"###########"##############"################"
$-
$-
2 $-
"
$
"###########"##############"################"
$$$$
"###########"##############"################"
%&'(),
183
Procedury
Procedury to funkcje, ktre dziaaj na zbiorze wynikw, zanim zostanie on przesany do
klienta. Wywouje si je na kocu instrukcji wyboru. Do MySQL zaczona jest tylko jedna
procedura 121!. W rozdziale 31. Rozszerzanie moliwoci opisano tworzenie wasnych procedur.
analyse([elementy [, pami]])
Procedura zwraca analiz tabeli. Moliwe jest ograniczenie maksymalnej liczby elementw
branych pod uwag dla kadej kolumny. Mona rwnie poda maksymaln ilo pamici
do wykorzystania podczas analizy patrz: rysunek 12.129.
Rysunek 12.129.
Procedura analyse
/C&//
#D1%023(
#?
1-*6
#F // VH!
WWWWWWWWWWWWWWWWWWWWWWWWWWW)%&WWWWWWWWWWWWWWWWWWWWWWWWWWW
D'0./J1%023()/C&/
'.U/2JH%CN'M
/Q.U/2JC,C(3/
'.K(=JP
/Q.K(=J
1('.%.C%J
2J
UK.U/2.%./UK.K(=JO)
(0J
WWWWWWWWWWWWWWWWWWWWWWWWWWW*)%&WWWWWWWWWWWWWWWWWWWWWWWWWWW
D'0./J1%023()/
'.U/2J)*+
/Q.U/2J6)+
'.K(=J>
/Q.K(=J>
1('.%.C%J
2J
UK.U/2.%./UK.K(=J*)6
(0J)7O
1('/.;'0(1J )*+*)+6)+
*%&'(),