You are on page 1of 22

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

MySQL. Podstawy
Autorzy: Luke Welling, Laura Thomson
Tumaczenie: Marek Koszykowski
ISBN: 83-7361-689-6
Tytu oryginau: MySQL Tutorial
Format: B5, stron: 280

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

Poznaj ogromne moliwoci MySQL-a


MySQL. Podstawy to wprowadzenie do pracy z MySQL. Opisuje system od strony
uytkowej przedstawia zasady tworzenia baz i tabel, definiowania indeksw i kluczy
oraz stosowania jzyka SQL do wprowadzania danych i wybierania ich z tabel. Omawia
rwnie zagadnienia bardziej zaawansowane mechanizmy transakcji. Jeli chcesz
dowiedzie si czego o administrowaniu baz MySQL, znajdziesz tu rwnie informacje
na ten temat od sposobw definiowania uprawnie uytkownikw a po precyzyjne
strojenie bazy za pomoc odpowiednich opcji konfiguracyjnych, wykonywania kopii
bazy oraz zabezpieczanie zgromadzonych w niej danych przed atakami z zewntrz.
Instalacja MySQL
Struktura katalogw i plikw w bazie MySQL
Tworzenie baz, tabel i indeksw
Operacje na danych z wykorzystaniem jzyka SQL
Zoone zapytania
Typy tabel i transakcje
Administrowanie kontami uytkownikw
Administrowanie baz danych
Tworzenie kopii zapasowych baz danych
Zabezpieczanie danych
Optymalizacja serwera i baz danych

Spis treci
O Autorach ...................................................................................... 11
Wprowadzenie ................................................................................. 13

Cz I

Podstawy MySQL ...........................................................21

Rozdzia 1. Instalacja MySQL............................................................................. 23


Instalacja w systemie Linux ............................................................................................ 24
Instalacja w systemie Windows....................................................................................... 24
Instalacja w systemie Mac OS X..................................................................................... 26
Konfiguracja systemu...................................................................................................... 27
Sprawdzanie, czy system dziaa ...................................................................................... 28
Ustalanie hasa administratora......................................................................................... 29
Usuwanie kont anonimowych ......................................................................................... 30
Tworzenie konta do podstawowego uytku..................................................................... 30
Podsumowanie ................................................................................................................ 30

Rozdzia 2. Szybkie wprowadzenie ..................................................................... 33


Struktura katalogw MySQL........................................................................................... 33
Przegld plikw wykonywalnych.................................................................................... 34
Przegld interfejsw uytkownika................................................................................... 35
Szybkie wprowadzenie do programu MySQL Monitor................................................... 36
Podsumowanie ................................................................................................................ 38

Cz II

Projektowanie i tworzenie baz danych w MySQL...............41

Rozdzia 3. Byskawiczny kurs tworzenia bazy danych......................................... 43


Pojcia i terminologia baz danych................................................................................... 43
Obiekty i relacje ........................................................................................................ 43
Relacje i tabele .......................................................................................................... 44
Kolumny lub atrybuty ............................................................................................... 45
Wiersze, rekordy i krotki........................................................................................... 45
Klucze ....................................................................................................................... 45
Zalenoci funkcyjne ................................................................................................ 46
Schematy................................................................................................................... 46

Spis treci
Zasady konstruowania bazy danych ................................................................................ 46
Redundancja (nadmiarowo danych) kontra strata danych...................................... 47
Anomalie................................................................................................................... 48
Wartoci Null (puste) ................................................................................................ 48
Normalizacja ................................................................................................................... 49
Pierwsza posta normalna bazy danych .................................................................... 49
Druga posta normalna bazy danych......................................................................... 51
Trzecia posta normalna bazy danych....................................................................... 52
Posta normalna Boyce-Codda ................................................................................. 53
Kolejne postaci normalne.......................................................................................... 53
Podsumowanie ................................................................................................................ 54

Rozdzia 4. Tworzenie baz danych, tabel i indeksw............................................ 57


Rozrnianie wielkoci liter ............................................................................................ 58
Identyfikatory w MySQL ................................................................................................ 59
Tworzenie bazy danych................................................................................................... 59
Wybieranie bazy danych ................................................................................................. 60
Tworzenie tabel ............................................................................................................... 60
Przykad tworzenia tabeli .......................................................................................... 60
Instrukcja CREATE TABLE..................................................................................... 64
Typy kolumn i danych w MySQL ................................................................................... 68
Typy liczbowe........................................................................................................... 68
Typy acuchowe i tekstowe ..................................................................................... 69
Typy daty i czasu ...................................................................................................... 71
Tworzenie indeksw........................................................................................................ 71
Usuwanie baz danych, tabel i indeksw .......................................................................... 72
Zmiana istniejcych struktur tabeli.................................................................................. 73
Podsumowanie ................................................................................................................ 74

Cz III Uywanie MySQL............................................................81


Rozdzia 5. Wstawianie, usuwanie i aktualizacja danych..................................... 83
Instrukcja INSERT .......................................................................................................... 83
Instrukcja REPLACE ...................................................................................................... 87
Instrukcja DELETE......................................................................................................... 88
Instrukcja TRUNCATE................................................................................................... 90
Instrukcja UPDATE ........................................................................................................ 90
Wczytywanie danych za pomoc instrukcji LOAD DATA INFILE ............................... 91
Podsumowanie ................................................................................................................ 93

Rozdzia 6. Zapytania w MySQL ......................................................................... 99


