You are on page 1of 25

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE

MySQL. Rozmwki
Autorzy: Zak Greant, Chris Newman
Tumaczenie: Przemysaw Szeremiota
ISBN: 83-246-0550-9
Tytu oryginau: MySQL Phrasebook
Format: B6, stron: 216

ZAMW DRUKOWANY KATALOG

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

Podrczny sownik najwaniejszych polece bazy danych MySQL


Tworzenie baz i tabel
Wstawianie i wydobywanie danych
Reagowanie na sytuacje awaryjne
MySQL to jeden z najbardziej popularnych systemw zarzdzania bazami danych.
Jego ogromne moliwoci id w parze z atwoci obsugi, ale nie jest to jego jedyna
zaleta. Wane jest rwnie to, e zarwno sama aplikacja, jak i jej kod rdowy
dostpne s nieodpatnie. MySQL jest wykorzystywany nie tylko w roli zaplecza
bazodanowego dla witryn WWW, ale rwnie w rozbudowanych systemach
informatycznych wymagajcych stabilnego rda danych. Zestaw polece MySQL
to nie tylko instrukcje zwizane z manipulowaniem danymi, ale take wiele innych
wskazwek przeznaczonych dla administratorw bazy.
Ksika MySQL. Rozmwki to zbir najbardziej przydatnych i najczciej
wykorzystywanych polece MySQL. Zawiera prezentacje sposobw realizacji
najbardziej typowych zada, przed jakimi staj uytkownicy baz danych MySQL,
uzupenione licznymi wskazwkami i przykadami. Czytajc j, poznasz sposoby
zakadania tabel i wypeniania ich danymi, pobierania danych z bazy oraz przetwarzania
ich za pomoc odpowiednio sformuowanych zapyta. Nauczysz si administrowa
kontami uytkownikw, archiwizowa dane i odtwarza je w przypadku awarii bazy.
Tworzenie nowej bazy oraz tabel
Zakadanie indeksw
Wprowadzanie danych do tabel
Proste zapytania
Przetwarzanie danych w zapytaniach
Tworzenie kont uytkownikw i nadawanie uprawnie
Korzystanie z interfejsw programistycznych MySQL
Archiwizowanie danych
Jeli czsto korzystasz z MySQL, a dziesitki opasych tomw
nie mieszcz si ju na Twoim biurku, signij po t ksik

O autorach ........................................................................... 7
Wstp .................................................................................. 9
1 Mapy MySQL ..................................................................... 13
RSZBD MySQL ........................................................................ 14
Stos LAMP ............................................................................. 16
Terminologia tabel MySQL ..................................................... 16
Tabele przykadowe ............................................................... 18
2 Tworzenie baz danych, tabel i indeksw
i zarzdzanie nimi ............................................................ 19
Bazy danych, tabele, kolumny i indeksy ................................. 20
Tworzenie baz danych i zarzdzanie nimi ............................... 23
Tworzenie tabel i zarzdzanie nimi ........................................ 29
Tworzenie kolumn tabel i zarzdzanie nimi ............................ 33
Tworzenie indeksw i zarzdzanie nimi ................................. 36
Zobacz rwnie ...................................................................... 38
3 Skadowanie danych ......................................................... 39
Dodawanie danych do tabeli ................................................. 39
Wstawianie wielu wierszy danych
w jednym zapytaniu INSERT ................................................. 41

Spis treci

Przypisywanie wierszom unikatowych numerw


(auto_increment) .................................................................. 42
Wstawianie biecej daty i czasu (za pomoc funkcji MySQL) ...... 44
Wczytywanie polece SQL z pliku ............................................ 45
Wstawianie danych z innej tabeli ........................................... 46
Importowanie danych z plikw tekstowych ............................ 47
Szybkie wstawianie danych .................................................... 51
Zobacz rwnie ...................................................................... 54
4 Wydobywanie danych. Proste zapytania ...........................55
Ograniczanie liczby zwracanych wierszy ................................. 56
Porzdkowanie zbiorw wynikowych ..................................... 57
Ignorowanie duplikatw ........................................................ 58
Szukanie tekstu pasujcego do wzorca ................................... 59
Wyszukiwanie najmniejszej,
najwikszej i redniej wartoci w kolumnie .......................... 61
Manipulowanie datami i godzinami ....................................... 62
Skadowanie dokadnych liczb wymiernych ............................ 65
Wartoci puste (NULL) ............................................................ 66
Zapisywanie zbioru wynikowego zapytania w pliku ............... 67
Zapisywanie danych binarnych w pliku .................................. 69
5 Manipulowanie danymi .....................................................71
Ku przestrodze ....................................................................... 71
Testowanie zapyta w ramach transakcji ............................... 75
Aktualizacja wartoci kolumn ................................................. 76
Aktualizowanie kolumn wynikami oblicze ............................ 78
Usuwanie wierszy .................................................................. 79
Usuwanie wierszy z wielu tabel ............................................. 79
Zobacz rwnie ...................................................................... 81

