You are on page 1of 13

Id do

Spis treci
Przykadowy rozdzia
Katalog ksiek

SQL. wiczenia
praktyczne. Wydanie II
Autor: Marcin Lis
ISBN: 978-83-246-3051-6
Format: 140208, stron: 176

Katalog online
Zamw drukowany
katalog
Twj koszyk
Dodaj do koszyka
Cennik i informacje
Zamw informacje
o nowociach
Zamw cennik
Czytelnia
Fragmenty ksiek
online

Kontakt
Helion SA
ul. Kociuszki 1c
44-100 Gliwice
tel. 32 230 98 63
e-mail: helion@helion.pl
Helion 19912011

Byskawicznie opanuj sztuk posugiwania si bazami danych opartymi na SQL!


Podstawy relacyjnych baz danych czyli co warto wiedzie na pocztek
Praca z danymi czyli umieszczanie ich w bazie, modyfikacja i usuwanie
Uatwianie sobie ycia czyli funkcje agregujce, podzapytania i transakcje
Relacyjne bazy danych, oparte na jzyku SQL, to dzi niezwykle popularne i najczciej uywane
struktury do przechowywania duej iloci danych. Nie tylko uatwiaj segregowanie i szybkie
uzyskiwanie potrzebnych informacji umoliwiaj te przeprowadzanie na danych rozmaitych
zoonych operacji, oszczdzajcych uytkownikom ogromne iloci czasu. Pozwalaj bez trudu
dodawa nowe dane, zmienia i usuwa te znajdujce si ju w bazie oraz wyuskiwa wszelkie
wiadomoci pod ktem specyficznych, szczegowych kryteriw wyszukiwania. Wystarczy tylko
pozna podstawowe zasady dziaania jzyka SQL.
SQL. wiczenia praktyczne. Wydanie II pomoe Ci opanowa podstawy tego jzyka, a take
wskae, jak posugiwa si nim w konkretnych przypadkach. Znajdziesz tu wiedz potrzebn do
utworzenia bazy danych w jednym z kilku najpopularniejszych systemw bazodanowych,
zaprojektowania tabel optymalnych dla treci, ktre chcesz w nich przechowywa, wprowadzania
danych do bazy i modyfikowania ich. Zobaczysz take, co zrobi, by atwo, szybko i precyzyjnie
wyszuka interesujce Ci informacje, pobra je i posortowa. Dowiesz si, co to s funkcje agregujce,
wizy integralnoci i podzapytania oraz jak korzysta z transakcji. Krtko mwic, znajdziesz tu
wszystko, co musisz wiedzie, by sprawnie i wygodnie korzysta ze swojej bazy danych.
Podstawy relacyjnych baz danych
Praca z tabelami
Umieszczanie danych w bazie
Pobieranie danych z tabel
Zoone kryteria wyszukiwania
Modyfikacja i usuwanie danych
Zczenia
Funkcje agregujce
Podzapytania
Wizy integralnoci
Transakcje
Instalacja i podstawowa konfiguracja baz
Stwrz wasn baz danych i korzystaj z jej moliwoci!

Spis treci
Wstp
Rozdzia 1. Podstawy relacyjnych baz danych
Tabele
Klucze
Relacje
Podstawowe zasady projektowania tabel
Okrelenie celu
Duplikowanie danych
Informacje atomowe
Puste pola
Jednoznaczna identyfikacja rekordw

Rozdzia 2. Praca z tabelami


Typy danych
Typy liczbowe
Typy daty i czasu
Typy acuchowe
Typ null
Tworzenie i wybr bazy danych
Tworzenie tabel
Atrybuty kolumn
Indeksy
Modyfikacja tabel
Usuwanie tabel

9
13
13
14
15
20
20
21
22
24
26

27
27
28
29
29
30
31
32
34
39
42
49

SQL wiczenia praktyczne

Rozdzia 3. Umieszczanie danych w bazie


Instrukcja INSERT INTO
Wprowadzanie wielu wierszy
Druga posta instrukcji INSERT

Rozdzia 4. Pobieranie danych z tabel


Podstawy instrukcji SELECT
Sortowanie wynikw zapyta
Kryteria pobierania danych
Niepowtarzalno wierszy