Podstawowy wzorzec instrukcji SELECT....................................................................... 100
Proste zapytania............................................................................................................. 100
Wybieranie okrelonych kolumn................................................................................... 101
Adresowanie bezwzgldne baz danych i tabel .............................................................. 101
Aliasy ............................................................................................................................ 102
Uywanie warunku WHERE do wybierania okrelonych wierszy................................ 103
Usuwanie duplikatw sowem kluczowym DISTINCT ................................................ 105
Uywanie opcji GROUP BY......................................................................................... 106
Wybieranie okrelonych grup za pomoc opcji HAVING ............................................ 107
Sortowanie uzyskanych wynikw przy uyciu ORDER BY ......................................... 108
Ograniczanie wynikw wyszukiwania za pomoc opcji LIMIT ................................... 109
Podsumowanie .............................................................................................................. 110

Spis treci

Rozdzia 7. Zapytania zaawansowane .............................................................. 115


Uywanie zcze do przeprowadzania zapyta w odniesieniu do wielu tabel ............. 115
czenie dwch tabel.............................................................................................. 116
czenie wielu tabel................................................................................................ 117
czenie tabeli z sam sob samozczenie ....................................................... 119
Rne typy zcze........................................................................................................ 119
Podstawowe zczenie............................................................................................. 120
Lewe i prawe zczenia ........................................................................................... 120
Podzapytania ................................................................................................................. 121
Uywanie podzapyta tabel pochodnych ................................................................ 122
Uywanie podzapyta jednowartociowych............................................................ 122
Uywanie podzapyta z wyraeniami logicznymi .................................................. 123
Opcje instrukcji SELECT.............................................................................................. 125
Podsumowanie .............................................................................................................. 126

Rozdzia 8. Uywanie wbudowanych funkcji MySQL


w poczeniu z instrukcj SELECT................................................... 131
Operatory....................................................................................................................... 132
Operatory arytmetyczne .......................................................................................... 132
Operatory porwnania............................................................................................. 132
Operatory logiczne .................................................................................................. 133
Funkcje sterowania przebiegiem wykonania ................................................................. 135
Funkcje operujce na acuchach .................................................................................. 136
Funkcje dziaajce na acuchach ........................................................................... 136
Funkcje porwnujce acuchy ............................................................................... 137
Funkcje liczbowe........................................................................................................... 140
Funkcje daty i czasu ...................................................................................................... 141
Funkcje konwertowania................................................................................................. 142
Inne funkcje................................................................................................................... 143
Funkcje uywane w klauzulach GROUP BY ................................................................ 143
Podsumowanie .............................................................................................................. 144

Cz IV Typy tabel i transakcje w MySQL ..................................147


Rozdzia 9. Typy tabel MySQL .......................................................................... 149
Tabele ISAM ................................................................................................................. 150
Tabele MyISAM ........................................................................................................... 151
Kompresowanie tabel MyISAM ............................................................................. 153
Wyszukiwanie penotekstowe w tabelach MyISAM............................................... 153
Tabele InnoDB .............................................................................................................. 156
Tabele BerkeleyDB (BDB) ........................................................................................... 157
Tabele MERGE ............................................................................................................. 158
Tabele HEAP ................................................................................................................ 159
Podsumowanie .............................................................................................................. 160

Rozdzia 10. Transakcje w tabelach InnoDB ....................................................... 165


Co to s transakcje?....................................................................................................... 165
Uywanie transakcji w MySQL .................................................................................... 168
Ustawianie trybu autocommit ................................................................................. 169
Uywanie blokad..................................................................................................... 170
Model transakcji tabel InnoDB ..................................................................................... 171
Zgodno z waciwociami ACID ......................................................................... 171
Izolowanie transakcji .............................................................................................. 172
Podsumowanie .............................................................................................................. 174

Cz V

Spis treci

Administracja systemem MySQL ...................................177

Rozdzia 11. Zarzdzanie uprawnieniami uytkownikw ...................................... 179


Tworzenie kont uytkownikw za pomoc instrukcji GRANT oraz REVOKE ............ 179
Nadawanie uprawnie............................................................................................. 180
Poziomy uprawnie....................................................................................................... 181
Uprawnienia uytkownika....................................................................................... 181
Uprawnienia administratora .................................................................................... 181
Sprawdzanie uprawnie ................................................................................................ 183
Instrukcja REVOKE...................................................................................................... 183
Tabele uprawnie .......................................................................................................... 184
Tabela user .............................................................................................................. 184
Tabela db................................................................................................................. 185
Tabela host .............................................................................................................. 186
Tabela tables_priv ................................................................................................... 186
Tabela columns_priv............................................................................................... 187
Podsumowanie .............................................................................................................. 187

Rozdzia 12. Konfiguracja MySQL....................................................................... 191


Opcje konfiguracyjne MySQL ...................................................................................... 191
Opcje serwera mysqld ............................................................................................. 194
Opcje konfiguracyjne InnoDB ...................................................................................... 194
Opcje konfiguracyjne dla wielu serwerw .................................................................... 195
Konfiguracja zestawu znakw narodowych .................................................................. 196
Podsumowanie .............................................................................................................. 197

Rozdzia 13. Administrowanie baz danych ........................................................ 201


Uruchamianie i wyczanie serwera MySQL ................................................................ 201
Uzyskiwanie informacji o serwerze i bazach danych .................................................... 202
Uzyskiwanie informacji o bazie danych.................................................................. 202
Wywietlanie informacji o stanie serwera oraz o wartociach jego zmiennych ...... 204
Wywietlanie informacji o procesach ..................................................................... 205
Wywietlanie informacji o przyznanych uprawnieniach ........................................... 205
Wywietlanie informacji o tabelach ........................................................................ 206
Konfigurowanie zmiennych .......................................................................................... 206
Likwidowanie wtkw .................................................................................................. 207
Oprnianie buforw..................................................................................................... 207
Pliki dziennikw............................................................................................................ 207
Podsumowanie wiadomoci o opcjach skryptu mysqladmin................................... 208
Podsumowanie .............................................................................................................. 209

Rozdzia 14. Kopie zapasowe i odzyskiwanie baz danych ...................................... 211