Spis treci

6 Konta uytkownikw i bezpieczestwo ............................ 83


Tworzenie kont uytkownikw ............................................... 84
Usuwanie kont uytkownikw ............................................... 87
Zmiana nazwy konta .............................................................. 87
Symbole wieloznaczne ........................................................... 88
Wyszukiwanie uytkownikw bazy danych bd tabeli .......... 89
Ustawianie hase ................................................................... 90
Regulowanie uprawnie uytkownikw ................................. 91
Zezwalanie uytkownikom na przyznawanie uprawnie ........ 95
Podgldanie uprawnie uytkownika ..................................... 96
Blokowanie dostpu .............................................................. 97
Blokowanie dostpu sieciowego ............................................... 97
Blokowanie uwierzytelniania uytkownikw .......................... 98
Poczenie zabezpieczane protokoem SSL .............................. 99
Zobacz rwnie .................................................................... 101
7 Konsolowy program klienta mysql .................................. 103
Nawizywanie poczenia z serwerem MySQL ..................... 104
Korzystanie z programu mysql w trybie wsadowym ............. 105
Obsuga wiersza polece programu mysql ........................... 106
Usuwanie zawartoci biecego wiersza polecenia .............. 108
Ustawianie domylnych parametrw poczenia w pliku opcji ....109
Pomoc w programie mysql ................................................... 111
Edytowanie zoonych zapyta ............................................ 112
Dopenianie nazw baz danych, tabel i kolumn ..................... 113
Korzystanie z historii polece ............................................... 113
Inne przydatne narzdzia ..................................................... 114
8 Interfejsy programistyczne MySQL .................................... 117
Interfejs programistyczny dla jzyka C .................................. 118
Interfejs programistyczny dla jzyka Perl .............................. 126
5

Spis treci

Interfejs programistyczny dla jzyka PHP .............................. 130


Zobacz rwnie .................................................................... 136
9 Zapytania zaawansowane ...............................................139
czenia ............................................................................... 139
Podzapytania ....................................................................... 146
Scalanie zbiorw wynikowych operatorem UNION ............... 150
Zobacz rwnie .................................................................... 152
10 Sytuacje awaryjne ...........................................................153
Archiwizacja ......................................................................... 153
Odtwarzanie danych z kopii zapasowej ................................ 157
Uszkodzenia danych tabel .................................................... 159
Awaria serwera .................................................................... 162
Typowe bdy ...................................................................... 163
Gdzie szuka pomocy ........................................................... 168
A Byskawiczny kurs MySQL ................................................171
Zaczynamy ........................................................................... 172
Tworzenie bazy danych ........................................................ 173
Tworzenie tabel ................................................................... 175
Wypenianie tabel danymi .................................................... 185
Jeszcze o tworzeniu tabel ..................................................... 193
Dodawanie indeksw do istniejcych tabel .......................... 196
Uzyskiwanie informacji o tabelach ........................................ 196
Konta uytkownikw ............................................................ 200
Podsumowanie .................................................................... 202
Skorowidz ........................................................................203

olecenia prezentowane w tym rozdziale wykorzystuje


si do tworzenia i zarzdzania strukturami MySQL, ktre
(z logicznego punktu widzenia) umoliwiaj podgld i skadowanie danych i organizuj dane przechowywane na serwerze MySQL.
Nie wszyscy Czytelnicy s zaznajomieni z podstawami
modelowania danych przechowywanych na serwerach
MySQL, wic na pocztek proponujemy piciominutow
powtrk z podstaw dotyczcych baz danych, tabel, kolumn i indeksw.

ROZDZIA 2

TWORZENIE BAZ DANYCH, TABEL I INDEKSW I ZARZDZANIE NIMI


20

Bazy danych, tabele, kolumny i indeksy

Bazy danych, tabele,