51
51
57
59

61
61
65
67
75

Rozdzia 5. Modyfikacja i usuwanie danych

77

Instrukcja UPDATE
Modyfikacja danych w tabelach
Usuwanie danych

77
78
81

Rozdzia 6. Zczenia
czenie wynikw zapyta
Instrukcja UNION
Instrukcja INTERSECT
Instrukcja EXCEPT
Pobieranie danych z wielu tabel
Zczenia
Zczenie typu CROSS JOIN
Zczenie typu INNER JOIN
Zczenie typu LEFT OUTER JOIN
Zczenie typu RIGHT OUTER JOIN
Zczenie typu FULL OUTER JOIN
Zczenia i klauzula WHERE
Aliasy tabel i rozrnianie nazw kolumn

85
85
86
87
88
89
94
94
95
96
97
99
100
100

Rozdzia 7. Funkcje agregujce

105

Rozdzia 8. Grupowanie danych

115

Rozdzia 9. Podzapytania

123

Podzapytania w klauzuli FROM


Podzapytania klauzuli WHERE
Podzapytania proste
Podzapytania skorelowane
Podzapytania w instrukcjach aktualizujcych dane

124
126
126
128
130

Spis treci

Rozdzia 10. Transakcje


Transakcje w systemach baz danych
Obj cie instrukcji transakcj
Wycofywanie transakcji
Izolacja transakcji

Rozdzia 11. Wizy integralnoci

Dodatek A

133
133
134
135
136

139

Integralno danych
Definiowanie klucza obcego
Dodawanie i usuwanie wi zw

139
140
143

Instalacja i podstawowa konfiguracja baz

145

Baza MySQL
Instalacja w systemie Linux
Instalacja w systemie Windows
Baza PostgreSQL
Instalacja w systemie Linux
Instalacja w systemie Windows
Baza SQLite
Praca z baz
Baza Microsoft SQL Server (MS SQL)
Instalacja
Tworzenie bazy testowej
Praca z baz
Baza Oracle
Instalacja w systemie Linux
Instalacja w systemie Windows

145
145
150
154
154
158
161
162
162
163
165
166
167
167
171

5
Modyfikacja
i usuwanie danych
Instrukcja UPDATE
Do modyfikacji danych zawartych w tabelach suy instrukcja UPDATE.
Ma ona ogln posta:
UPDATE nazwa_tabeli
SET kolumna1=warto1, kolumna2=warto2, ..., kolumnaN=wartoN
[WHERE warunek]

co oznacza: zmie w tabeli nazwa_tabeli, w kolumnach speniajcych


warunek warunek, warto kolumny kolumna1 na warto1, kolumny
kolumna2 na warto2 itd. Warunek wyst pujcy po klauzuli WHERE jest
przy tym opcjonalny, a jego pomini cie oznacza, e zmiany b d dokonane we wszystkich wierszach. W dalszych wiczeniach b dziemy
korzysta z tabeli pracownicy powstaej w rozdziale 4.
 W I C Z E N I E

5.1

Zmiana wszystkich wartoci we wskazanej kolumnie

Zmie zawarto kolumny pesel w tabeli pracownicy, tak aby wszystkie


wiersze zawieray cig 01234567890.

78

SQL wiczenia praktyczne


Wykonanie wiczenia zmodyfikuje zawarto WSZYSTKICH wierszy w tabeli
pracownicy. Nie pojawi si przy tym adne ostrzeenie czy te pytanie
o potwierdzenie chci wykonania instrukcji. Przywrcenie oryginalnej
zawartoci tabeli bdzie wymagao ponownego wprowadzenia danych.

Zmian wszystkich wartoci w kolumnie pesel zapewni nam instrukcja:


UPDATE pracownicy SET pesel='01234567890';

Jeli teraz wykonamy instrukcj SELECT pobierajc wszystkie dane


z tabeli pracownicy, zobaczymy, e faktycznie wszystkie wiersze kolumny
pesel zostay zmienione, tak jak jest to widoczne na rysunku 5.1.

Rysunek 5.1. Wszystkie dane w kolumnie pesel zostay zmodyfikowane

