Vous êtes sur la page 1sur 13

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl

MySQL. Darmowa
baza danych.
wiczenia praktyczne
Autor: Marcin Lis
ISBN: 83-246-0600-9
Format: A5, stron: 184

Wykorzystaj w swoich projektach baz MySQL


MySQL to system zarzdzania bazami danych stworzony i rozwijany przez szwedzk
firm MySQL AB. Jest bardzo szybki i wydajny, dostpny dla rnych systemw
operacyjnych i, co najwaniejsze, dystrybuowany na licencji GPL, wic korzystanie
z niego nie wymaga wnoszenia adnych opat. MySQL wykorzystywany jest coraz
powszechniej nie tylko jako zaplecze bazodanowe witryn WWW, ale take jako
magazyn danych dla zoonych systemw informatycznych operujcych na setkach
tysicy rekordw.
MySQL. Darmowa baza danych. wiczenia praktyczne to zbir krtkich wicze,
dziki ktrym poznasz podstawy pracy z MySQL. Dowiesz si, jak zainstalowa
i skonfigurowa serwer MySQL w systemach Windows i Linux, nauczysz si tworzy
bazy danych i zakada konta uytkownikw. Poznasz typy danych stosowane
w MySQL, zaprojektujesz i utworzysz tabele w bazie danych oraz wykorzystasz jzyk
SQL do wstawiania, wybierania i modyfikowania danych.
Instalacja MySQL
Uruchamianie i zatrzymywanie serwera bazy danych
Tworzenie kont uytkownikw i nadawanie uprawnie
Uruchamianie polece zapisanych w plikach zewntrznych
Tworzenie struktury bazy danych
Wprowadzanie danych do tabel
Pobieranie danych
Zoone zapytania

Wstp
Rozdzia 1. Instalacja i konfiguracja
Instalacja w systemie Linux
Instalacja w systemie Windows
Wstpna konfiguracja w systemie Windows
Uruchamianie i zatrzymywanie serwera w systemie Linux
Wstpna konfiguracja w systemie Linux
Uruchamianie i zatrzymywanie serwera
w systemie Windows

Rozdzia 2. Zarzdzanie serwerem


czenie z serwerem
Tworzenie i usuwanie baz danych
Wybr bazy danych
Obsuga kont uytkownikw
Systemy kodowania znakw
Wczytywanie polece z plikw zewntrznych
Lista dostpnych baz danych

Rozdzia 3. Koncepcja relacyjnych baz danych


Tabele
Klucze
Relacje
Podstawowe zasady projektowania tabel

5
9
9
17
21
26
31
32

37
37
39
40
41
54
60
62

65
65
66
68
73

MySQL. Darmowa baza danych wiczenia praktyczne

Rozdzia 4. Tworzenie struktury bazy danych


Oglna posta instrukcji CREATE
Typy danych
Atrybuty kolumn
Kodowanie znakw dla tabel i kolumn
Pobieranie struktury tabel
Modyfikacja tabel
Usuwanie tabel
Kilka tabel w praktyce

Rozdzia 5. Elementy SQL (DML)


Wprowadzanie danych
Pobieranie danych
Modyfikacja danych
Usuwanie danych

Rozdzia 6. Zoone instrukcje SQL


Pobieranie danych z kilku tabel
Typy zcze
Grupowanie danych

81
81
85
98
104
106
108
115
116

125
125
134
150
153

157
157
160
165

Dane w bazie przechowywane s w tabelach. Pojcie tabeli


poznalimy w rozdziale 3., Koncepcja relacyjnych baz danych. Czas wic dowiedzie si, w jaki sposb mona tworzy
tabele. Suy do tego instrukcja CREATE TABLE o schematycznej postaci:
CREATE TABLE nazwa_tabeli
(
nazwa_kolumny_1 typ_kolumny_1 [atrybuty],
nazwa_kolumny_2 typ_kolumny_2 [atrybuty],
...
nazwa_kolumny_n typ_kolumny_n [atrybuty],
)