kolumny i indeksy
Podstawowy model skadowania danych, przyjty w MySQL, jest cakiem prosty, ale pewnie tylko dla tych, ktrzy
ju go znaj. Przedstawia si tak:
n

Serwer MySQL zawiera pewn liczb baz danych


(przynajmniej jedn).

Kada baza danych posiada nazw i zawiera pewn


liczb tabel (przynajmniej jedn).

Kada tabela posiada nazw, definicj i pewn liczb


wierszy (tabela moe by pusta).

Definicja kadej tabeli okrela jedn lub wicej kolumn tabeli i zero lub wicej indeksw.

Kada kolumna posiada nazw i typ.

Typy kolumn wybiera si z zestawu predefiniowanych


typw MySQL. Kady z nich posiada nazw i definiuje zestaw wartoci, ktre mona umieci w kolumnie danego typu.

Kady wiersz tabeli zawiera po jednej wartoci dla


kadej kolumny wymienionej w definicji tabeli.

Indeksy redukuj narzuty czasowe typowe dla serwerw baz danych, a zwizane z wyszukiwaniem konkretnych wartoci w kolumnie (zbiorze kolumn) tabeli.

WSKAZWKA
Omawiane wyej pojcia ilustruje rysunek Terminologia tabel MySQL w rozdziale 1. (Mapy MySQL).

Tabele metaforycznie
Dobrym, cho uproszczonym modelem bazy danych jest
znany kademu may, czarny notesik adresowy. W owej
pierwotnej, prostej wersji ksiki adresowej informacje
o znajomych i kolegach zapisywao si na kolejnych
kartkach. Wpisy dotyczce poszczeglnych osb byy
rozmieszczane w specjalnych szablonach, z polami do wypenienia, opatrzonymi etykietami: Imi i nazwisko, Adres
czy Data urodzenia.
Do tego bywao, e strony byy oznaczane zakadkami
indeksowymi, pomocnymi w odszukiwaniu konkretnych
osb. Bez takich zakadek wyszukiwanie wymagao przegldania kolejnych kartek a do momentu natrafienia na
szukan osob.
Ksieczka, o ktrej mwimy, mogaby wyglda jak na
rysunku 2.1.

TWORZENIE BAZ DANYCH, TABEL I INDEKSW I ZARZDZANIE NIMI

Bazy danych atwo zrozumie; s najzwyklejszymi pojemnikami na dane. Nieco gorzej z tabelami. Do ich ogarnicia przyda si prosta metafora.

ROZDZIA 2

Bazy danych, tabele, kolumny i indeksy

21

ROZDZIA 2

TWORZENIE BAZ DANYCH, TABEL I INDEKSW I ZARZDZANIE NIMI


22

Bazy danych, tabele, kolumny i indeksy

Rysunek 2.1. Osobista ksika adresowa

Taki notesik mona traktowa jako tabel zoon z wierszy i kolumn. Kady wiersz odnosi si do pojedynczej
osoby, podczas gdy kolumny grupuj atrybuty poszczeglnych osb (nazwiska, adresy poczty elektronicznej, daty
urodzenia).
Zawarto naszego notesika w formie tabelarycznej przedstawiaaby si tak, jak na rysunku 2.2.

Rysunek 2.2. Ksieczka adresowa jako tabela bazy danych

W papierowej ksieczce adresowej wpisy poszczeglnych osb umieszczone byy na stronach z odpowiedni
zakadk indeksow, pasujc do pierwszej litery nazwiska.
Na przykad Antoni Sonimski zosta zapisany na stronie
z zakadk indeksow S.

Sposb powizania indeksu z waciwymi pozycjami wierszy w tabeli ilustruje rysunek 2.3.

Rysunek 2.3. Pozycje wierszy w tabeli

Tworzenie baz danych


i zarzdzanie nimi
Bazy danych zasadniczo tworzy si zupenie prosto, nieskomplikowane jest te zarzdzanie nimi bazy s po
prostu pojemnikami na dane, z zaledwie paroma dodatkowymi wasnociami. Zajmiemy si teraz tym, co trzeba

TWORZENIE BAZ DANYCH, TABEL I INDEKSW I ZARZDZANIE NIMI

Z kolei w tabeli wiersze s rozmieszczone w dowolnej kolejnoci. Aby umoliwi wyszukanie odpowiedniego wiersza bez koniecznoci przegldania caoci tabeli, kolumny
tabel uzupenia si o indeksy. Indeksy takie stanowi jakby
listy uporzdkowanych wartoci kolumn, reprezentujcych
waciwe pozycje tych wartoci w kolumnie.