Modyfikacja danych w tabelach


wiczenie 5.1 pokazao, w jaki sposb zmieni dane we wszystkich
wierszach wybranej kolumny. To jednak rzadko spotykany przypadek;
najcz ciej modyfikacji podlegaj tylko rekordy speniajce zadane
kryteria. Przykadowo, mogoby si okaza, e Kacper Adamczyk ma
przypisany b dny numer PESEL i naley go zmieni z 92341678903 na
12341678993.
 W I C Z E N I E

5.2

Modyfikacja kolumny w wybranym wierszu tabeli

Zmie numer PESEL przypisany Kacprowi Adamczykowi w tabeli


pracownicy.

Rozdzia 5. Modyfikacja i usuwanie danych

79

Aby wykona wiczenie, naley zastosowa instrukcj :


UPDATE pracownicy SET pesel='12341678993' WHERE id=7;

Warunek id=7 zosta zastosowany, gdy pole id jest kluczem gwnym


jednoznacznie identyfikujcym kady rekord. Co prawda mona by
wykona rwnie instrukcj :
UPDATE pracownicy SET pesel='12341678993' WHERE pesel='92341678903';

ale nie jest to sposb polecany. W pierwszym bowiem przypadku zawsze mamy pewno, ktry rekord zostanie zmodyfikowany, w drugim
niestety, nie. Nie moemy mie bowiem gwarancji, e w bazie nie znajduje si ju PESEL 92341678903, gdy ta kolumna nie gwarantuje unikalnoci kadego wpisu i nie powinna by stosowana jako wyrnik
modyfikowanego wiersza (jeden PESEL mg by np. b dnie przypisany kilku osobom).
Nic nie stoi rwnie na przeszkodzie, aby jednoczenie zmodyfikowa
kilka pl w danym wierszu. Moglibymy na przykad zmieni od razu
imi , stanowisko i pac danej osoby.
 W I C Z E N I E

5.3

Modyfikacja kilku kolumn w jednym wierszu

Zmodyfikuj dane wybranej osoby tak, aby jednoczenie zostay zmienione: nazwisko, stanowisko oraz paca.
Aby wykona to zadanie, moemy wykona instrukcj :
UPDATE pracownicy SET nazwisko='Andrzejewski', placa=3440.00,
stanowisko='kierownik' WHERE id=8;

Tym samym Kamil Andrzejczak, pracujcy na stanowisku asystenta,


z pac 1200 z, stanie si Kamilem Andrzejewskim, pracujcym na stanowisku kierowniczym, z pac 3440 z. O tym, e taka zmiana faktycznie nastpia, moemy si przekona, wykonujc instrukcj SELECT
w postaci:
SELECT * FROM pracownicy WHERE id=8;

co zostao rwnie zobrazowane na rysunku 5.2.

80

SQL wiczenia praktyczne

Rysunek 5.2. Zmiana kilku danych w wybranym wierszu

Moliwoci instrukcji UPDATE nie ograniczaj si tylko do modyfikacji


danych w jednym wierszu. To, ktre rekordy zostan zmodyfikowane,
zaley tylko od warunku klauzuli WHERE. Moemy wi c np. zmieni
nazw stanowiska sprzedawca na doradca klienta we wszystkich
wierszach kolumny stanowisko.
 W I C Z E N I E

5.4

Modyfikacja kilku rekordw

W kolumnie stanowisko zmie wpisy o treci sprzedawca na doradca


klienta.
Aby wykona tak przedstawione zadanie, naley posuy si instrukcj:
UPDATE pracownicy SET stanowisko='doradca klienta' WHERE
stanowisko='sprzedawca';

Pobranie danych z tabeli pokae, e zmiana faktycznie zostaa dokonana


(rysunek 5.3).
Naraz mona take modyfikowa wiele kolumn w wielu wierszach.
Jeli wi c firma przechowujca dane w tabeli pracownicy przejdzie
kolejn reorganizacj i doradcy klientw ponownie stan si sprzedawcami, i jednoczenie ich pace zostan zrwnane do 1400 z, wszelkich niezb dnych zmian dokonamy rwnie dzi ki jednemu tylko
zapytaniu.