Nazwa tabeli moe zawiera dowolne znaki, jakie moe zawiera nazwa pliku w systemie operacyjnym, na ktrym dziaa serwer MySQL,
z wyjtkiem /, \ i . Maksymalna dugo nazwy to 64 bajty. Poczwszy od wersji 3.23.6, nazwa tabeli moe by nazw sowa zastrzeonego dla konstrukcji jzyka (np. SELECT, CREATE), w takim wypadku musi by jednak zawsze ujta w znaki , np. SELECT. Nie

82

MySQL. Darmowa baza danych wiczenia praktyczne

moe rwnie zawiera znakw o kodach 0 i 255 w standardzie ASCII,


a na jej kocu nie powinny si znajdowa tzw. biae znaki (czyli
spacje, tabulatory itp.).
Nazwa kolumny moe zawiera dowolne znaki, jednak jej dugo
jest rwnie ograniczona do 64 bajtw i take nie powinna by zakoczona biaym znakiem. Typ kolumny okrela rodzaj danych, ktre
dana kolumna bdzie moga przechowywa, np. acuch znakw, liczby, itp. Wystpujce w MySQL typy danych zostan omwione w nastpnej sekcji.
W nazwach tabel (oraz baz danych) mog wystpowa zarwno mae,
jak i due litery, jednak to, czy bd rozrniane, zaley od systemu
plikw systemu operacyjnego, na ktrym zosta zainstalowany MySQL.
I tak w wikszoci odmian Uniksa wielkie i mae litery s rozrniane, natomiast w systemach Windows nie. W systemach Mac OS
rozrnianie wielkoci liter zaley od tego, czy wykorzystywany jest
system plikw HFS (nie s rozrniane), czy USF (s rozrniane).
W zwizku z tym, o ile to moliwe, najwygodniej przyj po prostu
zasad, e nazwy baz i tabel zawsze s pisane maymi literami (najlepiej alfabetu aciskiego).
Nazwy kolumn rwnie mog zawiera mae i due litery, jednak
w tym wypadku nie s one rozrniane, niezalenie od wersji systemu
operacyjnego czy systemu plikw. Poczwszy od wersji 4.1, wszystkie
identyfikatory i nazwy odnoszce si do definicji zawartoci tabel s
zapisywane w standardzie Unicode. Naley rwnie pamita, e jeli
identyfikator (np. nazwa kolumny) zawiera znaki spoza standardowego zestawu ASCII (np. polskie litery), naley go uj w lewe apostrofy
(podobnie jak w sytuacji, kiedy identyfikator jest nazw zastrzeon
dla konstrukcji jzyka SQL).
Dla treningu sprbujmy teraz utworzy prost tabel klient, ktra bdzie zawieraa dwie kolumny. Pierwsza o nazwie Indeks bdzie
przechowywaa liczby cakowite (typ danych INTEGER), druga o nazwie Nazwa bdzie przechowywaa cigi maksymalnie 20 znakw
(typ VARCHAR(20)).

Rozdzia 4. Tworzenie struktury bazy danych

83

W I C Z E N I E

4.1

Utworzenie prostej tabeli

Utwrz tabel o nazwie klient zawierajc dwie kolumny pierwsz


o nazwie Indeks typu INTEGER, drug o nazwie Nazwa typu VARCHAR(20).
Utworzenie takiej tabeli osigniemy po wydaniu polecenia w postaci:
CREATE TABLE klient
(
Indeks INTEGER,
Nazwa VARCHAR(20)
);

Oczywicie najpierw naley uruchomi klienta mysql, zalogowa si


do serwera i wybra baz danych (np. test), tak jak byo to opisywane
we wczeniejszych rozdziaach. Po wykonaniu opisanych czynnoci
w oknie konsoli zobaczymy widok zaprezentowany na rysunku 4.1.
Rysunek 4.1.
Zalogowanie
do serwera
i utworzenie tabeli
klient w bazie test

Co si jednak stanie, jeli sprbujemy utworzy tabel o nazwie, ktra