ROZDZIA 2

Tworzenie baz danych i zarzdzanie nimi

23

ROZDZIA 2

TWORZENIE BAZ DANYCH, TABEL I INDEKSW I ZARZDZANIE NIMI


24

Tworzenie baz danych i zarzdzanie nimi

wiedzie, aby skutecznie tworzy i usuwa bazy i zarzdza ju istniejcymi bazami danych.

Wypisanie listy baz danych


SHOW DATABASES;

Polecenie SHOW DATABASES pobiera od serwera MySQL


list baz danych pozostajcych pod opiek tego serwera.
W wieej instalacji MySQL polecenie SHOW DATABASES
powinno zwrci wypis podobny do poniszego:
+----------+
| Database |
+----------+
| mysql
|
| test
|
+----------+
2 rows in set (0.00 sec)

Filtrowanie listy baz danych


SHOW DATABASES LIKE 'my%';

Jeli na wypisie maj znale si jedynie takie bazy danych,


ktrych nazwy pasuj do zadanego sowa lub jego czci,
naley zastosowa operator LIKE.
Sowo wystpujce za operatorem LIKE moe by zwyczajnym sowem, uzupenionym o znaki procenta (%)
i podkrelenia (_), tak zwane symbole wieloznaczne.

W kontekcie operatora LIKE znak procenta (%) moe


reprezentowa dowoln sekwencj (rwnie pust) znakw, podczas gdy znak podkrelenia (_) reprezentuje dowolny, ale pojedynczy znak.

WSKAZWKA
Operator LIKE moe by wykorzystywany w wielu innych
poleceniach (zapytaniach) SQL; poza poleceniem SHOW wystpuje typowo w klauzulach WHERE zapyta SELECT i DELETE.
W przypadku wieo zainstalowanej kopii oprogramowania MySQL uruchomienie polecenia przykadowego
z tak okrelonym filtrem baz danych powinno da efekt
taki, jak poniej:
+----------+
| Database |
+----------+
| mysql
|
+----------+
1 rows in set (0.00 sec)

UWAGA
Zainteresowanych dodatkowymi informacjami o operatorze
LIKE odsyamy pod adres http://mysql.com/LIKE.

TWORZENIE BAZ DANYCH, TABEL I INDEKSW I ZARZDZANIE NIMI

W tym przykadzie polecenia SHOW DATABASES na wypisie


baz danych znajd si tylko te bazy danych, ktrych nazwy zaczynaj si od my (a take ewentualna baza o nazwie my).

ROZDZIA 2

Tworzenie baz danych i zarzdzanie nimi

25

ROZDZIA 2

TWORZENIE BAZ DANYCH, TABEL I INDEKSW I ZARZDZANIE NIMI


26

Tworzenie baz danych i zarzdzanie nimi

Ustawianie domylnej bazy danych


USE test;

Pojedynczy serwer MySQL moe peni piecz nad wieloma bazami danych. Zapytanie operujce na bazie danych albo tabeli musi w jaki sposb zosta skojarzone
z odpowiedni baz danych. Docelow baz danych mona poda jawnie w tekcie zapytania. Na przykad ponisze zapytanie odwouje si do tabeli ksika w bazie
danych biblioteka:
SELECT tytul FROM biblioteka.ksika;

Alternatywnie mona ustali domyln baz danych, wybieran automatycznie dla wszystkich kolejnych zapyta.
Suy do tego polecenie USE:
USE biblioteka;

W dalszej perspektywie ustawienie domylnej bazy danych zaoszczdzi nam mnstwo pisania, bo nie trzeba
bdzie ju podawa w zapytaniach przy kadej tabeli nazwy
bazy danych. Zapytania bd dotyczyy tej bazy danych,
ktra poleceniem USE zostaa ustawiona jako domylna.
Porwnajmy ponisze zapytania. Zapytania pierwsze i trzecie zwracaj te same wyniki, ale w pierwszym docelowa
baza danych jest okrelana jawnie, a w trzecim polegamy
na ustawieniu domylnej bazy danych, wykonanym w zapytaniu numer dwa:

SELECT tytul FROM biblioteka.ksika


USE biblioteka;
SELECT tytul FROM ksika;

WSKAZWKA

Tworzenie bazy danych