Rozdzia 5. Modyfikacja i usuwanie danych

81

Rysunek 5.3. Nazwa stanowiska sprzedawca zostaa zmieniona


na doradca klienta
 W I C Z E N I E

5.5

Modyfikacja kilku kolumn w wielu wierszach

Uyj pojedynczego zapytania do zmiany nazwy stanowiska doradca


klienta na sprzedawca oraz pacy osb na tym stanowisku na 1400 z.
Niezb dne zapytanie ma posta:
UPDATE pracownicy SET stanowisko='sprzedawca', placa=1400.00 WHERE
stanowisko='doradca klienta';
 W I C Z E N I E

5.6

Modyfikacja kolumn z wartoci NULL

Zmodyfikuj zawarto kolumny pesel w taki sposb, aby wiersze majce


w niej warto NULL miay przypisany cig znakw nieznany.
UPDATE pracownicy SET pesel='nieznany' WHERE pesel IS NULL;

Usuwanie danych
Do usuwania danych suy instrukcja DELETE o oglnej postaci:
DELETE FROM tabela
[WHERE warunek]

82

SQL wiczenia praktyczne

Oznacza ona: usu z tabeli tabela wszystkie wiersze speniajce warunek warunek. Jeli warunek zostanie pomini ty, zostan usuni te wszystkie dane (podobnie jak w przypadku instrukcji UPDATE, gdzie pomini cie warunku powodowao modyfikacj wszystkich wierszy tabeli).
 W I C Z E N I E

5.7

Usunicie wszystkich danych z tabeli

Usu wszystkie dane z tabeli pracownicy.


Aby usun wszystkie dane z tabeli pracownicy, naley wykona
instrukcj :
DELETE FROM pracownicy;

Po jej wykonaniu tabela pracownicy nie b dzie zawieraa adnych


danych. Tak konstrukcj naley wi c stosowa z rozwag, gdy serwer nie wygeneruje adnego ostrzeenia czy dodatkowego pytania.
Wpisanie powyszej konstrukcji i zatwierdzenie jej klawiszem Enter
spowoduje natychmiastowe skasowanie danych!

Selektywne usuwanie danych zapewnia uycie klauzuli WHERE z odpowiednim wyraeniem warunkowym, ktre konstruuje si na takich
samych zasadach jak w przypadku instrukcji SELECT czy UPDATE. Zostanie to pokazane w kilku kolejnych wiczeniach.
 W I C Z E N I E

5.8

Usunicie wybranego wiersza

Usu z tabeli pracownicy dowolnie wybrany wiersz.


Aby usun z tabeli pracownicy dane osoby o identyfikatorze 5, zastosujemy instrukcj :
DELETE FROM pracownicy WHERE id=5;
 W I C Z E N I E

5.9

Jednoczesne usunicie kilku wierszy

Usu z tabeli pracownicy wiersze o identyfikatorach (wartoci kolumny id): 1, 3, 7.

Rozdzia 5. Modyfikacja i usuwanie danych

83

Aby usun dane osb o identyfikatorach 1, 3 i 7, najprociej wykona


instrukcj :
DELETE FROM pracownicy WHERE id IN (1, 3, 7);

Mona rwnie zastosowa seri warunkw poczonych operatorem OR:


DELETE FROM pracownicy WHERE id=1 OR id=3 OR id=7;
 W I C Z E N I E

5.10

Instrukcja DELETE i operator BETWEEN

Usu z tabeli pracownicy wiersze o identyfikatorach z przedziau 4 8.


Usuni cie z tabeli pracownicy wierszy, ktre maj w kolumnie id wartoci z przedziau 4 8, uzyskamy, wykonujc instrukcj :
DELETE FROM pracownicy WHERE id BETWEEN 4 AND 8;
 W I C Z E N I E

5.11

Usuwanie rekordw ze wzgldu na cig znakw

Usu z tabeli pracownicy dane wszystkich osb o nazwisku Kowalski.


Aby usun z bazy dane pracownikw o nazwisku Kowalski, zastosujemy instrukcj :
DELETE FROM pracownicy WHERE nazwisko='Kowalski';

You might also like