ju istnieje w bazie? W takiej sytuacji zostanie zgoszony bd widoczny na rysunku 4.2. Jest to cakiem zrozumiae zachowanie systemu.
Czasem jednak chcielibymy utworzy tabel o zadanej nazwie tylko
wtedy, gdy nie istnieje ona w bazie, a gdyby istniaa nie podejmowa adnego dziaania. W takiej sytuacji powinnimy skorzysta
z dodatkowej konstrukcji II NOT EXISTS w oglnej postaci:
CREATE TABLE IF NOT EXISTS nazwa_tabeli
(
definicje kolumn
)

ktr moemy przetumaczy jako: utwrz tabel nazwa_tabeli, o ile


nie istnieje ona jeszcze w bazie.

84

MySQL. Darmowa baza danych wiczenia praktyczne

Rysunek 4.2.
Prba utworzenia
ju istniejcej
tabeli
W I C Z E N I E

4.2

Utworzenie tabeli, o ile nie istnieje ona ju w bazie

Napisz instrukcj tworzc tabel klient (tak jak w wiczeniu 4.1),


ktra nie spowoduje wystpienia bdu w sytuacji, jeli tabela o takiej
nazwie bdzie ju istniaa w bazie.
CREATE TABLE IF NOT EXISTS klient
(
Indeks INTEGER,
Nazwa VARCHAR(20)
);

Tworzona tabela moe by rwnie tymczasow, czyli tak, ktra zostanie automatycznie usunita po zakoczeniu poczenia. Co wicej, taka tabela jest powizana wycznie z poczeniem, w ktrym
zostaa utworzona, tak wic dwch uytkownikw moe w jednym
czasie w jednej bazie utworzy rne tabele o takiej samej nazwie.
Tymczasowo tabeli zapewnia sowo TEMPORARY umieszczone za CREATE,
czyli instrukcja w oglnej postaci:
CREATE TEMPORARY TABLE nazwa_tabeli
(
definicje kolumn
)
W I C Z E N I E

4.3

Tabela tymczasowa

Utwrz tymczasow tabel o dwch dowolnych kolumnach.


CREATE TEMPORARY TABLE test
(
id INTEGER,
wartosc INTEGER
);

Rozdzia 4. Tworzenie struktury bazy danych

85

Istnieje take moliwo utworzenia nowej tabeli na bazie ju istniejcej. Stosujemy w tym celu instrukcj CREATE w postaci:
CREATE TABLE nowa_tabela LIKE istniejca_tabela;

ktra oznacza: utwrz tabel o nazwie nowa_tabela o strukturze takiej


jak istniejca_tabela.
W I C Z E N I E

4.4

Tworzenie jednej tabeli na bazie innej

Utwrz tabel klient2 o strukturze pobranej z tabeli klient.


CREATE TABLE klient2 LIKE klient;

Kada kolumna tabeli w bazie danych ma przypisany typ, ktry okrela rodzaj danych, jakie mog by w niej przechowywane. Wystpujce w MySQL typy danych mona podzieli na trzy grupy:
q liczbowe,
q daty i czasu,
q acuchowe.

Typy liczbowe
Typy liczbowe moemy podzieli na dwa rodzaje typy cakowitoliczbowe oraz typy zmiennoprzecinkowe. Zgodnie z nazwami su
one do reprezentacji wartoci cakowitych oraz zmiennoprzecinkowych (zmiennopozycyjnych, rzeczywistych). Typy cakowitoliczbowe
zostay przedstawione w tabeli 4.1. Jeden z wymienionych w niej typw INTEGER wykorzystywalimy ju przy tworzeniu przykadowej tabeli klient. W kadym z wymienionych przypadkw z wyjtkiem
BOOL i BOOLEAN mona zastosowa dodatkowy modyfikator okrelajcy maksymaln szeroko wywietlania w sytuacji, kiedy liczba znakw wartoci jest mniejsza ni maksymalna. Definicja typu ma wtedy
posta:
nazwa_typu(ile)

86

MySQL. Darmowa baza danych wiczenia praktyczne

Dozwolone s take modyfikatory UNSIGNED oraz ZEROIILL. Pierwszy


