SQL - MySQL.pdf

(729 KB) Pobierz
sql_mysql.dvi
J¦zyk SQL
(na przykªadzie serwera MySQL)
Materiaªy pomocnicze do wykªadu
Wersja 2.2.4
Ostatnia aktualizacja: 16-05-2006
ARTUR GRAMACKI
Uniwersytet Zielonogórski
Instytut Informatyki i Elektroniki
Spis tre±ci
1 Uwagi wst¦pne 4
1.1 Na pocz¡tek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Podstawowe grupy polece« . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Przechowywanie danych w MySQL . . . . . . . . . . . . . . . . . . . . . . 6
2 Polecenie SELECT
8
2.1 Skªadnia polecenia SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Najprostsze przykªady . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Klauzula ORDER BY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Klauzula WHERE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5 Ograniczanie wyników wyszukiwania za pomoc¡ klauzuli LIMIT . . . . . . 23
2.6 Operatory i funkcje porównywania . . . . . . . . . . . . . . . . . . . . . . 25
2.7 Aliasy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.8 Wyra»enia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.9 Warto±ci puste (NULL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.10 Eliminowanie duplikatów . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.11 Funkcje agreguj¡ce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.12 Klauzula GROUP BY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.13 Klauzula HAVING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.14 Zª¡czania tabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.14.1 Iloczyn kartezja«ski (ang. Cross Join) . . . . . . . . . . . . . . . . 44
2.14.2 Zª¡czenia równo±ciowe (ang. Equi Join lub Inner Join) . . . . . . . 45
2.14.3 Zª¡czenia nierówno±ciowe (ang. Theta Join) . . . . . . . . . . . . . 60
2.14.4 Zª¡czenia zwrotne (ang. Self Join) . . . . . . . . . . . . . . . . . . 62
2.14.5 Zª¡czenia zewn¦trzne (ang. Outer Joins) . . . . . . . . . . . . . . . 67
2.15 Operatory UNION, UNION ALL . . . . . . . . . . . . . . . . . . . . . . . 78
2.16 Podzapytania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
2
2.16.1 Podzapytania zwracaj¡ce jeden rekord . . . . . . . . . . . . . . . . 84
2.16.2 Podzapytania zwracaj¡ce wi¦cej ni» jeden rekord . . . . . . . . . . . 87
2.16.3 Operatory ANY oraz ALL . . . . . . . . . . . . . . . . . . . . . . . 90
2.16.4 Podzapytania skorelowane, operatory EXISTS oraz NOT EXISTS . 92
2.16.5 Przykªady podzapyta«, które mo»na zast¡pi¢ zª¡czeniami . . . . . . 97
2.16.6 Podzapytania w klauzuli FROM . . . . . . . . . . . . . . . . . . . . 101
3 Funkcje formatuj¡ce 103
3.1 Uwagi wst¦pne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
3.2 Funkcje operuj¡ce na ªa«cuchach . . . . . . . . . . . . . . . . . . . . . . . 103
3.3 Funkcje operuj¡ce na liczbach . . . . . . . . . . . . . . . . . . . . . . . . . 110
3.4 Funkcje operuj¡ce na dacie i czasie . . . . . . . . . . . . . . . . . . . . . . 111
4 Polecenie INSERT
114
5 Polecenie UPDATE
121
6 Polecenie DELETE
127
7 Polecenie CREATE 131
7.1 Tworzenie tabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
7.2 Tworzenie i wykorzystywanie widoków (ang. view) . . . . . . . . . . . . . . 136
7.3 Tworzenie ogranicze« integralno±ciowych (ang. constraints) . . . . . . . . . 139
7.4 Obsªuga ogranicze« w MySQL . . . . . . . . . . . . . . . . . . . . . . . . . 149
7.5 Indeksy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
8 Polecenie ALTER
157
9 Polecenie DROP
162
10 Model demonstracyjny
167
Przygotowaª: dr in». Artur Gramacki
3
37382805.011.png
Rozdziaª 1
Uwagi wst¦pne
1.1 Na pocz¡tek
Opracowanie omawia podstawowe elementy j¦zyka SQL na przykªadzie serwera MySQL.
W zamierzeniu autora ma ono stanowi¢ materiaª pomocniczy do prowadzenia wykªadu
oraz ¢wicze« laboratoryjnych z przedmiotu Bazy danych (oraz pokrewne). Opracowanie
mo»e by¢ materiaªem do samodzielnego studiowania, jednak nale»y mie¢ ±wiadomo±¢, »e
brak jest w nim bardziej systematycznego omówienia j¦zyka SQL. J¦zyk ten omówiono
posªuguj¡c si¦ du»¡ liczb¡ (ponad 100) przykªadów, ograniczaj¡c natomiast do minimum
komentarz sªowny. Starano si¦ przedstawi¢ jedynie jego najwa»niejsze elementy, najbar-
dziej przydatne w praktyce. Wiele pomniejszych kwestii jest pomini¦tych lub omówionych
tylko pobie»nie.
Wszystkie przykªady testowane byªy w systemie MySQL, w wersji 5.0.16, jednak powin-
ny bez »adnych zmian dziaªa¢ równie» w nowszych wersjach. Wcze±niejsze wersje mog¡
natomiast nie wspiera¢ pewnych elementów j¦zyka SQL (np. podzapytania). Wi¦kszo±¢
przykªadów mo»na wykona¢ równie» w innych ni» MySQL systemach bazodanowych (np.
ORACLE). Niektóre przykªady wykorzystuj¡ jednak specyczne cechy MySQL-a oraz
wprowadzane przez niego rozszerzenia i odst¦pstwa od standardu SQL i dlatego urucho-
mienie ich na innej bazie danych mo»e wymaga¢ wprowadzenia niewielkich zmian.
Szczegóªowy opis wszystkich polece« j¦zyka SQL w systemie MySQL mo»na znale¹¢ w do-
kumentacji. Szczególnie polecamy bardzo obszerne i dokªadne opracownanie [3].
Zdecydowania wi¦kszo±¢ przykªadów operuje na demonstracyjnym modelu, którego krótki
opis zamieszczono na ko«cu opracowania (rozdziaª 10). Dlatego te» nale»y upewni¢ si¦,
»e skrypt tworz¡cy ten model wykonaª si¦ bezbª¦dnie.
Wszystkie przykªady pokazane w opracowaniu zostaªy wykonane w konsoli tekstowej ser-
wera MySQL. Poni»ej pokazano wygl¡d ekranu po prawidªowy uruchomieniu programu
oraz po prawidªowym poª¡czeniu si¦ z jego pomoc¡ do serwera MySQL (nazwa: u»yt-
kownika, jego hasªo oraz nazwa bazy danych s¡ przykªadowe. Oczywi±cie hasªo zwykle
nie powinno by¢ wpisywane otwartym testem. Lepiej po przeª¡czniku -p nie wpisywa¢
hasªa zostaniemy o nie poproszeni w trakcie uruchamiania programu).
W zale»no±ci od konguracji systemu napisy mog¡ by¢ w j¦zyku innym ni» angielski
domy±lnie jest to oczywi±cie j¦zyk angielski.
4
shell> mysql -u ulab -phlab blab
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 5.0.16-nt-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
W opracowaniu przyj¦to generaln¡ zasad¦ (poza bardzo nielicznymi wyj¡tkami), »e:
wszystkie polecenia j¦zyka SQL umieszczone s¡ w ramkach i pisane s¡ czcionk¡
maszynow¡,
wyniki polece« j¦zyka SQL, komunikaty ostrze»e« oraz komunikaty o bª¦dach nie s¡
umieszczane w ramkach i równie» pisane s¡ czcionk¡ maszynow¡,
wszelkie sªowa kluczowe j¦zyka SQL pisane s¡ DUYMI LITERAMI w kolorze NIEBIE-
SKIM ,
ci¡gi znakowe ujmowane w apostrofy lub cydzysªowy pisane s¡ w kolorze czerwonym ,
nazwy funkcji pisane s¡ DUYMI LITERAMI w kolorze OLIWKOWYM .
1.2 Podstawowe grupy polece«
Grupa Polecenie Opis
DML SELECT
wy±wietlanie rekordów
DML INSERT
wstawianie rekordów
DML UPDATE
modykacja rekordów
DML DELETE
kasowanie rekordów
DDL
CREATE
tworzenie obiektów (np. tabel)
DDL
ALTER
modykowanie obiektów (np. tabel)
DDL
DROP
kasowanie obiektów (np. tabel)
DCL
COMMIT
zatwierdza zmiany wprowadzone za pomoc¡ polece« DML
DCL
ROLLBACK wycofuje (anuluje) zmiany wprowadzone za pomoc¡ polece« DML
Poszczególne polecenia SQL, w zale»no±ci od wykonywanych czynno±ci, mo»na zebra¢
w trzy podstawowe grupy. S¡ to:
DML Data Manipluation Language,
DDL Data Denition Language,
DCL Data Control Language.
Przygotowaª: dr in». Artur Gramacki
5
37382805.012.png 37382805.013.png 37382805.014.png 37382805.001.png 37382805.002.png 37382805.003.png 37382805.004.png 37382805.005.png 37382805.006.png 37382805.007.png 37382805.008.png 37382805.009.png 37382805.010.png
Zgłoś jeśli naruszono regulamin