Przeczytaj
Środowisko XAMPP
Język SQL jest powszechnie używany w aplikacjach sieciowych tworzonych przy użyciu między innymi języka PHP. Do poznania bazy i wyszukiwania informacji użyjemy lokalnego środowiska XAMPP, zawierającego serwer WWW Apache, bazę danych MariaDB, język PHP oraz aplikację webową phpMyAdmin działającą w przeglądarce WWW i umożliwiającą obsługę baz danych za pomocą interfejsu graficznego.
Informacje na temat instalacji oraz korzystania ze środowiska XAMPP i aplikacji phpMyAdmin zamieszczone zostały w e‑materiale Definiowanie schematu bazy danych w języku SQL, etap IVDefiniowanie schematu bazy danych w języku SQL, etap IV.
Baza danych
Dysponujemy bazą danych pracownicy
, której schemat oraz dane zapisane zostały w pliku pracownicy.sql
. Pobieramy plik i zapisujemy w wybranym katalogu.
pracownicy.sql
.Uruchamiamy środowisko XAMPP, otwieramy przeglądarkę i w polu adresu wpisujemy localhost
. Po załadowaniu się strony powitalnej klikamy link phpMyAdmin
w prawym górnym rogu.
Wykonujemy import bazy pracownicy
. W tym celu klikamy zakładkę Import
, a następnie przycisk Przeglądaj
i wskazujemy zapisany plik pracownicy.sql
.

pracownicy.sql
w phpMyAdmin.Następnie klikamy przycisk Import
na dole strony. Po wykonaniu operacji zobaczymy komunikat „Import zakończony sukcesem, wykonano 34 zapytań. (pracownicy.sql
)”. Ewentualne komunikaty o błędach pomijamy.
W wypadku problemów ze środowiskiem XAMPP, po pobraniu załączonej bazy SQLite3 pracownicy.db
, podane niżej zapytania SQL można również wykonywać w:
programie SQLiteStudio,
wierszu poleceń bazy SQLite3,
skryptach języka Python.
Informacje na temat instalacji i korzystania z tych narzędzi zamieszczone zostały w e‑materiałach Definiowanie schematu bazy danych w języku SQL, etap IIDefiniowanie schematu bazy danych w języku SQL, etap II oraz Instrukcje wyszukiwania w języku SQL, etap IIIInstrukcje wyszukiwania w języku SQL, etap III.
pracownicy.db
.Schemat bazy
Utworzoną bazę danych wybieramy w lewym panelu aplikacji phpMyAdmin. Po wybraniu nazwy tabeli zobaczymy zawarte w niej pola i dane, w zakładce Struktura
znajdziemy informacje na temat typów danych i ewentualnych ograniczeń.

Relacje między tabelami możemy podejrzeć po wybraniu opcji Widok relacyjny
w zakładce Struktura
.

