1
1
Wyszukiwanie danych w zapytaniach SQL
Wyszukiwanie danych w zapytaniach SQL
cz.1
cz.1
(opis instrukcji SELECT, ALL|DISTINCT, operatory
(opis instrukcji SELECT, ALL|DISTINCT, operatory
logiczne, LIKE, OR i AND)
logiczne, LIKE, OR i AND)
Prezentacja do ćwiczenia 5
Prezentacja do ćwiczenia 5
Materiały wykorzystane w przykładach:
Materiały wykorzystane w przykładach:
Materiały pomocnicze do ćwiczeń laboratoryjnych\Ćwiczenie 5
Materiały pomocnicze do ćwiczeń laboratoryjnych\Ćwiczenie 5
2
2
Zakres ćwiczeń
Zakres ćwiczeń
Celem prezentacji jest wprowadzenia do tworzenia zapytań SELECT z
Celem prezentacji jest wprowadzenia do tworzenia zapytań SELECT z
różnymi parametrami i opcjami.
różnymi parametrami i opcjami.
W przykładach zawartych w prezentacji do laboratorium opisane
W przykładach zawartych w prezentacji do laboratorium opisane
zostaną następujące zagadnienia:
zostaną następujące zagadnienia:
Operatory porównania (<>, = , <, >, <=, >=)
Operatory porównania (<>, = , <, >, <=, >=)
Operatory AND i OR
Operatory AND i OR
Słowo kluczowe ALL i DISTINCT
Słowo kluczowe ALL i DISTINCT
Predykat LIKE
Predykat LIKE
Zaprzeczenie NOT
Zaprzeczenie NOT
Prezentacja kończy się ćwiczeniami do wykonania, aby utrwalić
Prezentacja kończy się ćwiczeniami do wykonania, aby utrwalić
nabytą
nabytą
wiedzę.
wiedzę.
3
3
Instrukcja SELECT
Pobieranie danych z bazy danych umożliwia zastosowanie instrukcji
SELECT, czyli wykonanie zapytania. Nazywana INSTRUKCJA
WYBIERAJĄCĄ .
Instrukcja SELECT zwraca zbiór wierszy i kolumn.
Podstawowa składnia instrukcji SELECT:
Select [lista_pól]
From [tabela(e)];
Wyrażenie umieszczone w instrukcja SELECT staje się kolumną
zbioru wynikowego danego zapytania. Wyrażeniami mogą być nazwy
kolumn, instrukcje, które generują nowe wartości na podstawie
danych w tabeli, lub funkcje nie mające nic wspólnego z wartościami
kolumn. Instrukcja SELECT umożliwia określenie poszczególnych
elementów danych, które powinny zostać zwrócone przez instrukcję,
którą stworzyliśmy. Wynikiem instrukcji, jest kolumna ze zbiorem
wyników.
Po instrukcji SELECT podajemy listę pól oddzielonych przecinkami,
które pojawią się w wyniku wywołania zapytania. Po słowie FROM
podajemy listę tabel i kwerend oddzielonych przecinkami, które będą
stanowić źródło danych. Po zakończeniu instrukcji należy zawsze
pamiętać o znaku średnika (;).
Inne klauzule wchodzące w skład polecenia SELECT zostaną
szczegółowo omówione w następnych ćwiczeniach.
4
4
Przykłady:
Przykłady:
Przykład 1. Wypisanie całej zawartości tabeli „klient”.
Przykład 1. Wypisanie całej zawartości tabeli „klient”.
use msmot
use msmot
select *
select *
from klient;
from klient;
Instrukcja powyżej jest najprostszą jaka występuje. Wypisuje
Instrukcja powyżej jest najprostszą jaka występuje. Wypisuje
wszystkich klientów z tabeli „klient” , znacznik „*” oznacza, że
wszystkich klientów z tabeli „klient” , znacznik „*” oznacza, że
zostaną wypisane wszystkie kolumny z tabeli (Rysunek 1).
zostaną wypisane wszystkie kolumny z tabeli (Rysunek 1).
Rysunek 1
Polecenie „use” informuje, która baza ma być użyta do wykonania zapytania.
Polecenie „use” informuje, która baza ma być użyta do wykonania zapytania.
Można nie wpisywać „use”, wtedy wybieramy bazę z górnego rozwijalnego
Można nie wpisywać „use”, wtedy wybieramy bazę z górnego rozwijalnego
paska zadań.
paska zadań.
5
5
Przykład 2. Wypisanie zawartości określonych kolumn tabeli „klient”.
Przykład 2. Wypisanie zawartości określonych kolumn tabeli „klient”.
use msmot
use msmot
select imie, nazwisko, ulica, miejscowosc
select imie, nazwisko, ulica, miejscowosc
from klient;
from klient;
Kwerenda wypisze tylko następujące kolumny: imię, nazwisko, ulica oraz
Kwerenda wypisze tylko następujące kolumny: imię, nazwisko, ulica oraz
Miejscowość.
Miejscowość.
Wynik zapytania przedstawia poniższy rysunek:
Wynik zapytania przedstawia poniższy rysunek:
Rysunek 2
6
6
Przykład 3. Z tabeli „klient” zostaną wypisane kolumny zawierające:
Przykład 3. Z tabeli „klient” zostaną wypisane kolumny zawierające:
imię, nazwisko oraz numer telefonu dla osób o imieniu Tomek.
imię, nazwisko oraz numer telefonu dla osób o imieniu Tomek.
use msmot
use msmot
select imie, nazwisko, nr_tel
select imie, nazwisko, nr_tel
from klient
from klient
where imie = 'Tomek';
where imie = 'Tomek';
Działanie kwerendy przedstawia rysunek 3.
Działanie kwerendy przedstawia rysunek 3.
Rysunek 3
Kwerenda została wzbogacona klauzulą WHERE , dzięki niej można
Kwerenda została wzbogacona klauzulą WHERE , dzięki niej można
rozbudować zapytanie o dowolny warunek. W tym przypadku instrukcja
rozbudować zapytanie o dowolny warunek. W tym przypadku instrukcja
SELECT wypisała wszystkich Tomków.
SELECT wypisała wszystkich Tomków.
Jeżeli wyszukiwane dane są typu tekstowego należy je umieścić w
Jeżeli wyszukiwane dane są typu tekstowego należy je umieścić w
apostrofach
apostrofach
np. where imie = 'Tomek‘;
np. where imie = 'Tomek‘;
Jeżeli wyszukiwane dane są typu liczbowego nie używamy apostrofów.
Jeżeli wyszukiwane dane są typu liczbowego nie używamy apostrofów.
np. where nr_tel = 988776661;
np. where nr_tel = 988776661;
7
7
Podstawowa składnia SELECT z klauzulą WHERE:
Podstawowa składnia SELECT z klauzulą WHERE:
Select [lista_pól]
Select [lista_pól]
From [tabela(e)]
From [tabela(e)]
Where [warunek];
Where [warunek];
Do wybrania określonych wierszy z tabeli używa się klauzuli WHERE,
Do wybrania określonych wierszy z tabeli używa się klauzuli WHERE,
która służy do określenia kryterium wyboru wierszy. W klauzuli WHERE
która służy do określenia kryterium wyboru wierszy. W klauzuli WHERE
specyfikujemy warunek, który musi być spełniony dla szukanych wierszy.
specyfikujemy warunek, który musi być spełniony dla szukanych wierszy.
W klauzuli WHERE stosujemy operatory porównania
W klauzuli WHERE stosujemy operatory porównania
=
=
równe
równe
<>
<>
różne
różne
>
>
większe niż
większe niż
>=
>=
większe i równe
większe i równe
<
<
mniejsze niż
mniejsze niż
<=
<=
mniejsze i równe
mniejsze i równe
Instrukcja SELECT z operatorami
porównania.
8
8
Przykłady:
Przykłady:
Przykład 4. Zapytanie wyszuka wszystkie pojemności silnika mniejsze
Przykład 4. Zapytanie wyszuka wszystkie pojemności silnika mniejsze
od „200” z tabeli „pojazdy”.
od „200” z tabeli „pojazdy”.
use msmot
use msmot
select *
select *
from pojazdy
from pojazdy
where pojemnosc < 200;
where pojemnosc < 200;
Kwerenda wypisze wszystkie pojazdy, których pojemność jest
Kwerenda wypisze wszystkie pojazdy, których pojemność jest
mniejsza od „200” (Rysunek 4).
mniejsza od „200” (Rysunek 4).
Rysunek 4
Inne przykłady z zastosowaniem operatorów:
Inne przykłady z zastosowaniem operatorów:
where pojemność <> 200;
where pojemność <> 200;
- wynikiem będą wszystkie pojemności
- wynikiem będą wszystkie pojemności
różne
różne
od „200”
od „200”
where pojemnosc <= 100;
where pojemnosc <= 100;
- wynikiem będą wszystkie pojemności
- wynikiem będą wszystkie pojemności
mniejsze lub równe „100”
mniejsze lub równe „100”
where pojemnosc >= 100;
where pojemnosc >= 100;
- wynikiem będą wszystkie pojemności
- wynikiem będą wszystkie pojemności
większe lub równe „100”
większe lub równe „100”
where pojemnosc = 150;
where pojemnosc = 150;
- wynikiem będą wszystkie pojemności
- wynikiem będą wszystkie pojemności
równe „150”
równe „150”
9
9
Instrukcja SELECT z operatorami
AND i OR.
Kiedy w warunku złożonym do połączenia warunków składowych używamy
Kiedy w warunku złożonym do połączenia warunków składowych używamy
operatora
operatora
AND
AND
oba warunki połączone operatorem
oba warunki połączone operatorem
AND
AND
muszą zostać
muszą zostać
spełnione, tzn. muszą zwrócić wartość prawdy (TRUE).
spełnione, tzn. muszą zwrócić wartość prawdy (TRUE).
Warunek z operatorem
Warunek z operatorem
OR
OR
zwróci wartość TRUE, gdy przynajmniej jedna
zwróci wartość TRUE, gdy przynajmniej jedna
ze
ze
stron zwróci wartość TRUE.
stron zwróci wartość TRUE.
Składnia zapytania z operatorami
Składnia zapytania z operatorami
AND
AND
i
i
OR
OR
:
:
use [baza]
use [baza]
select [kolumna]
select [kolumna]
from [tabela]
from [tabela]
where [instrukcja1] AND/OR [instrukcja2];
where [instrukcja1] AND/OR [instrukcja2];
Operatorów
Operatorów
AND
AND
oraz
oraz
OR
OR
możemy używać jednocześnie do tworzenia
możemy używać jednocześnie do tworzenia
bardziej
bardziej
rozbudowanych zapytań, które przedstawione będą w przykładach.
rozbudowanych zapytań, które przedstawione będą w przykładach.
10
10
Przykłady:
Przykłady:
Przykład 5. Używając operatora AND zostaną wyszukani klienci o
Przykład 5. Używając operatora AND zostaną wyszukani klienci o
nazwisku Kowalski pochodzący z Gdańska z tabeli „klient”.
nazwisku Kowalski pochodzący z Gdańska z tabeli „klient”.
use msmot
use msmot
select *
select *
from klient
from klient
where nazwisko= 'Kowalski'
where nazwisko= 'Kowalski'
and miejscowosc= 'Gdańsk';
and miejscowosc= 'Gdańsk';
Wynik instrukcji prezentuje (Rysunek 5)
Wynik instrukcji prezentuje (Rysunek 5)
Rysunek 5
Zapytanie składa się z jednego operatora
Zapytanie składa się z jednego operatora
AND
AND
, jeżeli chcielibyśmy bardziej
, jeżeli chcielibyśmy bardziej
sprecyzować zapytanie można by było dodać następne operatory
sprecyzować zapytanie można by było dodać następne operatory
AND
AND
.
.
Przykładowo oprócz nazwiska i miejscowości chcielibyśmy dodatkowo wyszukać
Przykładowo oprócz nazwiska i miejscowości chcielibyśmy dodatkowo wyszukać
imię, trzeba by było dodać kolejny operator:
imię, trzeba by było dodać kolejny operator:
where nazwisko= 'Kowalski'
where nazwisko= 'Kowalski'
and miejscowosc= 'Gdańsk‘
and miejscowosc= 'Gdańsk‘
and imie= ‘Marcin’;
and imie= ‘Marcin’;
11
11
Przykłady:
Przykłady:
Przykład 5. Używając operatora
Przykład 5. Używając operatora
AND i OR
AND i OR
wyświetleni zostaną klienci
wyświetleni zostaną klienci
z Gdańska o imieniu Maciej lub Marcin z tabeli „klient”.
z Gdańska o imieniu Maciej lub Marcin z tabeli „klient”.
use msmot
use msmot
select *
select *
from klient
from klient
where miejscowosc = 'Gdańsk'
where miejscowosc = 'Gdańsk'
and (imie='Maciej' or imie='Marcin');
and (imie='Maciej' or imie='Marcin');
Wynik instrukcji prezentuje (Rysunek 6)
Wynik instrukcji prezentuje (Rysunek 6)
Rysunek 6
Kolejność operatorów
Kolejność operatorów
AND i OR
AND i OR
: operator
: operator
AND
AND
dominuje nad operatorem
dominuje nad operatorem
OR
OR
.
.
Warunek w klauzuli WHERE jest otoczony nawiasami. Nawiasy pozwalają
Warunek w klauzuli WHERE jest otoczony nawiasami. Nawiasy pozwalają
określić kolejność wykonywania zadania.
określić kolejność wykonywania zadania.
Zapytanie wyświetla tylko klientów z miejscowości Gdańsk o imionach Maciej
Zapytanie wyświetla tylko klientów z miejscowości Gdańsk o imionach Maciej
lub Marcin.
lub Marcin.
12
12
Instrukcja SELECT z ALL i
DISTINCT.
Słowo kluczowe DISTINCT zapewnia, że wynik zwrócony w wyniku zapytania
Słowo kluczowe DISTINCT zapewnia, że wynik zwrócony w wyniku zapytania
Zawierać będzie tylko nie powtarzające się wiersze.
Zawierać będzie tylko nie powtarzające się wiersze.
Wszystkie powtarzające się wartości nie zostaną wyświetlone.
Wszystkie powtarzające się wartości nie zostaną wyświetlone.
select DISTINCT [lista_pól]
select DISTINCT [lista_pól]
from [tabela(e)]
from [tabela(e)]
where [warunek];
where [warunek];
Wyrażenie ALL jest wartością domyślną i oznacza, że zwrócone zostaną
Wyrażenie ALL jest wartością domyślną i oznacza, że zwrócone zostaną
wszystkie wiersze (również te powtarzające się).
wszystkie wiersze (również te powtarzające się).
select ALL cena
select ALL cena
from wypozyczenie;
from wypozyczenie;
Powyższe dwa zapytania maja takie samo znaczenie i zwracają identyczne
Powyższe dwa zapytania maja takie samo znaczenie i zwracają identyczne
wyniki.
wyniki.
Słowa kluczowe
Słowa kluczowe
ALL
ALL
oraz
oraz
DISTINCT
DISTINCT
występują bezpośrednio po słowie SELECT.
występują bezpośrednio po słowie SELECT.
13
13
Przykłady:
Przykłady:
Przykład 7. Lista miejscowości z tabeli „klient”.
Przykład 7. Lista miejscowości z tabeli „klient”.
use msmot
use msmot
select DISTINCT miejscowosc
select DISTINCT miejscowosc
from klient ;
from klient ;
Wynik instrukcji prezentuje poniższy rysunek
Wynik instrukcji prezentuje poniższy rysunek
Rysunek 7
Powyższe zapytanie wyświetla wszystkie miejscowości z tabeli „klient”,
Powyższe zapytanie wyświetla wszystkie miejscowości z tabeli „klient”,
zauważmy, że miejscowości nie powtarzają się, zostały wyświetlone
zauważmy, że miejscowości nie powtarzają się, zostały wyświetlone
tylko raz.
tylko raz.
14
14
Zaprzeczenie NOT
Zaprzeczenie NOT
Warunki wyszukiwania mogą być łączone ze sobą lub modyfikowane
Warunki wyszukiwania mogą być łączone ze sobą lub modyfikowane
przy użyciu operatora logicznego
przy użyciu operatora logicznego
NOT
NOT
.
.
Zaprzeczenie
Zaprzeczenie
NOT
NOT
to logiczne przeciwieństwo warunku.
to logiczne przeciwieństwo warunku.
Przykład:
Przykład:
use msmot
use msmot
select imie,nazwisko
select imie,nazwisko
from klient
from klient
where NOT (imie=‘Tomek’);
where NOT (imie=‘Tomek’);
Zapytanie zwróci imiona z tabeli „klient”, lecz bez imienia „Tomek”.
Zapytanie zwróci imiona z tabeli „klient”, lecz bez imienia „Tomek”.
15
15
Instrukcja SELECT z predykatem
LIKE.
Predykat
Predykat
LIKE
LIKE
służy do wybierania wartości odpowiadających
służy do wybierania wartości odpowiadających
podanemu wzorcowi. Wzorzec ten składa się z dwóch znaków:
podanemu wzorcowi. Wzorzec ten składa się z dwóch znaków:
% (znak procenta) – odpowiada dowolnemu ciągowi znaków
% (znak procenta) – odpowiada dowolnemu ciągowi znaków
_ (znak podkreślenia dolnego) – odpowiada jednemu dowolnemu
_ (znak podkreślenia dolnego) – odpowiada jednemu dowolnemu
znakowi
znakowi
Często istnieje konieczność wyszukania np. nazwisk klientów, które
Często istnieje konieczność wyszukania np. nazwisk klientów, które
zaczynają się od jakieś litery, lub fragmentu nazwy, wtedy
zaczynają się od jakieś litery, lub fragmentu nazwy, wtedy
zastosujemy predykat
zastosujemy predykat
LIKE
LIKE
.
.
Najlepszym sposobem zapoznania się z predykatem
Najlepszym sposobem zapoznania się z predykatem
LIKE
LIKE
jest praktyka.
jest praktyka.
W przykładach przedstawione zostaną różne kombinacje….
W przykładach przedstawione zostaną różne kombinacje….
W zapytaniach z predykatem
W zapytaniach z predykatem
LIKE
LIKE
możemy stosować zaprzeczenie NOT
możemy stosować zaprzeczenie NOT
oraz operatory AND i OR.
oraz operatory AND i OR.
use [baza]
use [baza]
select [lista_pól]
select [lista_pól]
from [tabela(e)]
from [tabela(e)]
where [warunek] LIKE ‘ ’;
where [warunek] LIKE ‘ ’;
16
16
Przykłady:
Przykłady:
Przykład 8. Wyszukanie imion zaczynających się na literę „J” z tabeli „klient”.
Przykład 8. Wyszukanie imion zaczynających się na literę „J” z tabeli „klient”.
use msmot
use msmot
select *
select *
from klient
from klient
where imie LIKE ‘J%’;
where imie LIKE ‘J%’;
Wynik instrukcji prezentuje (Rysunek 8)
Wynik instrukcji prezentuje (Rysunek 8)
Rysunek 8
Powyższe zapytanie wyszukuje imiona na literę „J”. Poniższe zapytanie
Powyższe zapytanie wyszukuje imiona na literę „J”. Poniższe zapytanie
działa podobnie, tylko z tą różnicą, że wyszukuje imiona zakończone na
działa podobnie, tylko z tą różnicą, że wyszukuje imiona zakończone na
litery „ta”.
litery „ta”.
use msmot
use msmot
select *
select *
from klient
from klient
where imie LIKE ‘%ta’;
where imie LIKE ‘%ta’;
17
17
Przykłady:
Przykłady:
Przykład 9. Wyszukanie imion zaczynających się na literę „J” oraz nazwisk
Przykład 9. Wyszukanie imion zaczynających się na literę „J” oraz nazwisk
na
na
literę „K” z tabeli „klient”.
literę „K” z tabeli „klient”.
use msmot
use msmot
select *
select *
from klient
from klient
where imie LIKE ‘J%’
where imie LIKE ‘J%’
and nazwisko LIKE ‘K%’;
and nazwisko LIKE ‘K%’;
Wynik instrukcji prezentuje (Rysunek 9)
Wynik instrukcji prezentuje (Rysunek 9)
Rysunek 9
Powyższe zapytanie wyszukuje imiona na literę „J” oraz nazwiska na literę „K”.
Powyższe zapytanie wyszukuje imiona na literę „J” oraz nazwiska na literę „K”.
Poniższe zapytanie działa podobnie, tylko z tą różnicą, że wyszukuje imiona
Poniższe zapytanie działa podobnie, tylko z tą różnicą, że wyszukuje imiona
nie zaczynające się na literę „J” i nazwiska nie zaczynające się na literę „K”.
nie zaczynające się na literę „J” i nazwiska nie zaczynające się na literę „K”.
use msmot
use msmot
select *
select *
from klient
from klient
where imie NOT LIKE ‘J%’
where imie NOT LIKE ‘J%’
and nazwisko NOT LIKE ‘K%’;
and nazwisko NOT LIKE ‘K%’;
18
18
Przykłady:
Przykłady:
Inne przykłady z zastosowaniem LIKE:
Inne przykłady z zastosowaniem LIKE:
imiona w których druga litera to „a”
imiona w których druga litera to „a”
where imie LIKE ‘_a%’;
where imie LIKE ‘_a%’;
nazwiska, w których długość wynosi 5 znaków
nazwiska, w których długość wynosi 5 znaków
where nazwisko LIKE ‘_____’;
where nazwisko LIKE ‘_____’;
nazwiska, które posiadają litery „o” i „k”
nazwiska, które posiadają litery „o” i „k”
where nazwisko LIKE ‘%o%k%’;
where nazwisko LIKE ‘%o%k%’;
nazwiska, które kończą się na litery „ak”
nazwiska, które kończą się na litery „ak”
where nazwisko LIKE ‘%ak’;
where nazwisko LIKE ‘%ak’;
imiona, w których przedostatnią literą jest „a”
imiona, w których przedostatnią literą jest „a”
where nazwisko LIKE ‘%a_’;
where nazwisko LIKE ‘%a_’;
19
19
Ćwiczenia
Ćwiczenia
1. Wypisz zawartość całej tabeli „pojazdy”.
2. Z tabeli „klient” wyświetl wszystkie imiona Jan.
3. Z tabeli „klient” wyświetl wszystkie imiona: Jan i Dobromił
4. Z tabeli „klient” wypisz imiona zaczynające się na literę „M”
lub „A”.
5. Z tabeli „pojazdy” wyświetl pojemności mniejsze i równe 100.