Tworzenie kopii zapasowych i odzyskiwanie baz danych............................................. 211
Tworzenie kopii zapasowych i odzyskiwanie baz danych
przy uyciu skryptu mysqldump........................................................................... 212
Tworzenie kopii zapasowych i odzyskiwanie baz danych
przy uyciu skryptu mysqlhotcopy ....................................................................... 216
Rczne tworzenie kopii zapasowych i odzyskiwanie baz danych ........................... 217
Tworzenie kopii zapasowych i odzyskiwanie baz danych
przy uyciu instrukcji BACKUP TABLE oraz RESTORE TABLE..................... 218
Przywracanie bazy danych z dziennika binarnego .................................................. 218

Spis treci

9
Testowanie kopii zapasowej.......................................................................................... 219
Sprawdzanie i naprawianie tabel ................................................................................... 219
Sprawdzanie i naprawianie tabel przy uyciu polece CHECK i REPAIR............. 220
Sprawdzanie i naprawianie tabel przy uyciu skryptu myisamchk ......................... 221
Sprawdzanie i naprawianie tabel przy uyciu skryptu mysqlcheck......................... 221
Podsumowanie .............................................................................................................. 222

Rozdzia 15. Zabezpieczanie systemu MySQL..................................................... 225


Sposb dziaania systemu uprawnie w praktyce.......................................................... 225
Bezpieczestwo kont..................................................................................................... 226
Wprowadzenie hasa dla konta root ........................................................................ 226
Usuwanie kont anonimowych ................................................................................. 226
Niebezpieczne uprawnienia..................................................................................... 227
Hasa i szyfrowanie ................................................................................................. 227
Bezpieczestwo plikw MySQL ................................................................................... 228
Nie uruchamiaj mysqld jako administrator ............................................................. 228
Dostp i uprawnienia w systemie operacyjnym ...................................................... 228
Filtrowanie danych uytkownika................................................................................... 229
Inne wskazwki............................................................................................................. 229
Poczenia SSL ....................................................................................................... 229
Bezpieczestwo fizyczne systemu .......................................................................... 230
Podsumowanie .............................................................................................................. 230

Rozdzia 16. Replikacja bazy danych.................................................................. 233


Podstawy replikacji ....................................................................................................... 233
Uwagi na temat wersji............................................................................................. 235
Konfiguracja systemu dla replikacji .............................................................................. 235
Tworzenie uytkownika replikacji .......................................................................... 235
Sprawdzenie konfiguracji serwera nadrzdnego ..................................................... 236
Tworzenie obrazu bazy danych serwera nadrzdnego ............................................ 237
Konfigurowanie serwerw podrzdnych................................................................. 238
Uruchamianie serwerw podrzdnych .................................................................... 239
Topologie zaawansowane.............................................................................................. 240
Przyszo replikacji...................................................................................................... 241
Podsumowanie .............................................................................................................. 241

Cz VI Optymalizacja MySQL ...................................................245


Rozdzia 17. Optymalizacja konfiguracji serwera MySQL ..................................... 247
Kompilowanie w celu uzyskania wikszej szybkoci dziaania serwera ....................... 247
Dostrajanie parametrw serwera ................................................................................... 248
Dostosowywanie innych czynnikw ............................................................................. 250
Podsumowanie .............................................................................................................. 250

Rozdzia 18. Optymalizacja bazy danych............................................................. 253


Co dziaa wolno w bazie danych MySQL? ................................................................... 253
Podejmowanie waciwych wyborw przy projektowaniu bazy danych ....................... 254
Tworzenie indeksw w celu optymalizacji.................................................................... 255
Instrukcja ANALYZE TABLE ..................................................................................... 256
Instrukcja OPTIMIZE TABLE...................................................................................... 256
Podsumowanie .............................................................................................................. 257

10

Spis treci

Rozdzia 19. Optymalizacja zapyta ................................................................... 261


Znajdowanie wolno realizowanych zapyta.................................................................. 261
Przeprowadzanie testw wzorcowych ........................................................................... 262
Korzystanie z dziennika wolno realizowanych zapyta ................................................ 263
Uywanie instrukcji EXPLAIN, w celu sprawdzenia,
w jaki sposb zapytania s przeprowadzane ............................................................... 263
Wbudowana optymalizacja zapyta MySQL ................................................................ 266
Wskazwki optymalizacyjne......................................................................................... 266
Podsumowanie .............................................................................................................. 267

Dodatki ......................................................................................269
Skorowidz...................................................................................... 271

Rozdzia 5.

Wstawianie, usuwanie
i aktualizacja danych
W tym rozdziale zobaczymy, w jaki sposb wstawia i zmienia dane w bazie danych
MySQL przy uyciu instrukcji ,  oraz
 .
Omwimy nastpujce zagadnienia:
 Uywanie instrukcji 
 Uywanie instrukcji 
 Uywanie instrukcji
 
 Wczytywanie danych za pomoc instrukcji     
 Korzystanie z instrukcji 
  i   

Przeszlimy teraz do stosowania jzyka wybierania i manipulowania danymi (DML).


Gdy nauczymy si wstawia dane do baz danych, w nastpnych kilku rozdziaach poznamy rne sposoby pobierania danych z tych baz.

Instrukcja INSERT
Instrukcja  jest uywana do wstawiania wierszy do tabeli. Zacznijmy od przykadu.
Jak ju wczeniej mwilimy, instrukcje mona wpisywa bezporednio w programie
MySQL Monitor lub zapisywa je w pliku.
Przykady instrukcji  s pokazane w listingu 5.1.
Listing 5.1. pracownik_dane.sql


 
 

84

Rozdzia 5. Wstawianie, usuwanie i aktualizacja danych


  
 
  
   ! 
"#
$%&&'
$%&&(  )
 

  

*+,-
$
  ) 
.  '
   / 0
11+2 #3 ) 
.441 /5   "

  #  3

   #  3