Baza zawiera cztery tabele.
W tabeli pracownicy występują pola:
id –
INT
, liczba całkowita, klucz główny,imie, nazwisko, kod, ulica –
VARCHAR
,data_urodz –
DATE
.
W tabeli place występują pola:
id_pracownika, id_stanowiska –
INT
, liczba całkowita, klucze obce,data_zatr –
DATE
,placa –
DECIMAL
.
W tabeli stanowiska występują pola:
id –
INT
, liczba całkowita, klucz główny,stanowisko –
VARCHAR
.
W tabeli kontakty występują pola:
id –
INT
, liczba całkowita, klucz główny,id_pracownika –
INT
, liczba całkowita, klucz obcy,telefon, email –
VARCHAR
.
Tabele pracownicy i kontakty łączy relacja jeden‑do‑wielu. Tabele pracownicy i stanowiska łączy relacja wiele‑do‑wielu definiowana przez relacje jeden‑do‑wielu każdej z tych tabel do tabeli pośredniej place.
Zapytania wprowadzamy do pola tekstowego po wybraniu bazy pracownicy
w lewym panelu i otworzeniu zakładki SQL
– powinniśmy widzieć w niej komunikat „Wykonanie zapytania/zapytań SQL do bazy danych pracownicy”. Wpisane lub wklejone zapytanie zostanie wykonane po kliknięciu przycisku Wykonaj
na dole strony. Po wyświetleniu wyników zapytania należy kliknąć przycisk Pokaż okno zapytań
, aby powrócić do okna Wykonanie zapytania
.
Operatory
Jednym z ważniejszych zagadnień w konstruowaniu zapytań SQL są operatory. Wyróżniamy wśród nich kilka typów, z których pierwszy stanowią operatory arytmetyczne:
-, +
– odejmowanie, dodawanie,*, /
– mnożenie, dzielenie,%
– dzielenie modulo.
Operatorów tych możemy używać w zapytaniach z polem wyliczeniowympolem wyliczeniowym. Polom takim możemy nadawać nazwy, co bywa przydatne w przypadku podzapytań (zobacz dalej).
Jaka będzie wartość 10‑procentowej premii dla pracowników?
Trzeba pamiętać, że w ułamkach dziesiętnych używamy znaku kropki jako separatora.
Kolejna grupa to operatory porównaniaoperatory porównania, których używamy zazwyczaj w klauzuli WHERE
. Najczęściej występujące to:
=
– równy, warto zapamiętać, że to pojedynczy znak,>, >=
– większy i większy lub równy,<, <=
– mniejszy i mniejszy lub równy,!=, <>
– różny.
Operatory logiczneOperatory logiczne pozwalają tworzyć wyrażenia, których wynikiem jest PRAWDA
lub FAŁSZ
:
ALL
– prawda, jeżeli wszystkie wartości podzapytania spełniają warunek,AND
– prawda, jeżeli wyrażenia połączone operatorem są prawdziwe, koniunkcja,ANY
– prawda, jeżeli którakolwiek wartość podzapytania spełnia warunek,OR
– prawda, jeżeli którykolwiek wyrażenie połączone operatorem jest prawdziwe, alternatywa,IS [NOT] NULL
– prawda, jeżeli [nie] pusty,[NOT] BETWEEN min AND max
– prawda, jeżeli wartość [nie] jest >= min i <= max,[NOT] IN
– prawda, jeżeli wartość [nie] występuje w zbiorze,[NOT] LIKE
– prawda, jeżeli wartość [nie] jest podobna do wzorca.
W kolejnych zapytaniach użyjemy omówionych operatorów.
Zacznijmy od znalezienia pracowników, którzy nie mieszkają w Sandomierzu.
Warunek nakładany na pole rekordu miasto sugeruje w tym wypadku użycie operatora zaprzeczonego:
Kwerenda zwróci siedem rekordów.
Spróbujmy dowiedzieć się, do których pracowników mamy numery telefonu.
Jeżeli zapisano numer telefonu pracownika, pole telefon w tabeli kontakty nie jest puste:
Kwerenda zwróci osiem rekordów.
Napiszmy zapytanie, które wskaże osoby zatrudnione w 1995 roku.
Przykład ten dobrze ilustruje również zasady używania aliasów dla tabel i pól. Ponieważ tabeli place nadano nazwę pl, wskazanie kolumny w tej tabeli również wymaga aliasu pl.data_zatr.
Kwerenda zwróci dwa rekordy.
Którzy pracownicy mieszkają w Sandomierzu lub w Tarnobrzegu?
Kwerenda zwróci osiem rekordów.
Jeżeli użylibyśmy operatora zaprzeczonego NOT IN
, dowiedzielibyśmy się, kto nie mieszka w tych miastach.
Ponieważ w zapytaniu mamy do czynienia z alternatywą, kod mógłby wykorzystywać operator OR
:
W kolejnym zapytaniu spróbujemy się dowiedzieć, kto ma adres e‑mail w domenie
@onet.pl
?
Używamy wzorca dopasowania, w którym znak „%” oznacza dowolne znaki w dowolnej liczbie.
Kwerenda zwróci dwa rekordy.
Podzapytania
Język SQL umożliwia używanie zapytań zagnieżdżonych w innych zapytaniach – nazywamy je podzapytaniamipodzapytaniami. Najczęściej wykorzystuje się je w warunkach ograniczających wyniki kwerend.
Napiszmy zapytanie, które pozwoli dowiedzieć się, który z pracowników najwięcej zarabia.
W klauzuli WHERE
porównujemy wartość pola placa z wartością zwróconą przez podzapytanie. Można uzyskać ten sam wynik również za pomocą następującego zapytania:
Obie kwerendy zwrócą jeden rekord: Piotr, Zamojski, 3500
.
Warto wiedzieć, że zapytania z podzapytaniami bywają wolniej przetwarzane. Poza tym niewiele jest sytuacji, w których podzapytania są konieczne.
Rozpatrzmy zapytanie wyświetlające nazwiska pracowników mieszkających w miastach, których nazwy rozpoczynają się literą „S”:
Podzapytanie oczywiście nie jest tu potrzebne – wystarczy warunek dopasowania umieścić w kwerendzie nadrzędnej:
Obie kwerendy zwrócą sześć rekordów.
Słownik
operatory używane w wyrażeniach logicznych, tzn. takich, których wynikiem jest prawda lub fałsz
operatory pozwalające porównywać lewą i prawą stronę wyrażenia zawierającego operator; zwracają prawdę lub fałsz
(ang. subqueries) zapytania SQL zagnieżdżone w zapytaniu zewnętrznym najczęściej jako wartości porównania lub zbiór, w którym poszukujemy wartości
pole w zapytaniu, którego wartość obliczana jest dynamicznie z wykorzystaniem danych pobieranych z bazy