CREATE DATABASE biblioteka;

Powysze polecenie tworzy now baz danych o nazwie


biblioteka. Samo w sobie nie jest wielce uyteczne, ale
w podrozdziale Tworzenie tabel i zarzdzanie nimi
wypenimy now, pust baz danych treci.

Usuwanie bazy danych


DROP DATABASE biblioteka;

Polecenie DROP DATABASE usuwa wskazan baz danych


wraz ze wszystkimi jej tabelami.
OSTRZEENIE
Polecenie DROP DATABASE naley stosowa z zachowaniem
najwyszej ostronoci nie da si atwo wycofa niszczycielskiego efektu tego polecenia po jego wykonaniu.

TWORZENIE BAZ DANYCH, TABEL I INDEKSW I ZARZDZANIE NIMI

Mimo ustalenia domylnej bazy danych poleceniem USE,


wci mona jawnie podawa docelowe bazy danych w zapytaniach (jak w pierwszym z trzech powyszych zapyta), co
pozwala na wybircze przeczanie baz danych na potrzeby
pojedynczych zapyta.

ROZDZIA 2

Tworzenie baz danych i zarzdzanie nimi

27

ROZDZIA 2

TWORZENIE BAZ DANYCH, TABEL I INDEKSW I ZARZDZANIE NIMI


28

Tworzenie baz danych i zarzdzanie nimi

Zmiana nazwy bazy danych


Operacja zmiany nazwy bazy danych jest rzadkoci.
Czciowo dlatego, e jest to operacja nieco karkoomna.
Do tego w MySQL nie da si jej zaatwi pojedynczym
poleceniem SQL.
W archaicznych wersjach MySQL zmiana nazwy bazy
danych sprowadzaa si do:
1. Zatrzymania serwera MySQL.
2. Zmiany nazwy katalogu reprezentujcego baz danych.
3. Ponownego uruchomienia serwera MySQL.
We wspczesnych wersjach MySQL taka procedura moe
spowodowa, e serwer przestanie rozpoznawa pewne
rodzaje tabel przechowywanych w bazie danych. Aby
bezpiecznie zmieni nazw bazy danych, naleaoby wykona ponisz procedur:
1. Upewni si, e adna z tabel bazy danych nie uczestniczy w odwoaniu. Najprociej zapewni to odebraniem uprawnie do uywania bazy danych za
pomoc narzdzia MySQL Administrator. Szczegy zostan podane w podrozdziaach Regulowanie
uprawnie uytkownikw i Blokowanie dostpu
w rozdziale 6. (Konta uytkownikw i bezpieczestwo).
2. Utworzy now baz danych. Nada jej podan
nazw.

3. Dla kadej tabeli w pierwotnej bazie danych wykona polecenie SHOW TABLES i RENAME TABLE w celu
przeniesienia tabel do nowej bazy danych.

ROZDZIA 2

Tworzenie
baz danych
Tworzenie
tabel i zarzdzanie nimi

4. Nada uytkownikom pierwotnej bazy danych uprawnienia dostpu do nowej bazy danych.

6. Usun pierwotn baz danych.


Kod realizujcy migracj tabel ksika, czytelnik i wypoyczenie z bazy danych ksiki do bazy danych
biblioteka mgby wyglda tak:
-- Czasowe zablokowanie dostpu
CREATE DATABASE biblioteka;
RENAME TABLE ksiki.ksika TO biblioteka.ksika;
RENAME TABLE ksiki.czytelnik TO biblioteka.czytelnik;
RENAME TABLE ksiki.wypoyczenie TO
biblioteka.wypoyczenie;
-- Przeniesienie uprawnie uytkownikw
-- Aktywacja uprawnie

Tworzenie tabel
i zarzdzanie nimi
Tabele to struktury nieco bardziej skomplikowane od
baz danych, nic dziwnego wic, e ich tworzenie jest
trudniejsze, tak samo jak zarzdzanie tabelami.
W najbliszych punktach skupimy si na absolutnych podstawach, niezbdnych do przetrwania w obcym rodowisku. Przy tworzeniu tabel mamy bowiem do dyspozycji

TWORZENIE BAZ DANYCH, TABEL I INDEKSW I ZARZDZANIE NIMI

5. Sprawdzi, czy wszystko dziaa.

29

ROZDZIA 2

TWORZENIE BAZ DANYCH, TABEL I INDEKSW I ZARZDZANIE NIMI