*+,5
*+,3
*+,6
.7 
11+8 
11+6
.441$9
.441& :
    
     
$%&&9 ;2<$
=
6 $
 .+++,
$%&&  <  
44=
&09 .+++,
  
   
*+,44,>4>4<+

Widzimy, e zanim wstawimy dane do kadej tabeli, uywamy polecenia . Nie
jest to konieczne, ale w ten sposb zostan usunite ewentualne dane prbne, ktre
mogy ju zosta umieszczone w tabeli. Do instrukcji  przejdziemy w dalszym
podrozdziale.
Zauwamy rwnie, e wstawilimy te same dane, ktrych uywalimy w przykadach
z rozdziau 3., Byskawiczny kurs tworzenia bazy danych. Dodalimy te nowe wiersze.
Wszystkie instrukcje  s bardzo podobne. Spjrzmy na pierwsz, aby zobaczy,
jak dziaa.
  
 
  
   ! 
"#
$%&&'
$%&&(  )

Tabel, do ktrej chcemy wstawi dane, okrelamy w pierwszym wierszu w tym


przykadzie jest to tabela . Umieszczamy w niej cztery wiersze. Jak pamitamy,
tabela  miaa dwie kolumny  i  (mona sprawdzi to samodzielnie, uywajc polecenia  ).

Instrukcja INSERT

85

W pierwszych dwch wierszach okrelilimy warto identyfikatora wydziau, ktrej


chcielimy uy. Spjrzmy jeszcze raz na definicj . Przypomnijmy, e
w ostatnim rozdziale deklarowalimy identyfikator wydziau jako:
     ! "! #

Poniewa jest to kolumna  !, moemy ustali warto lub pozwoli, aby
MySQL wybra j za nas (zwykle w takich kolumnach nie podaje si liczby samemu,
ale mog istnie sytuacje takie jak ta, w ktrej mamy ju istniejc warto do zastosowania).
W wierszach z wydziaami $ oraz %  &' pozostawilimy kolumn 
 pust (ma warto  ). Zadziaa wwczas opcja  !, powodujc przydzielenie odpowiednich wartoci. Zobaczmy, jaki bdzie wynik dziaania
instrukcji .
Jeeli przejrzymy rne instrukcje  z przykadu, zobaczymy, e dane typu acucha znakowego i daty ujlimy w apostrofy, na przykad (%  &'(. Z kolei
danych typu liczbowego nie naley ujmowa w apostrofy.
A co powinnimy zrobi, gdy dane, ktre znajduj si midzy apostrofami, same zawieraj apostrofy? Odpowiedzi jest oznaczenie apostrofw znakami sterujcymi. Mwic
prosto, powinnimy wpisa lewy ukonik ()) przed znakiem apostrofu, na przykad
( )((.
Oczywicie rodzi si nastpne pytanie Co zrobi, jeeli chcemy wstawi lewy ukonik jako zwyky znak, a nie znak o specjalnym znaczeniu? Musimy uciec od niego
w ten sam sposb zamiast jednego ukonika, powinnimy wpisa dwa ())*.
Dane z bazy danych pobieramy przy uyciu instrukcji . T instrukcj omwimy
obszernie w kolejnych kilku rozdziaach. Teraz wystarczy, abymy wiedzieli, e wpisanie
? 

zwrci wszystkie dane obecnie przechowywane w tabeli.


Jeeli wpiszemy:
? 
 

powinien pojawi si nastpujcy wynik:


@>>>>>>>>>>>>@>>>>>>>>>>>>>>>>>>@
AB7
 A 
A
@>>>>>>>>>>>>@>>>>>>>>>>>>>>>>>>@
AA  A
AA   ! 
"#A
A.A'A
A,4A(  )A
@>>>>>>>>>>>>@>>>>>>>>>>>>>>>>>>@

 4<4

Moemy zauway, e wynikiem dziaania opcji  ! jest warto o jeden
wiksza ni najwiksza warto w kolumnie.

86

Rozdzia 5. Wstawianie, usuwanie i aktualizacja danych

Oglny wzorzec instrukcji  wedug podrcznika MySQL jest nastpujcy:


B$;-!9C&D=E3!BD!B9FA7-&2F-7GCBH$D!-G
CB$9DGC
IG
82&%-;   A7-2%&9III
CD$7%3&B529-'-F%3729-
   IG
/B$;-!9CC&D=E3!BD!B9FA7-&2F-7GCBH$D!-G
CB$9DGC
IG
;-&-59I
/B$;-!9CC&D=E3!BD!B9FA7-&2F-7GCBH$D!-G
CB$9DG
;-9
J   A7-2%&9I
CD$7%3&B529-'-F%3729-
   IG

Wszystkie przykady, ktre widzielimy do tej pory, s zgodne z pierwszym wzorcem.


Zauwamy, e sowo kluczowe  jest opcjonalne. Moglibymy je opuci i zacz
instrukcj od  "# +, ale uwaamy, e dziki sowu  powstaa
skadnia jest nieco atwiejsza do zrozumienia dla osb znajcych angielski.
Korzystajc z pierwszego wzorca, musimy poda wszystkie wartoci dla kadej kolumny
w kadym wierszu w tej samej kolejnoci, w jakiej kolumny s umieszczone w tabeli.
Musimy, na przykad, najpierw poda , a potem nazw, poniewa taka jest
struktura tabeli . Jak pokazano, ten wzorzec pozwala wstawi wiele wierszy do
tabeli za pomoc pojedynczej instrukcji .
Drugi wzorzec koczy si instrukcj . Zamiast wstawiania wartoci rcznie,
umoliwia nam pobranie danych z innej tabeli lub tabel bazy danych i zachowanie tych
wartoci w tabeli.
Trzeci wzorzec pozwala sprecyzowa, do ktrych kolumn maj by wstawiane dane.
Przykad uycia instrukcji , zgodnej z tym wzorcem, jest nastpujcy:
  
 
 
JKL  
 

W instrukcji zgodnej z tym wzorcem mona wstawi za jednym razem tylko jeden
wiersz, ale nie jest konieczne podawanie wartoci dla wszystkich kolumn. W naszym
przykadzie sprecyzowalimy tylko warto dla pola . Wszystkie niepodane wartoci przyjm albo warto domyln, jeeli zostaa okrelona, albo warto  . W tym
przykadzie  przyjmie warto  , co sprawi, e zadziaa magia opcji 
! i wygenerowana zostanie warto dla identyfikatora wydziau (mona to
sprawdzi, wpisujc jeszcze raz  , -! ).
W instrukcji  wystpuje wiele klauzul opcjonalnych. Przejrzyjmy je krtko, aby
zorientowa si, do czego su:
 Moemy zastosowa opcje  .
 / lub  /. Powoduj one,

e wstawianie bdzie opnione do momentu, a aden klient nie bdzie


odczytywa tabeli. Rnica midzy nimi jest taka, e jeeli uyjemy opcji  .

 /, moemy by zmuszeni odczeka pewien czas, zanim bdziemy mogli


wprowadzi nastpne zapytanie. Przy opcji  / otrzymamy komunikat $

Instrukcja REPLACE

87

i bdziemy mogli kontynuowa wprowadzanie zapyta. Jednak powinnimy


pamita, e wstawienie zostanie wykonane, dopiero gdy tabela przestanie
by uywana.
 Opcja 0  jest przydatna zwaszcza przy wstawianiu wielu wierszy.

Zazwyczaj gdy jeden z wierszy, ktry prbujemy doda, koliduje z istniejcym


kluczem podstawowym lub wartoci unikaln, wystpi bd i wstawianie
zostanie anulowane. Jeeli uyjemy opcji 0 , bd zostanie zignorowany,
a wstawianie bdzie kontynuowane i nastpi prba dodania kolejnego wiersza.
 Moemy sprawi, aby kolumnie przypisana bya warto domylna, uywajc
opcji   do okrelenia tej wartoci.
 Opcja  
  $/
  pozwala poradzi sobie z kolizjami kluczy

podstawowych i wartoci unikalnych. Po tym wyraeniu wpisujemy instrukcj


", ktrej moemy uy do takiej zmiany wartoci unikalnej (lub klucza
podstawowego) obecnej w tabeli, aby nie kolidowaa ona ju z wstawianym
wierszem.
Poniszy krtki przykad ilustruje typowe uycie opcji  
  $/


 :