z nich oznacza, e warto ma by traktowana jako liczba bez znaku
(czyli niedopuszczalne s wartoci ujemne). Drugi powoduje, e jeeli liczba cyfr w danej wartoci jest mniejsza od maksymalnej liczby
wywietlanych znakw, wolne miejsca zostan dopenione zerami.
Zastosowanie atrybutu ZEROIILL powoduje, e automatycznie zostanie
rwnie zastosowany atrybut UNSIGNED.
Przykadowo, jeeli zostanie zastosowany typ TINYINT UNSIGNED, w poszczeglnych wierszach kolumny bdzie mona zapisywa wartoci od
0 do 255. Jeeli natomiast zostanie zastosowany typ TINYINT(4) ZEROIILL,
w poszczeglnych wierszach kolumny rwnie bdzie mona zapisywa jedynie wartoci od 0 do 255, ale bd one wywietlane zawsze
w postaci czteroznakowej, w ktrej wolne miejsca z prawej strony zostay wypenione zerami. Oznacza to, e warto 2 bdzie wywietlana
jako 0002, warto 64 jako 0064, a 128 jako 0128.
Tabela 4.1. Typy cakowitoliczbowe
Typ

Zakres wartoci

Liczba
zajmowanych Opis
bajtw

BIT

zmienna

W wersjach od 5.0.3
reprezentuje pola bitowe
od 1 do 64 bitw,
w wersjach wczeniejszych
synonim dla TINYINT(1).

BOOL

Synonim dla TINYINT(1).


Warto 0 jest
interpretowana jako false,
warto rna od 0 jako
true. W przyszoci
ma zosta wprowadzona
pena obsuga typu
BOOLEAN.

Rozdzia 4. Tworzenie struktury bazy danych

87

Tabela 4.1. Typy cakowitoliczbowe (cig dalszy)


Typ

Zakres wartoci

Liczba
zajmowanych Opis
bajtw

BOOLEAN

Synonim dla TINYINT(1).


Warto 0 jest
interpretowana jako false,
warto rna od 0 jako
true. Wprowadzony
w wersji 4.1.0.
W przyszoci ma zosta
wprowadzona pena
obsuga typu BOOLEAN.

TINYINT

Od 128 do 127
dla liczb ze znakiem
i od 0 do 255 dla liczb
bez znaku.

Reprezentacja bardzo
maych wartoci
cakowitoliczbowych.

SMALLINT

Od 3278 (215)
do 3277 (2151)
dla liczb ze znakiem
i od 0 do 5535 (2161)
dla liczb bez znaku.

Reprezentacja
maych wartoci
cakowitoliczbowych.

MEDIUMINT

Od 838808 (223)
do 838807 (2231)
dla liczb ze znakiem
i od 0 do 1777215
(2241) dla liczb
bez znaku.

Reprezentacja
rednich wartoci
cakowitoliczbowych.

INT

Od 214748348 (231)
do 214748347 (2311)
dla liczb ze znakiem
i od 0 do 429497295
(2321) dla liczb
bez znaku.

Reprezentacja
zwykych wartoci
cakowitoliczbowych.

88

MySQL. Darmowa baza danych wiczenia praktyczne

Tabela 4.1. Typy cakowitoliczbowe (cig dalszy)


Liczba
zajmowanych Opis
bajtw

Typ

Zakres wartoci

INTEGER

Od 214748348 (231)
do 214748347 (2311)
dla liczb ze znakiem
i od 0 do 429497295 (232
1) dla liczb bez znaku.

Synonim dla INT.

BIGINT

Od 922337203854775808
(263) do 922337203854
775807 (263 1) dla liczb
ze znakiem i od 0
do 184474407370955115
(2641) dla liczb bez znaku.

Reprezentacja
duych wartoci
cakowitoliczbowych.

W I C Z E N I E

4.5

Tabela z kolumnami typu INTEGER

Utwrz tabel, ktra bdzie zawieraa dwie kolumny typu INTEGER,