30

Tworzenie tabel i zarzdzanie nimi

dosownie setki opcji, a przy realizacji bardziej zoonych


zada na przykad przy definiowaniu domylnego porzdku sortowania dla kolumn czy tworzeniu tabel majcych przechowywa terabajty danych trzeba korzysta
z dodatkowych zasobw.

Wypisywanie wszystkich
albo wybranych tabel bazy danych
SHOW TABLES;
SHOW TABLES IN nazwa_bazy_danych;
SHOW_TABLES LIKE 'sowo%'
SHOW TABLES IN nazwa_bazy_danych LIKE 'sowo%'

Pierwsza wersja polecenia SHOW TABLES wypisuje wszystkie tabele zdefiniowane w domylnej bazie danych; posta druga wypisuje komplet tabel z bazy danych wskazanej
przez nazw. Trzecia i czwarta wersja tego samego polecenia wykorzystuj operator LIKE do filtrowania nazw
tabel.
WSKAZWKA
Podobnie jak w przypadku polecenia SHOW DATABASES,
operator LIKE suy do ograniczania wykazu tabel bazy danych wypisywanych poleceniem SHOW TABLES. Wicej
o operatorze LIKE dowiesz si z podrozdziau Filtrowanie listy baz danych.

Tworzenie tabel

Tworzenie tabel jest tak skomplikowane z dwch powodw:


po pierwsze, z racji zoonoci skadni zapyta tworzcych
tabele, obejmujcej wiele elementw. Druga przyczyna to
konieczno wyboru ukadu tabeli, co jest zadaniem jeszcze trudniejszym.
Zamiast zajmowa si szczegowo oboma aspektami, posuymy si przykadem, przypominajcym to, co trzeba
wiedzie (albo si dowiedzie) o tworzeniu tabel. Penej
skadni podawanych polece naley szuka w dokumentacji MySQL, publikowanej w sieci WWW.

Zmiana nazw tabel


RENAME TABLE pierwotna_nazwa TO nowa_nazwa;

Skadnia zmiany nazwy tabeli jest wyjtkowo nieskomplikowana.

TWORZENIE BAZ DANYCH, TABEL I INDEKSW I ZARZDZANIE NIMI

CREATE TABLE ksika (


id
SMALLINT UNSIGNED AUTO_INCREMENT NOT NULL,
tytul VARCHAR(255) NOT NULL,
autor VARCHAR(255) NOT NULL,
stan ENUM('podniszczona', 'dobra', 'idealna',
'nowa') NOT NULL,
PRIMARY KEY (id_ksiki),
};

ROZDZIA 2

Tworzenie tabel i zarzdzanie nimi

31

ROZDZIA 2

TWORZENIE BAZ DANYCH, TABEL I INDEKSW I ZARZDZANIE NIMI


32

Tworzenie tabel i zarzdzanie nimi

WSKAZWKA
Przy zmienianiu nazw tabel naley pamita o obecnoci
uytkownikw i aplikacji, ktrzy bd oczekiwa obecnoci
tabel o znanych im nazwach i odwoywa si do nich przez
ich pierwotne nazwy. Moliwe w takim ukadzie problemy
zostay rozpoznane w podrozdziale Wyszukiwanie uytkownikw bazy danych bd tabeli rozdziau 6.

Usuwanie tabel
DROP TABLE nazwa_tabeli;

Usunicie tabeli oznacza, e (poza ewentualnymi kopiami


zapasowymi) tabela znika na dobre. Dlatego polecenie to
naley stosowa ostronie.
WSKAZWKA
Przy braku ogranicze odnonie do przestrzeni dyskowej,
zamiast usuwa tabele, lepiej zmienia im nazwy. I dopiero
po pewnym okresie prbnym (na przykad po tygodniu), kiedy wiadomo na pewno, e nieobecno tabeli nie wywoaa
adnych problemw, mona j z czystym sumieniem usun.

Kopiowanie tabel
CREATE TABLE nowa_tabela LIKE pierwotna_tabela;
INSERT nowa_tabela SELECT * FROM pierwotna_tabela;

Kopie istniejcych tabel przydaj si do testowania zapyta


potencjalnie destrukcyjnych, instalowania nowego egzemplarza aplikacji bazodanowej i tym podobnych operacji.

Kopiowanie moe si odbywa na wiele sposobw. Dwa