/  
B7
      
B7

   
JB 7 
    B7

11+
    J  @

Opcja ta jest przydatna nie tylko w sytuacjach zwizanych z rekordami


unikalnymi, ale rwnie gdy chcemy wykona jakie dziaanie, takie jak
zwikszenie licznika dla nieunikalnych zdarze. Dobrym przykadem
przydatnoci tej opcji jest dowolny rodzaj logowania. Jednak aby pozosta
przy przykadzie bazy danych "#, w tabeli QUVT\G\GPKG bdziemy
przechowywa identyfikatory pracownikw, ktrzy otrzymali ostrzeenie.
Aby nanosi otrzymane ostrzeenia, uruchamiamy powysz instrukcj
. Poniewa warto domylna pola # jest rwna 1, a przy

wstawianiu nie podajemy innej jego wartoci, dlatego dla kadego pracownika
warto tego pola przy pierwszym wstawieniu bdzie rwna 1. Kolejne
uruchomienia instrukcji  dla tego samego "# spowoduj
wczanie opcji  
  $/
 , a przez to zwikszanie licznika.

Instrukcja REPLACE
Instrukcja 
  dziaa podobnie jak instrukcja . Rni si od niej wycznie
tym, e gdy przy wstawianiu wartoci pojawi si kolizja klucza, nowy wiersz zastpi
istniejcy.

Rozdzia 5. Wstawianie, usuwanie i aktualizacja danych

88

Oglny wzorzec instrukcji INSERT wedug podrcznika MySQL jest nastpujcy:


!-3&25-C&D=E3!BD!B9FA7-&2F-7G
CB$9DGC
IG
82&%-;   A7-2%&9III
/!-3&25-CC&D=E3!BD!B9FA7-&2F-7G
CB$9DGC
IG
;-&-59I
/!-3&25-CC&D=E3!BD!B9FA7-&2F-7G
CB$9DG
;-9
J   A7-2%&9I

Podobiestwo do instrukcji  powinno by oczywiste.

Instrukcja DELETE
Instrukcja SQL  pozwala usun wiersze z tabeli. W listingu 5.1 na przykad
wystpuje taka instrukcja:
 
 

W tym przykadzie instrukcja  spowoduje usunicie wszystkich wierszy z tabeli


. Moemy te poda, ktre wiersze maj zosta usunite, uywajc opcji .2,
na przykad:
 
 
0 
JKL  
 

Zostan wwczas usunite tylko te wiersze, ktre speniaj kryteria zawarte w klauzuli
.2. W tym przykadzie zostan usunite tylko te wiersze, dla ktrych nazwa wydziau
to (34 #!(.
Rzadko s usuwane wszystkie wiersze tabeli. Jednak poniewa jest to najkrtsza forma
instrukcji , moe si czasem zdarzy, e przez przypadek wpiszemy instrukcj
 bez klauzuli .2. Moemy zaoszczdzi sobie takich problemw, wczajc
opcj 55-5" lub 555!55!! w wierszu polecenia klienta mysql (jak to
zostao omwione w rozdziale 2., Szybkie wprowadzenie.) Te opcje zapobiegaj
usuniciu (lub aktualizacji) wierszy bez podania ograniczenia klucza w warunku .2.
Oznacza to, e naley ucili zamiar usunicia wierszy przez podanie okrelonej wartoci klucza.
W podrczniku MySQL oglny wzorzec instrukcji  jest nastpujcy:
7-&-9-C&D=E3!BD!B9FGCM%B5'G!D(

