Spis tre ci
Wst p ............................................................................................5
MySQL 5 ........................................................................................7
Widoki 7
Trygery 7
Procedury skladowane 7
Kursory 8
Nowe mechanizmy skladowania danych 8
Zdarzenia bazy danych 9
1. Instalacja ..................................................................................... 10
Pobieranie MySQL 10
Konfiguracja 11
Uruchomienie 14
Ustawianie hasla glównego 15
Replikacja 15
2. Narz dzia wiersza polece ........................................................ 18
3. Typy danych ................................................................................22
Liczby 23
a cuchy 29
3
4. SQL .............................................................................................. 41
Rozró nianie wielko ci liter 41
Literaly 42
Identyfikatory 43
Komentarze 45
Instrukcje 46
Zasady dotycz ce transakcji 106
5. Operatory .................................................................................. 108
Priorytety operatorów 108
Operatory arytmetyczne 109
Operatory porównania 109
Operatory logiczne 111
6. Funkcje .......................................................................................113
Funkcje agreguj ce 113
Funkcje ogólnego przeznaczenia 115
7. Rodzaje tabel ............................................................................ 137
8. Procedury i funkcje sk adowane .............................................. 138
Parametry 138
Logika 139
Kursory 143
Obsluga zdarze i warunki 144
9. Trygery ...................................................................................... 146
Skorowidz ................................................................................. 147
4 | MySQL. Leksykon kieszonkowy
Rozdzia 3. Typy danych
We wszystkich typach danych nawiasami kwadratowymi ([])
oznaczane s fragmenty opcjonalne. Poni szy przyklad pokazuje
sposób prezentacji typu BIGINT, opisanego dalej w tym rozdziale:
BIGINT[(wielko _pokazywana)]
Oznacza to, e slowo BIGINT mo e wyst pi samodzielnie lub
z pokazywan warto ci . U ycie kursywy wskazuje, e nie nale y
wpisywa slowa wielko _pokazywana, ale poda wlasn war-
to . Oto przyklady u ycia:
BIGINT
BIGINT(20)
Poza typem BIGINT tak e wiele innych typów danych MySQL
uwzgl dnia deklaracj rozmiaru wy wietlania. Je li nie powie-
dziano inaczej, musi to by liczba od 1 do 255.
W wersjach MySQL starszych ni wersja 5, baza danych w nie-
których przypadkach zmieniala podany typ kolumny, nie infor-
muj c o tym u ytkownika. Obecnie takie podmiany nie maj ju
miejsca.
VARCHAR -> CHAR
Je li podana kolumna VARCHAR ma rozmiar mniejszy od czte-
rech znaków, jest przeksztalcana w kolumn CHAR.
CHAR -> VARCHAR
Je li tabela zawiera co najmniej jedn kolumn o zmiennej
dlugo ci, wszystkie kolumny typu CHAR dlu sze ni trzy
znaki s zamieniane na VARCHAR.
Rozmiar wy wietlania TIMESTAMP
Rozmiar wy wietlania pól TIMESTAMP musi by zawsze wiel-
ko ci parzyst od 2 do 14. Rozmiar równy 0 lub wi kszy
od 14 powoduje przyj cie 14. Wszelkie liczby nieparzyste
s zamieniane na nast pn liczb parzyst .
22 | MySQL. Leksykon kieszonkowy
Liczby
MySQL obsluguje liczbowe typy danych zgodne z ANSI SQL 2.
Typy te dzielimy na calkowitoliczbowe, dziesi tne i zmiennoprze-
cinkowe. W ramach tych grup dzielimy typy dalej, wedlug zaj-
mowanej przez nie pami ci.
W przypadku typów liczbowych mo na poda rozmiar wy wie-
tlania, który wplywa na sposób pokazywania przez MySQL wy-
ników. Rozmiar ten nie ma adnego zwi zku z wielko ci pami ci
zajmowanej przez dany typ. Dodatkowo w przypadku liczb
zmiennoprzecinkowych i dziesi tnych mo na poda liczb cyfr
znajduj cych si za kropk dziesi tn . Wtedy liczba cyfr powinna
nale e do zakresu od 0 do 30, czyli by co najmniej o dwa
mniejsza od rozmiaru wy wietlania. Je li warunek ten nie zostanie
dotrzymany, MySQL automatycznie zmieni liczb cyfr tak, aby
byla mniejsza o dwa od rozmiaru wy wietlania. Przykladowo,
MySQL automatycznie zmieni FLOAT(6,5) na FLOAT(7,5).
Próba wstawienia do kolumny warto ci przekraczaj cej dopusz-
czalny zakres tej kolumny powoduje obci cie tej warto ci do
najmniejszej (dla liczb ujemnych) lub najwi kszej (dla liczb dodat-
nich) warto ci dla danej kolumny dopuszczalnej. Je li takie ob-
ci cie jest robione podczas wykonywania instrukcji ALTER TABLE,
LOAD DATA INFILE, UPDATE lub wielowierszowej instrukcji INSERT,
MySQL pokazuje ostrze enie. Wyj tkiem jest korzystanie z My-
SQL w wersji 5 lub nowszej w trybie pelnej zgodno ci ze stan-
dardem SQL, gdy wtedy w przypadku instrukcji INSERT i UPDATE
zglaszany jest bl d.
Atrybutu AUTO_INCREMENT mo na u y do co najwy ej jednej
kolumny calkowitoliczbowej w tabeli. Atrybut UNSIGNED mo e by
l czony z dowolnym liczbowym typem danych. U ycie tego atry-
butu powoduje, e do kolumny nie mo na wpisywa liczb ujem-
nych. Atrybut ZEROFILL nakazuje wypelnienie kolumny od lewej
Rozdzia 3. Typy danych | 23
strony zerami podczas wy wietlania jej warto ci. O liczbie tych zer
decyduje szeroko wy wietlania danej kolumny.
BIGINT
BIGINT[(rozmiar_wy wietlany)] [AUTO_INCREMENT] [UNSIGNED]
[ZEROFILL]
Rozmiar w pami ci
8 bajtów
Opis
Najwi kszy z typów calkowitoliczbowych, pozwalaj cy zapisywa
liczby od 9 223 372 036 854 775 808 do 9 223 372 036 854 775 807
(je li bez znaku, to od 0 do 18 446 744 073 709 551 615). Z uwagi
na sposób realizacji dziala na liczbach tego typu, nale y
unika operacji na liczbach BIGINT bez znaku wi kszych ni
9 223 372 036 854 775 807, gdy mo e to zaowocowa nieprawi-
dlowymi wynikami.
BIT
BIT[(bity)]
Rozmiar w pami ci
w przybli eniu bity bitów+7 lub 8 bitów
Opis
W wersjach MySQL 5.0.3 i starszych, pola typu BIT dzialaly tak
samo, jak TINYINT(1). Omawiany typ pola pozwala przechowy-
wa ustalon liczb bitów. Je li podana zostanie wielko bitów
mniejsza od dozwolonej, MySQL wypelni zerami bity od lewej
strony.
24 | MySQL. Leksykon kieszonkowy
DEC
Synonim typu DECIMAL.
DECIMAL
DECIMAL[(dok adno , [skala])] [UNSIGNED] [ZEROFILL]
Rozmiar w pami ci
ró nie
Opis
Pozwala zapisywa liczby zmiennoprzecinkowe w sytuacjach,
kiedy istotna jest dokladno na przyklad przy operowaniu
kwotami pieni dzy. Stosuj c typ DECIMAL, trzeba poda dwa jego
parametry, dokladno i skal . Dokladno to liczba znacz cych
cyfr, za skala to liczba znacz cych cyfr po kropce dziesi tnej.
Przykladowo, kolumna SALDO typu DECIMAL(9,2) pozwolilaby
zapisywa liczby dziewi ciocyfrowe, przy czym na prawo od
kropki dziesi tnej moglyby by dwie cyfry. Zakres dopuszczal-
nych liczb to w takiej sytuacji od 9 999 999,99 do 9 999 999,99.
Je li podana zostanie liczba zawieraj ca wi cej cyfr po przecinku,
ni przewiduje to definicja, liczba zostanie zaokr glona. Warto ci
spoza zakresu DECIMAL s obcinane tak, aby si w nim zmie cily.
W wersjach MySQL starszych ni 5, warto ci DECIMAL nie byly
zapisywane jako liczby zmiennoprzecinkowe, lecz jako la cuchy
znaków. Na ka d cyfr zu ywany byl jeden znak w przypadku
skali wi kszej od 0, poza tym jeden dodatkowy znak zu ywany
jest w przypadku liczb ujemnych. Je li skala wynosi 0, liczby nie
maj cz ci ulamkowej.
SQL zgodnie z norm ANSI pozwala pomija dokladno i (lub)
skal . Je li brak dokladno ci, przyjmowane jest ustawienie
Rozdzia 3. Typy danych | 25
domy lne charakterystyczne dla implementacji. Je li brak skali,
przyjmowane jest zero. W MySQL domy lna warto dokladno-
ci to 10.
DOUBLE
DOUBLE[(rozmiar_wy wietlany, cyfr)] [ZEROFILL]
Rozmiar w pami ci
8 bajtów
Opis
Liczba zmiennoprzecinkowa podwójnej precyzji. Ten typ da-
nych pozwala zapisywa du e warto ci zmiennoprzecinkowe.
W kolumnach tego typu mo na zapisa warto ci ujemne od
1,7976931348623157E+308 do 2,2250738585072014E 308,
0 oraz warto ci dodatnie od 2,2250738585072014E 308 do
1,7976931348623157E+308.
DOUBLE PRECISION
Synonim DOUBLE.
FLOAT
FLOAT[(rozmiar_wy wietlany, cyfr)] [ZEROFILL]
Rozmiar w pami ci
4 bajty
26 | MySQL. Leksykon kieszonkowy
Opis
Liczba zmiennoprzecinkowa pojedynczej precyzji. Ten typ da-
nych pozwala zapisywa male warto ci zmiennoprzecinkowe.
W kolumnach tego typu mo na zapisa warto ci ujemne od
3,402823466E+38 do 1,175494351E 38, 0 oraz warto ci dodatnie
od 1,175494351E 38 do 3,402823466E+38.
INT
INT[(rozmiar_wy wietlany)] [AUTO_INCREMENT] [UNSIGNED]
[ZEROFILL]
Rozmiar w pami ci
4 bajty
Opis
Podstawowy rodzaj liczb calkowitych od 2 147 483 648 do
2 147 483 647 (lub od 0 do 4 294 967 295 w przypadku liczb bez
znaku).
INTEGER
Synonim INT.
MEDIUMINT
MEDIUMINT[(rozmiar_wy wietlany)] [AUTO_INCREMENT] [UNSIGNED]
[ZEROFILL]
Rozmiar w pami ci
3 bajty
Rozdzia 3. Typy danych | 27
Opis
Liczby calkowite od 8 388 608 do 8 388 607 (lub od 0 do 16 777 215
w przypadku liczb bez znaku).
NUMERIC
Synonim DECIMAL.
REAL
Synonim DOUBLE.
SMALLINT
SMALLINT[(rozmiar_wy wietlany)] [AUTO_INCREMENT] [UNSIGNED]
[ZEROFILL]
Rozmiar w pami ci
2 bajty
Opis
Liczby calkowite z zakresu od 32 768 do 32 767 (od 0 do 65 535
w przypadku liczb bez znaku).
TINYINT
TINYINT[(rozmiar_wy wietlany)] [AUTO_INCREMENT] [UNSIGNED]
[ZEROFILL]
Rozmiar w pami ci
1 bajt
28 | MySQL. Leksykon kieszonkowy
Opis
Liczby calkowite od 128 do 127 (od 0 do 255 w przypadku
liczb bez znaku).
a cuchy
MySQL obsluguje dwie kategorie la cuchów: la cuchy tekstowe
oraz la cuchy binarne. Obie kategorie maj swoje specyficzne
typy do obslugi ró nych wielko ci pól i ró nych sposobów po-
równywania warto ci. W zale no ci od sposobu porównywania,
mo na uwzgl dnia b d nie wielko liter, mo na te porówny-
wa dane binarnie (bajt po bajcie).
Kiedy nazwa typu tekstowego (jak CHAR, VARCHAR i inne) zostanie
oznaczona slowem kluczowym BINARY, kolumna pozostaje ko-
lumn tekstow , ale dane s porównywane ze sob binarnie.
BINARY
BINARY(rozmiar)
Rozmiar
wedlug rozmiar, w zakresie od 0 do 255
Rozmiar w pami ci
rozmiar bajtów
Opis
Typ danych BINARY to binarny odpowiednik typu CHAR. Podsta-
wowa ró nica mi dzy tymi dwoma typami polega na tym, e pole
typu BINARY zawiera dane binarne, wielko tych danych jest
mierzona nie w znakach, lecz w bajtach. a cuchy zawieraj ce
Rozdzia 3. Typy danych | 29
mniej znaków, ni to wynika z rozmiaru kolumny, wypelniane
s po prawej stronie znakami 0x00 (wersja MySQL 5.0.5 i now-
sze) lub spacjami (wersje starsze).
BLOB
Binarny odpowiednik typu TEXT.
CHAR
CHAR(rozmiar) [BINARY] [CHARACTER SET zestaw]
[COLLATE porównywanie]
Rozmiar
wedlug rozmiar, do 255
Rozmiar w pami ci
zale ny od rozmiaru i od u ytego zestawu znaków
Opis
Pole tekstowe ustalonej dlugo ci. a cuchy zawieraj ce mniej
znaków, ni to wynika z rozmiaru kolumny, wypelniane s po
prawej stronie spacjami. Podczas pobierania danych z bazy te
dodatkowe spacje s usuwane.
Pola CHAR(0) zostaly zachowane w celu zapewnienia zgodno ci ze
starymi systemami, w których w kolumnach nie s zapisywane
adne warto ci.
CHARACTER
Synonim CHAR.
30 | MySQL. Leksykon kieszonkowy
CHARACTER VARYING
Synonim VARCHAR.
LONGBLOB
Binarny odpowiednik LONGTEXT.
LONGTEXT
LONGTEXT [CHARACTER SET zestaw] [COLLATE porównywanie]
Rozmiar
0 do 4 294 295
Rozmiar w pami ci
Dlugo warto ci+4 bajty
Opis
Typ pozwala zapisywa du e warto ci tekstowe. Teoretyczne
ograniczenie rozmiaru tekstu to ponad 4 GB, ale praktycznymi
ograniczeniami s ograniczenia protokolu komunikacyjnego
MySQL oraz ilo pami ci przeznaczonej na komunikacj na ser-
werze i na stacji klienckiej.
MEDIUMBLOB
Binarna posta MEDIUMTEXT.
MEDIUMTEXT
MEDIUMTEXT [CHARACTER SET zestaw] [COLLATE porównywanie]
Rozdzia 3. Typy danych | 31
Rozmiar
0 do 16 777 215
Rozmiar w pami ci
Dlugo warto ci+3 bajty
Opis
Typ pozwala zapisywa redniej wielko ci warto ci tekstowe.
NCHAR
Synonim CHAR.
NATIONAL CHAR
Synonim CHAR.
NATIONAL CHARACTER
Synonim CHAR.
NATIONAL VARCHAR
Synonim VARCHAR.
TEXT
TEXT [CHARACTER SET zestaw] [COLLATE porównywanie]
Rozmiar
0 do 65 535
32 | MySQL. Leksykon kieszonkowy
Rozmiar w pami ci
Dlugo warto ci tekstowej+2 bajty
Opis
Typ pozwala zapisywa typowe warto ci tekstowe.
TINYBLOB
Binarny odpowiednik TINYTEXT.
TINYTEXT
TINYTEXT [CHARACTER SET zestaw] [COLLATE porównywanie]
Rozmiar
0 do 255
Rozmiar w pami ci
Dlugo warto ci tekstowej+1 bajt
Opis
Pozwala zapisywa krótkie dane tekstowe.
VARBINARY
VARBINARY(rozmiar)
Rozmiar
Wedlug parametru rozmiar
Rozdzia 3. Typy danych | 33
Rozmiar w pami ci
rozmiar bajtów
Opis
Jest to binarna odmiana typu VARCHAR. Podstawowa ró nica polega
na tym, e zapisywane s dane binarne, a rozmiar pola mierzony
jest w bajtach, nie w znakach. Wielko ci typu VARBINARY, w prze-
ciwie stwie do warto ci typu BINARY, nie s niczym dopelniane.
VARCHAR
VARCHAR(rozmiar) [BINARY] [CHARACTER SET zestaw]
[COLLATE porównywanie]
Rozmiar
Wskazana przez rozmiar warto z zakresu do 65 532 (od 1 do
255 w wersjach wcze niejszych ni MySQL 5); rozmiar wskazuje
rzeczywist wielko kolumny i jest ograniczony przez dopusz-
czaln wielko wiersza w znakach; to, ile miejsca faktycznie
b dzie potrzebne, zale y zatem od zestawu znaków u ytego
w danej kolumnie
Rozmiar w pami ci
Zale y od liczby znaków wskazanych jako rozmiar oraz od liczby
bajtów potrzebnych do zapisu poszczególnych znaków w u ytym
mechanizmie kodowania znaków
Opis
Pozwala zapisywa warto ci tekstowe zmiennej dlugo ci. W wer-
sjach poprzedzaj cych MySQL 5 z warto ci VARCHAR usuwane s
spacje ko cowe; wersja MySQL 5 i nowsze standardowo nie usu-
waj spacji ko cowych.
34 | MySQL. Leksykon kieszonkowy
Daty
Typy datowe MySQL s wyj tkowo elastycznym narz dziem,
pozwalaj cym zapisywa wszelki informacje dzienne. MySQL
jest bardzo tolerancyjny i zaklada, e to aplikacja, a nie baza da-
nych, ma sprawdza poprawno tych danych. MySQL sprawdza
jedynie, czy miesi c nie wykracza poza zakres 0 12 i czy dzie
nie wykracza poza zakres 0 31. Wobec tego z punktu widzenia
MySQL 31 lutego 2001 roku jest poprawn dat . Bardziej przy-
datn warto ci jest data 0 lutego 2001 roku; cyfra zero mo e
zast powa t cz daty, której dokladnie nie znamy. MySQL 5
jest jednak ju baz danych nieco bardziej restrykcyjn co do
warto ci, jakie mo na zapisywa w polach datowych.
Wprawdzie MySQL dopuszcza do du swobod formatów
wej ciowych dat, to nale y stara si w aplikacjach daty forma-
towa zgodnie z formatem wewn trznym MySQL w celu unikni -
cia nieporozumie . MySQL zawsze zaklada, e rok jest pierwszym
elementem po lewej stronie daty. Je li w operacji SQL podana
zostanie nieprawidlowa warto daty, MySQL wstawi w jej miej-
sce zero.
MySQL w kontek cie liczb calkowitych automatycznie konwertuje
daty i czas na liczby calkowite.
DATE
DATE
Format
YYYY-MM-DD (2001-01-01)
Rozmiar w pami ci
3 bajty
Rozdzia 3. Typy danych | 35
Opis
Data kalendarza gregoria skiego z zakresu od 1 stycznia 1000 roku
('1000-01-01') do 31 grudnia 9999 roku ('9999-12-31').
DATETIME
DATETIME
Format
YYY-MM-DD hh:mm:ss (2001-01-01 01:00:00)
Rozmiar w pami ci
8 bajtów
Opis
Zapisuje czas z zakresu od 00:00:00 1 stycznia 1000 roku ('1000-
01-01 00:00:00') do 23:59:59 31 grudnia 9999 ('9999-12-31
23:59:59') wedlug kalendarza gregoria skiego.
TIME
TIME
Format
hh:mm:ss (06:00:00)
Rozmiar w pami ci
3 bajty
Opis
Zapisuje czas od pólnocy ('00:00:00') do sekundy przed pólnoc
('23:59:59').
36 | MySQL. Leksykon kieszonkowy
TIMESTAMP
TIMESTAMP[(rozmiar_wy wietlania)]
Format
YYYY-MM-DD hh:mm:ss (2001-01-01 01:00:00)
Rozmiar w pami ci
4 bajty
Opis
Zapis chwili z dokladno ci do sekundy od pólnocy 1 stycznia
1970 roku do minuty przed pólnoc 31 grudnia 2037 roku. Pod-
stawowym zastosowaniem tego typu jest rejestracja modyfikacji
tabel. Przy wstawianiu do takiej kolumny warto ci NULL wstawiane
s aktualna data i czas. W przypadku modyfikowania jakiejkol-
wiek warto ci w wierszu z kolumn TIMESTAMP pierwsza kolumna
tego typu zostanie zaktualizowana bie c dat i czasem.
Format danych TIMESTAMP znany z wcze niejszych wersji MySQL,
do 4.1 wl cznie, w wersji 5.1 nie jest ju obslugiwany.
YEAR
YEAR[(rozmiar)]
Format
YYYY (2001)
Rozmiar w pami ci
1 bajt
Rozdzia 3. Typy danych | 37
Opis
Pozwala zapisa rok z kalendarza gregoria skiego. Parametr roz-
miar umo liwia zapisywanie roku dwu- lub czterocyfrowo. Zakres
YEAR(4) rozci ga si od 1900 do 2155, dla YEAR(2) od 1970 do
2069. Domy lnie przyjmowane jest YEAR(4).
Typy z o one
Zlo one typy danych MySQL, ENUM i SET, s po prostu specjal-
nymi przypadkami typów la cuchowych. Opisujemy je osobno,
gdy s bardziej zlo one poj ciowo i stanowi wprowadzenie do
typów danych SQL3, które by mo e MySQL b dzie obslugiwal
w przyszlo ci.
ENUM
ENUM(warto 1, warto 2, ...)
Rozmiar w pami ci
1 255 elementów: 1 bajt
255 65 535 elementów: 2 bajty
Opis
Typ danych ENUM pozwala zapisywa jeden z wielu zdefiniowa-
nych wcze niej la cuchów. Przy tworzeniu kolumny typu ENUM
podaje si list dopuszczalnych jej warto ci. Dane mog by do tej
kolumny wstawiane i aktualizowane jedynie z tej listy; ka da
próba wstawienia warto ci spoza niej powoduje wstawienie pu-
stego la cucha.
38 | MySQL. Leksykon kieszonkowy
Czytaj dalej...
Wyszukiwarka
Podobne podstrony:
informatyka excel 2007 pl leksykon kieszonkowy wydanie ii curt frye ebookMySQL Leksykon kieszonkowy Wydanie II msqll2SQL Leksykon kieszonkowy Wydanie II sqllk2Wyrazenia regularne Leksykon kieszonkowy Wydanie II wyrlk2Wyrazenia regularne Leksykon kieszonkowy Wydanie II wyrlk2Fotografia Cyfrowa Leksykon Kieszonkowy Wydanie IINagrywanie plyt CD i DVD Leksykon kieszonkowy Wydanie IIC 3 0 Leksykon kieszonkowy Wydanie II cshlk2informatyka internet ilustrowany przewodnik wydanie ii radoslaw sokol ebookinformatyka internet pierwsza pomoc wydanie ii maria sokol ebookPHP i MySQL Dla kazdego Wydanie II phmdk2MySQL Leksykon kieszonkowy msqllkMySQL?rmowa?za?nych cwiczenia praktyczne Wydanie II cwmsq2więcej podobnych podstron