zapytania przedstawione powyej (wykonane cznie) tworz kompletn kopi struktury i danych tabeli wraz z jej
indeksami, opcjami tabeli i wszelkimi jej atrybutami.

Tabele mona te kopiowa inaczej; alternatywne sposoby


bywaj grone, szybsze, nadaj si dla szczeglnych rodzajw tabel, czy te nie wykonuj tak dokadnej kopii.
Z atwoci mona skopiowa tabel jednej bazy danych do
innej bazy danych, wystarczy przed nazwami tabel poda
nazwy baz danych. Oto przykad:
CREATE TABLE bd1.tabela LIKE bd2.tabela;
INSERT bd1.tabela SELECT * FROM bd2.tabela;

Operator LIKE wykorzystany w powyszym zapytaniu dziaa


inaczej ni ten sam operator LIKE zastosowany w poleceniach SHOW i klauzulach WHERE zapyta.

Tworzenie kolumn tabel


i zarzdzanie nimi
Kolumny s zazwyczaj tworzone przy okazji tworzenia
tabeli. Jeli potem pojawi si potrzeba zmiany ukadu czy
atrybutw kolumn, mona to zrobi operacja dodania
kolumny albo zmiany definicji istniejcej kolumny tabeli
nie jest wcale rzadkoci.
Nawet drobne modyfikacje istniejcych kolumn wymuszaj przebudowanie tabeli. Dlatego przed tak zmian

TWORZENIE BAZ DANYCH, TABEL I INDEKSW I ZARZDZANIE NIMI

WSKAZWKA

ROZDZIA 2

Tworzenie kolumn tabel i zarzdzanie nimi

33

ROZDZIA 2

TWORZENIE BAZ DANYCH, TABEL I INDEKSW I ZARZDZANIE NIMI


34

Tworzenie kolumn tabel i zarzdzanie nimi

naley zawsze wykona kopi zapasow. W przypadku


tabel przechowujcych gigabajty danych przebudowa moe
by dugotrwaa; warto wic rozway wprowadzanie
takich zmian albo w czasie planowanego przestoju konserwacyjnego, albo po prostu na kopii tabeli.

Dodawanie kolumn
ALTER TABLE nazwa_tabeli
ADD COLUMN [definicja_kolumny];
ALTER TABLE ksika
ADD COLUMN ISBN VARCHAR(10) NOT NULL;

Jak wida, kolumny mona atwo dodawa do istniejcych ju tabel.


Dodanie kolumny polega na przygotowaniu definicji kolumny tak, jak dla zapytania CREATE TABLE, i uyciu definicji
w zapytaniu ALTER TABLE nazwa_tabeli ADD COLUMN.
Pierwsze zapytanie pokazuje posta ogln zapytania dodajcego kolumn do tabeli; zapytanie drugie to konkretne zapytanie operujce na tabeli przykadowej ksika,
uzupeniajce j o kolumn ISBN.

Zmiana definicji (i nazw) kolumn


ALTER TABLE nazwa_tabeli
CHANGE COLUMN nazwa_kolumny
[definicja_kolumny];
ALTER TABLE ksika
CHANGE COLUMN ISBN isbn VARCHAR(10) NOT NULL;

Pierwsze z powyszych zapyta ilustruje ogln skadni


zapyta zmieniajcych kolumny; drugie pokazuje sposb
zmiany nazwy i szerokoci pola kolumny ISBN w tabeli
ksika.

Usuwanie kolumn
ALTER TABLE nazwa_tabeli DROP COLUMN nazwa_kolumny;

Usuwanie kolumny z tabeli bazy danych to prosta operacja. Jednak jak zwykle w przypadku polece usuwajcych
co z bazy danych, trzeba pamita o zagroeniach: skoro
nie mona wycofa operacji usunicia, trzeba pamita
o uytkownikach i aplikacjach odwoujcych si do usuwanego elementu.
WSKAZWKA
Usunicie kolumny powoduje automatyczne usunicie wszelkich indeksw obejmujcych t kolumn.

TWORZENIE BAZ DANYCH, TABEL I INDEKSW I ZARZDZANIE NIMI

Zmiana definicji kolumny (z ewentualnym nadaniem jej


nowej nazwy) przebiega podobnie do operacji dodawania nowej kolumny do tabeli. Wida jednak drobn rnic w skadni zapytania: zamiast ALTER TABLE ADD
COLUMN stosuje si ALTER TABLE CHANGE COLUMN. Definicja kolumny musi przed okreleniem typu i atrybutw
kolumny podawa jej nazw, wic przy zmianie samej definicji kolumny jej nazwa musi pojawi si w zapytaniu
dwukrotnie.