pierwsz o nazwie id i drug o nazwie znacznik.
CREATE TABLE test
(
id INTEGER,
znacznik INTEGER
);
W I C Z E N I E

4.6

Tabela z kolumnami typu INTEGER


z dodatkowymi atrybutami

Utwrz tabel, ktra bdzie zawieraa kolumn typu INTEGER przechowujc wycznie dodatnie wartoci z przedziau 0 65535, w ktrej
liczba wywietlanych znakw bdzie zawsze rwna 5, a wolne miejsca wartoci krtszych ni 5 znakw bd wypeniane zerami.
CREATE TABLE test
(
id SMALLINT(5) ZEROFILL
);

Rozdzia 4. Tworzenie struktury bazy danych

89

Typy zmiennoprzecinkowe zostay przedstawione w tabeli 4.2. Podobnie jak w przypadku typw cakowitoliczbowych, istnieje moliwo zastosowania modyfikatora okrelajcego szeroko wywietlania. W przypadku typw ILOAT, DOUBLE i DOUBLE PRECISION wystpuje
on zawsze jednoczenie z modyfikatorem okrelajcym liczb miejsc
po przecinku, oglnie:
nazwa_typu(mod1, mod2)

gdzie mod1 okrela szeroko wywietlania (cakowit liczb cyfr znaczcych), a mod2 liczb uwzgldnianych miejsc po przecinku.
Tabela 4.2. Typy zmiennoprzecinkowe
Typ

Zakres wartoci

Liczba
zajmowanych
bajtw

FLOAT
(precyzja)

zmienny

4 lub 8

Parametr precyzja okrela


precyzj, z jak bdzie
reprezentowana dana
warto rzeczywista.
W przypadku wartoci
od 0 do 24 mamy
do czynienia z liczbami
o pojedynczej precyzji,
a w przypadku warto
od 25 do 3 z liczbami
o podwjnej precyzji,
co odpowiada opisanym
niej typom FLOAT i DOUBLE.

FLOAT

od 3.4028234E+38
do 3.4028234E+38

Liczby
zmiennoprzecinkowe
pojedynczej precyzji.

DOUBLE

od 1.797931348
23157E+308
do 1.797931348
23157E+308

Liczby
zmiennoprzecinkowe
podwjnej precyzji.

DOUBLE
PRECISION

jw.

jw.

Synonim dla DOUBLE.

REAL

jw.

jw.

Synonim dla DOUBLE.

Opis

90

MySQL. Darmowa baza danych wiczenia praktyczne

Tabela 4.2. Typy zmiennoprzecinkowe (cig dalszy)


Typ

Zakres wartoci

Liczba
zajmowanych
bajtw

DECIMAL

zmienny

zmienna

Wartoci z separatorem
dziesitnym. W wersjach
przed 5.0.3
przechowywana jako
acuch znakw.
Cakowita maksymalna
liczba znakw i liczba
znakw po separatorze
dziesitnym moe by
okrelana przez dodatkowe
parametry.

DEC

jw.

jw.

Synonim dla DECIMAL.

NUMERIC

jw.

jw.

Synonim dla DECIMAL.

FIXED

jw.

jw.

Synonim dla DECIMAL,


dodany w wersji 4.1.0.

Opis

W przypadku typu DECIMAL i jego synonimw moliwe jest zastosowanie modyfikatora okrelajcego szeroko wywietlania bez modyfikatora okrelajcego liczb miejsc po przecinku, czyli prawidowa
jest zarwno konstrukcja:
DECIMAL(mod1)

jak i:
DECIMAL(mod1, mod2)

W stosunku do typw zmiennoprzecinkowych mona rwnie stosowa modyfikatory ZEROIILL oraz UNSIGNED. Znaczenie pierwszego z nich
jest takie samo jak w przypadku typw cakowitoliczbowych. Zastosowanie modyfikatora UNSIGNED powoduje natomiast, e dozwolone
bd jedynie wartoci nieujemne, nie zmieni si natomiast zakres
wartoci moliwych do reprezentowania.

Vous aimerez peut-être aussi