C=N-!-  G
CD!7-! FIG
C&B(B9  G
/

Instrukcja DELETE

89

7-&-9-C&D=E3!BD!B9FGCM%B5'G
C<?GC
C<?GIG
!D( 
  

C=N-!-  G
/
7-&-9-C&D=E3!BD!B9FGCM%B5'G
!D(
C<?GC
C<?GIG
%;B$H 
  

C=N-!-  G

Do tej pory uywalimy pierwszego wzorca instrukcji .


Pozostae dwa wzorce s zaprojektowane w celu umoliwienia usunicia wierszy z jednej
lub wikszej iloci tabel przy wykorzystaniu odwoania do innych tabel, na przykad:

 #  3

 
 #  3

 

0
<B7
J #  3
<B7

 
<B7
 J
 <B7
 
 
 < 
J  

W tym przykadzie usunito wszystkich pracownikw, ktrzy pracuj w wydziale 


 i usunito wszystkie rekordy zawierajce umiejtnoci tych pracownikw. Zauwamy, e wiersze s usuwane z tabel "# i !'
# (tabele
wymienione w pocztkowej czci klauzuli ), ale nie  (poniewa ta tabela
jest wymieniona tylko w klauzuli -!).
Z tabel wymienionych w pocztkowej klauzuli  zostan usunite wiersze. Natomiast tabele wymienione w wyraeniu -! zostan uyte do wyszukania danych i nie
zostan z nich usunite wiersze, jeeli nie wymieniono ich w klauzuli .
Zauwamy, e przykad ten jest dosy zoony, poniewa wykorzystane s w nim trzy
tabele! Tylu tabel jednak potrzebowalimy do zilustrowania dziaania instrukcji .
Zalecamy ponowne przejrzenie klauzuli .2 po przeczytaniu informacji na temat
zcze w rozdziale 7., Zapytania zaawansowane.
Uylimy kilku nowych elementw w warunku .2 operatora  oraz zapisu

. Zastosowalimy operator , aby poczy nasze warunki.  jest
to prosty operator logiczny I. Uylimy rwnie zapisu "#6"#. Do
obu tych zagadnie powrcimy dokadniej w nastpnych dwch rozdziaach.
Trzeci wzorzec  jest podobny do drugiego. Rni si od niego tym, e usuwamy
tylko tabele wymienione w wyraeniu  7, odwoujc si do tabel z wyraenia 0,
na przykad:
 
 #  3

 )
 #  3

 

0
<B7
J #  3
<B7

 
<B7
 J
 <B7
 
 
 < 
J  

Ta instrukcja oznacza to samo co poprzednia, inna jest tylko jej skadnia.

Rozdzia 5. Wstawianie, usuwanie i aktualizacja danych

90

W oglnym wzorcu instrukcji  wystpuj te inne klauzule opcjonalne:


 Klauzula  .
 / dziaa w taki sam sposb, jak w instrukcji .
 Podanie opcji 8 $ moe przyspieszy dziaanie instrukcji , poniewa

wwczas nie bdzie wykonywana standardowa obsuga indeksw w czasie


usuwania danych z tabeli.
 Klauzula  %/ ustala kolejno usuwania wierszy. Jest ona najbardziej
przydatna w poczeniu z klauzul 7 na przykad, moemy chcie

usun z tabeli n najstarszych wierszy.


 Klauzula 7 pozwala nam poda maksymaln liczb wierszy tabeli, ktre
mog zosta usunite przez instrukcj . Klauzula ta jest najbardziej
funkcjonalna w poczeniu z wyraeniem  %/; chroni take przed

usuniciem zbyt wielu wierszy.

Instrukcja TRUNCATE
Instrukcja    umoliwia nam usunicie wszystkich wierszy w tabeli, na przykad:
9!%$529-92 &-


To zapytanie usunoby wszystkich pracownikw z tabeli pracownik. Jest ono szybsze ni instrukcja , poniewa powoduje usunicie tabeli i utworzenie nowej
pustej. Naley pamita o tym, e    nie zapewnia bezpieczestwa waciwego
dla transakcji.

Instrukcja UPDATE
Moemy uy instrukcji SQL
 , aby zmieni wiersze przechowywane w bazie
danych. Na przykad, wyobramy sobie, e jeden z naszych pracownikw zmienia
stanowisko:



 J  / 0

0B7
J11+

To wyraenie zmienia warto kolumny stanowisko dla pracownika o identyfikatorze


6651.
Oglny wzorzec instrukcji
  wedug podrcznika MySQL jest nastpujcy:
%3729-C&D=E3!BD!B9FGCBH$D!-G
;-9 
E J   C
J   IG
C=N-!-  G
CD!7-! FIG
C&B(B9  G

Wczytywanie danych za pomoc instrukcji LOAD DATA INFILE

91

/
%3729-C&D=E3!BD!B9FGCBH$D!-GCIG
;-9
J   C
   IG
C=N-!-  G

Instrukcja
  w wielu wzgldach jest podobna do instrukcji .
Moemy poda opcjonaln klauzul .2, aby aktualizowa okrelone wiersze, lub
nie podawa jej, aby uaktualni wszystkie wiersze. Tutaj rwnie zapomnienie dodania
klauzuli .2 moe mie nieprzyjemne skutki pamitam jeden projekt, w ktrym
mj nierozsdny kolega wpisa midzy wierszami:


J

Dlatego podkrelamy uyteczno opcji 555!55!!, szczeglnie gdy musimy


pracowa z nieuwanymi osobami.
Druga z podanych wersji instrukcji
  suy do aktualizacji wielu tabel. Dziaa podobnie do omawianej wczeniej instrukcji , usuwajcej wiersze z wielu tabel.
Zauwamy, e tylko kolumny wymienione w klauzuli  bd aktualizowane.
Wszystkie pozostae klauzule instrukcji
  analizowalimy wczeniej. Opcje  .

 / oraz 0  dziaaj w taki sam sposb, jak w instrukcji . Klauzule
 %/ oraz 7 dziaaj tak, jak w instrukcji .

Wczytywanie danych za pomoc


instrukcji LOAD DATA INFILE
Polecenie      pozwala wprowadzi dane z pliku tekstowego do pojedynczej tabeli bez koniecznoci pisania instrukcji . W listingu 5.2 pokazano
zawarto pliku, w ktrym znajduj si informacje na temat wydziaw.
Listing 5.2. wydzial_infile.txt
  
    
#
$%&&'
$%&&(  )

Plik ma domylny format dla instrukcji      kady rekord znajduje si


w oddzielnym wierszu, a wartoci kolumn s oddzielone od siebie tabulatorem (format
wczytywania danych mona konfigurowa; za chwil zobaczymy, jak si to robi).
Moemy pobra dane do tabeli wydzial za pomoc nastpujcej instrukcji    
:

Rozdzia 5. Wstawianie, usuwanie i aktualizacja danych

92

    


 E  <:
 /
 

Ta instrukcja jest szczeglnie przydatna przy konwertowaniu danych z innego formatu


bazy danych, arkusza kalkulacyjnego lub pliku CSV (ang. comma-separated values).
Instrukcja      wymaga uprawnienia FILE; wicej informacji na temat
uprawnie znajduje si w rozdziale 11., Zarzdzanie uprawnieniami uytkownikw
w razie pojawienia si problemw podczas wykonania tego polecenia naley zajrze
do tego rozdziau. Z istotnych wzgldw bezpieczestwa uprawnienie to jest czsto
ograniczane, aby nie pozwoli uytkownikom na wczytywanie na przykad pliku /etc/
passwd.
Oglny wzorzec instrukcji      jest nastpujcy:
&D277292C&D=E3!BD!B9FA5D$5%!!-$9GC&D52&GB$B&-

C!-3&25-ABH$D!-G
B$9D92 &-
CB-&7;
C9-!(B$29-7 FOG
CCD39BD$2&&FG-$5&D;-7 FG
-;523-7 FOOG
G
C&B$-;9-!(B$29-7 FO G
CBH$D!-
&B$-;G
C
IG

Klauzule opcjonalne to:


 Opcja  .
 / dziaa w ten sam sposb, jak w instrukcji , czyli jej

dziaanie jest wstrzymywane do momentu, w ktrym inni klienci nie zakocz


odczytywania tabeli. Z kolei opcja    pozwala innym klientom
odczytywa tabel w czasie wstawiania danych.
 W przykadzie podalimy opcjonalne sowo kluczowe   , oznaczajce,

e plik z danymi jest na komputerze klienta. Jeeli nie zostanie ono dodane,
plik bdzie szukany przez MySQL na serwerze.
 Jeeli klucze koliduj w czasie wstawiania danych, opcje 
  i 0 
dostarczaj dwch metod do ich obsugi. Wstawienie 
  oznacza,
e istniejcy wiersz zostanie zamieniony na nowy, 0  e istniejcy

wiersz pozostanie w tabeli.


 Klauzule  i  precyzuj, w jaki sposb uoone s dane w pliku
wczytywanym. Domylnie dla instrukcji      jest przyjte,

e kady rekord znajduje si w nowym wierszu, natomiast kolumny s


rozdzielone tabulatorami. Moemy take uj wartoci kolumn w apostrofy
oraz zastosowa znak lewego ukonika, aby unikn ewentualnych problemw,
ktre mogyby zosta wywoane przez znaki specjalne (takie jak apostrofy).
 Klauzula 0     stanowi informacj, e naley ignorowa
okrelon liczb ( ) pierwszych wierszy w pliku wczytywanym.
 Ostatnia klauzula pozwala wczyta dane tylko do niektrych kolumn tabeli.

Podsumowanie

93

Popularny format pobierania danych to CSV lub inaczej format pliku z wartociami
oddzielonymi przecinkami. Wiele programw potrafi zapisywa i odczytywa pliki
tego typu, jednym z przykadw jest Microsoft Excel1. W listingu 5.3 pokazano plik
CSV zapisany w arkuszu Excel.
Listing 5.3. nowi_programisci.csv
$
 ;
 B7
 
6 &  ) 
7 $
  ) 
9 D& ) 

Moemy wczyta te dane do tabeli "# za pomoc nastpujcego zapytania:


   POO
E )  <
 /

  /
  /O 
)  
 
 
 B7
 