ROZDZIA 2

Tworzenie kolumn tabel i zarzdzanie nimi

35

ROZDZIA 2

TWORZENIE BAZ DANYCH, TABEL I INDEKSW I ZARZDZANIE NIMI


36

Tworzenie indeksw i zarzdzanie nimi

Identyfikatory
Identyfikatory MySQL, w tym nazwy baz danych i tabel,
s zazwyczaj rozpatrywane z uwzgldnieniem wielkoci
poszczeglnych liter. Dlatego dla uproszczenia najlepiej
definiowa identyfikatory z uyciem samych maych liter.
Aby wymusi na wikszoci platform spjne zachowanie
MySQL pod tym wzgldem, naley ustawi zmienn konfiguracyjn lower_case_table_names na 1. W ten sposb
wszystkie identyfikatory, w ktrych wana jest wielko
liter, bd traktowane jak pisane maymi literami. Wicej
informacji o identyfikatorach mona znale w podrczniku MySQL pod adresem http://mysql.com/identifier case
sensitivity.

Tworzenie indeksw
i zarzdzanie nimi
Indeksy s czsto najwaniejszym czynnikiem okrelajcym szybko wybierania danych z duych tabel.
W tym podrozdziale zajmiemy si tworzeniem indeksw
i podstawowymi aspektami zarzdzania indeksami. Nie
bdziemy zajmowa si zagadnieniami takimi jak optymalny wybr kolumny dla indeksu czy sposobami uywania
indeksw. Zainteresowanych szczegami odsyamy do
rozdziau 4., Wydobywanie danych. Proste zapytania.

Dodawanie indeksu do tabeli

Aby doda indeks do zestawu kolumn istniejcej tabeli,


naley skorzysta z polecenia CREATE INDEX (ewentualnie
ALTER TABLE, ale polecenie CREATE INDEX atwiej zapamita).
Polecenie wymaga okrelenia nazwy nowego indeksu
oraz nazwy tabeli, ktrej indeks ma dotyczy, wraz z nazwami kolumn, na ktrych indeks ma bazowa.
Pierwsze zapytanie ilustruje ogln skadni polecenia
tworzcego indeks, w ktrym naleaoby wstawi wasne
nazwy i wartoci. Pozostae zapytania pokazuj konkretne
przykady tworzenia rozmaitych indeksw dla tabeli
ksika.

Zmiana nazwy indeksu


Zmiana nazwy indeksu to do rzadka operacja. Indeks
jest najczciej zwyczajnie usuwany, ewentualnie zmienia
si jego definicj. Kiedy trzeba zmieni nazw indeksu,
najlepiej po prostu usun indeks i utworzy nowy, o podanej nazwie.

TWORZENIE BAZ DANYCH, TABEL I INDEKSW I ZARZDZANIE NIMI

CREATE INDEX nazwa_indeksu


ON nazwa_tabeli (nazwa_kolumny, );
CREATE INDEX autor ON ksika (autor);
CREATE INDEX autor ON ksika (autor(16));
CREATE INDEX tytul_autor ON ksika (tytul, autor);

ROZDZIA 2

Tworzenie indeksw i zarzdzanie nimi

37

ROZDZIA 2

TWORZENIE BAZ DANYCH, TABEL I INDEKSW I ZARZDZANIE NIMI


38

Zobacz rwnie

Usuwanie indeksu
DROP INDEX nazwa_indeksu ON nazwa_tabeli;
DROP INDEX autor ON ksika;

Skadnia usuwania indeksu jest bardzo prosta wystarczy poda nazw tabeli i nazw indeksu, ktry ma z niej
zosta usunity.
Pierwsze zapytanie prezentuje ogln posta zapytania
usuwajcego indeks; drugie to przykad usunicia indeksu
autor z tabeli ksika.

Zobacz rwnie
Zagadnienia opisywane w niniejszym rozdziale s szerzej
omawiane w dostpnej on-line dokumentacji MySQL, pod
nastpujcymi adresami:
n

Zapytania definicji danych http://dev.mysql.com/


doc/refman/5.0/en/data-definition.html

Wykorzystywanie indeksw w MySQL


http://dev.mysql.com/doc/refman/5.0/en/
mysql-indexes.html

You might also like