Jak wida, uylimy wicej opcji ni w przykadzie z danymi w formacie domylnym.


Warto omwi kilka z tych elementw:
 Poniewa zastosowalimy ciek uywan w systemie Windows (DOS), ktra

zawiera lewy ukonik, powinnimy sprawi, aby nie zosta on le zinterpretowany.


Dlatego teraz nasza cieka ma posta: (9)) ":!6+(.
 Prawdopodobnie zapytanie zadziaa bez podania znaku oddzielajcego

kolumny w pliku CSV, jednak lepiej jest go poda.


 W tym przykadzie nie musimy podawa znaku oddzielajcego rekordy,

mimo to wpisalimy go (znak nowego wiersza).


 Plik ma nagwek; pierwsze dwa wiersze nie zawieraj danych, dlatego

powinny by zignorowane.
 Dane w pliku nie zawieraj "#, dlatego aby przypisa trzy kolumny

do czterech kolumn w bazie danych, musielimy sprecyzowa, do ktrych


kolumn (w kolejnoci) dane zostan przyporzdkowane. W tym przykadzie
ustalilimy kolumny, wpisujc ;#< #< *.

Podsumowanie
W tym rozdziale poznalimy sposoby wstawiania, usuwania i aktualizacji danych tabeli
bazy danych.
1

W polskiej wersji jzykowej Excel zapisuje plik CSV jako plik wartoci rozdzielonych rednikami
(chocia nazywa go plikiem wartoci rozdzielonych przecinkami) przyp. red.

Rozdzia 5. Wstawianie, usuwanie i aktualizacja danych

94

Wstawianie danych
 Wartoci acuchw znakowych powinny by umieszczane w apostrofach.

Przed apostrofami i lewymi ukonikami naley wstawia lewy ukonik.


 Dodawanie danych do tabel za pomoc instrukcji :
B$;-!9C&D=E3!BD!B9FA7-&2F-7GCBH$D!-G
CB$9DGC
IG
82&%-;   A7-2%&9III
CD$7%3&B529-'-F%3729-
J   IG
/B$;-!9CC&D=E3!BD!B9FA7-&2F-7GCBH$D!-G
CB$9DGC
IG
;-&-59I
/B$;-!9CC&D=E3!BD!B9FA7-&2F-7GCBH$D!-G
CB$9DG
;-9
J   A7-2%&9I
CD$7%3&B529-'-F%3729-
J   IG

 Instrukcja 
  dziaa w taki sam sposb, jak instrukcja , tylko

powoduje nadpisanie istniejcych wierszy, gdy pojawi si kolizja kluczy.

Usuwanie danych
 Unikanie bdw za pomoc opcji 555!55!!.
 Usuwanie danych z tabeli instrukcj :
7-&-9-C&D=E3!BD!B9FGCM%B5'G!D(

C=N-!-  G
CD!7-!/IG
C&B(B9  G
/
7-&-9-C&D=E3!BD!B9FGCM%B5'G
C<?GC
C<?GIG
!D( 
  

C=N-!-  G
/
7-&-9-C&D=E3!BD!B9FGCM%B5'G
!D(
C<?GC
C<?GIG
%;B$H 
  

C=N-!-  G

 Instrukcja     % powoduje usunicie wszystkich wierszy z tabeli.

Aktualizacja danych
Aktualizacja danych w tabeli instrukcj
   %:

Quiz

95
%3729-C&D=E3!BD!B9FGCBH$D!-G
;-9 
E J   C
J   IG
C=N-!-  G
CD!7-! FIG
C&B(B9  G
/
%3729-C&D=E3!BD!B9FGCBH$D!-GCIG
;-9
J   C
J   IG
C=N-!-  G

LOAD DATA INFILE


Uywamy instrukcji     , aby wczyta zawarto pliku tekstowego do
tabeli:
&D277292C&D=E3!BD!B9FA5D$5%!!-$9GC&D52&GB$B&-

C!-3&25-ABH$D!-G
B$9D92 &-
CB-&7;
C9-!(B$29-7 FOG
CCD39BD$2&&FG-$5&D;-7 FG
-;523-7 FOOG
G
C&B$-;9-!(B$29-7 FO G
CBH$D!-
&B$-;G
C
IG

Quiz
1. Ktra z poniszych instrukcji spowoduje prawidowe wstawienie wiersza do

tabeli pracownik?
a)
  

B7
J$%&& 
 J&9 
 

 J ) B7
 J

b)


$%&&&9 
  ) 

c)
  

$%&&&9 
  ) 

d)


$%&&&D& ) 

Rozdzia 5. Wstawianie, usuwanie i aktualizacja danych

96
2. Instrukcja 
 :

a) dziaa tak samo, jak , lecz gdy pojawi si kolizja klucza,

istniejcy wiersz zostanie zastpiony nowym wierszem;


b) dziaa tak samo, jak , lecz gdy pojawi si kolizja klucza,

pozostawiony zostanie istniejcy wiersz, a zignorowany nowy;


c) dziaa tak samo, jak
 , lecz gdy pojawi si kolizja klucza,

istniejcy wiersz zostanie zastpiony nowym;


d) dziaa tak samo, jak
 , lecz gdy pojawi si kolizja klucza,

pozostawiony zostanie istniejcy wiersz, a zignorowany nowy.


3. Opcja uruchomieniowa klienta mysql 555!55!!:
a) zapobiega wstawianiu wszelkich danych;
b) zapobiega aktualizacji danych, jeeli nie jest sprecyzowane ograniczenie

dotyczce klucza;
c) zapobiega usuniciu danych, jeeli nie jest sprecyzowane ograniczenie

dotyczce klucza;
d) oba b) i c).
4. Domylnie pola w plikach danych, wczytywanych instrukcj   -,

s oddzielone:
a) przecinkami,
b) spacjami,
c) tabulatorami,
d) znakami =.
5. Opcja    w instrukcji      mwi, e:
a) klient i serwer dziaaj na tym samym komputerze,
b) plik danych jest na serwerze,
c) plik danych jest na kliencie,
d) serwer dziaa na lokalnym hocie.

wiczenia
1. Utwrz zestaw instrukcji , aby wstawi dane do kadej tabeli bazy

danych zamowienia.
2. Usu dane z tabel.
3. Zapisz plik zawierajcy te same dane, ktre byy wstawiane w punkcie

pierwszym, a nastpnie wczytaj je do bazy danych, uywajc instrukcji


    .

Nastpnie

97

Odpowiedzi
Quiz
1. b
2. a
3. d
4. c
5. c

wiczenia
Nie ma jednej prawidowej odpowiedzi w wiczeniach z tego rozdziau. Po prostu
upewnij si, e potrafisz zrobi wszystkie wiczenia.

Nastpnie
W rozdziale 6., Zapytania w MySQL, zaczniemy analizowa podstawowe narzdzie
SQL instrukcj  w jej wielu odmianach.

You might also like