Przeczytaj
Baza danych
Relacyjna baza danych składa się z tabel powiązanych relacjami. Kolumny w tabelach nazywamy polami. Zestaw wartości z wszystkich pól tworzy wiersz tabeli – czyli rekord. Pola przechowują wartości różnego typu, np. tekstowe, liczbowe czy daty i czasu.
Żeby przetwarzać informacje zgromadzone w bazie danych, musimy poznać schemat bazyschemat bazy, tzn. wiedzieć, jakie tabele ją tworzą, jakie zawierają pola i wartości oraz jak są ze sobą powiązane. W tym celu wykorzystamy bazy danych zapisane w plikach:
W wybranym programie otwórz odpowiednią bazę. W programie LibreOffice Base otwórz plik pracownicy.odb
, w programie Microsoft Access – pracownicy.accdb
. Wykorzystując widok projektu tabeli, przejrzyj nazwy oraz zdefiniowane typy danych pól w poszczególnych tabelach. Korzystając z widoku relacji, ustal powiązania między tabelami.
Odczytywanie danych
Za pomocą interfejsu graficznego tworzymy projekt kwerendy wybierającej wszystkie imiona, nazwiska oraz daty urodzenia z tabeli pracownicy. Uruchamiamy zapytanie, sprawdzamy wyniki i zapisujemy pod nazwą dane_osobowe.
Kwerendę utworzyliśmy za pomocą interfejsu graficznego, jednak jej działanie opiera się na poleceniach języka SQL.
Programy bazodanowe pozwalają przeglądać i tworzyć kwerendy w języku SQL.
W programie LibreOffice Base kwerendę możemy przełączać między widokiem projektu a widokiem SQL, wybierając Widok
, a następnie Włącz/Wyłącz widok projektu
. Możemy również tworzyć kwerendę za pomocą polecenia Utwórz kwerendę SQL
i edytować zapisane kwerendy po wybraniu z ich menu podręcznego polecenia Edycja w widoku SQL
. Zapytanie uruchamiamy za pomocą ikony lub polecenia Edycja
| Wykonaj kwerendę
.
W programie Microsoft Access kwerendę również możemy przełączać między widokiem projektu a widokiem SQL, używając ikony Widok
. Aby utworzyć kwerendę od razu w widoku SQL, wybieramy wstążkę Tworzenie
, ikonę Projekt kwerendy
, zamykamy okno Pokazywanie tabeli
i klikamy ikonę SQL
W wybranym programie włączamy widok SQL zaprojektowanej kwerendy. W programie LibreOffice Base zobaczymy:
W programie Microsoft Access nazwy wybieranych pól poprzedzone będą nazwą tabeli:
Składnia języka SQL różni się nieco w zależności od wykorzystywanego programu lub systemu bazodanowego. Polecenia tego języka nazywamy klauzulamiklauzulami, zapytaniamizapytaniami lub kwerendami i zapisujemy wielkimi literami ze względu na czytelność (nie jest to obowiązkowe).
W LibreOffice Base nazwy tabel i pól otaczane są podwójnymi cudzysłowami, co obowiązkowe jest w nazwach zawierających spacje. W programie Microsoft Access nazwy pól ze spacjami otaczamy nawiasami kwadratowymi.
Mimo że w programach biurowych nie jest to wymagane, dobrą praktyką jest kończenie zapytań SQL znakiem średnika.
Instrukcja SELECT
służy do pobierania danych z tabeli. Najprostsze zapytanie odczytujące wszystkie rekordy tabeli wygląda tak:
Symbol gwiazdki (*
) oznacza wszystkie pola tabeli. Po klauzuli FROM
podajemy nazwę tabeli, z której pobieramy dane.
Częściej potrzebne będzie zapytanie, dzięki któremu uzyskujemy dane z konkretnych pól:
Jeżeli nazwy pól są unikalne w obrębie bazy danych, nie trzeba ich poprzedzać nazwami tabel. W przeciwnym razie jest to konieczne, aby jednoznacznie wskazać pole. Stosujemy wtedy notację z kropką: tabela.pole
.
Kryteria wyboru
Zazwyczaj chcemy w bazie danych wyszukać dane spełniające określone warunki – stosujemy wtedy kryteria ograniczające. Nakłada się je na konkretne pola za pomocą klauzuli warunkowej WHERE
, np.:
WHERE pole > 1000
– wybranie rekordów, w których wartość liczbowa pola jest większa od podanej,WHERE pole = 'Kowalski'
– wybranie rekordów na podstawie dokładnego dopasowania tekstu,WHERE pole LIKE 'K%'
– wybranie rekordów, w których wartość tekstowa rozpoczyna się literą „K”,WHERE pole LIKE 'J__'
– wybranie rekordów, w których wartość tekstowa rozpoczyna się literą „J”, a po niej następują dwa dowolne znaki.
Literały znakoweLiterały znakowe w kryteriach, np. 'Kowalski'
, otaczane są pojedynczymi cudzysłowami (apostrofami), chociaż Microsoft Access dopuszcza również cudzysłowy podwójne.
W kryteriach z operatorem LIKE
stosujemy znaki specjalne (symbole wieloznaczne). W standardzie ANSI SQL‑92 znak procent „%
” oznacza dowolny ciąg znaków, znak podkreślenia „_
” jeden dowolny znak.
Program Microsoft Access w zapytaniach SQL wymaga innych symboli dopasowania: znaku gwiazdki „*
” (dowolny ciąg znaków) i znaku zapytania „?
” (jeden dowolny znak). Oba te znaki stosuje się również podczas zapisywania warunków z operatorem LIKE
podczas graficznego projektowania zapytań w programach LibreOffice Base i Microsoft Access.
Nieco bardziej skomplikowane jest nakładanie warunków na pola przechowujące datę i ewentualnie czas. W programie LibreOffice Base, aby wybrać rekordy z datą późniejszą lub równą podanej, użyjemy następującej składni:
WHERE pole >= '1980‑01‑01'
lub:
WHERE pole >= {d '1980‑01‑01'}
Natomiast w programie Microsoft Access:
WHERE pole >= #1980‑01‑01#
Znak „#
” otacza daty (w odróżnieniu od wartości tekstowych) również w widoku graficznego projektu kwerendy w obu programach. Datę najczęściej zapisujemy w formacie ISO 8601 RRRR‑MM‑DD
, czyli cztery cyfry roku, dwie cyfry miesiąca i dwie cyfry dnia oddzielone znakiem minus.
Wykonajmy kilka ćwiczeń.
W wybranym programie otwórz bazę pracownicy
. Używając języka SQL, skonstruuj i wykonaj kwerendę wybierającą identyfikatory (pole id), imiona i nazwiska pracowników, których identyfikator jest mniejszy od 5.
W wybranym programie otwórz bazę pracownicy
. Używając języka SQL, skonstruuj i wykonaj kwerendę wybierającą imiona i nazwiska pracowników, których nazwiska zaczynają się na literę „Z”.
W wybranym programie otwórz bazę pracownicy
. Używając języka SQL, skonstruuj i wykonaj kwerendę wybierającą imiona i nazwiska pracowników urodzonych przed 1970 rokiem.
Oprócz wspomnianej w rozwiązaniu ostatniego ćwiczenia funkcji YEAR()
, która zwraca rok, możemy również używać funkcji DAY()
i MONTH()
, które zwracają odpowiednio dzień i miesiąc z daty podanej jako argument.
Operatory logiczne
Wyrażenia w klauzulach warunkowych można łączyć za pomocą logicznych operatorów koniunkcji i alternatywy.
Przykład użycia logicznego operatora koniunkcji AND
.
Powyższa kwerenda wybierze rekordy, w których rok urodzenia pracownika jest większy od 1969 i mniejszy od 1981. Wyrażenia warunkowe z operatorem AND
są prawdziwe, jeżeli prawdziwe są wszystkie połączone warunki. Każde użycie operatora AND
ogranicza liczbę zwracanych rekordów.
Przykład użycia logicznego operatora alternatywy OR
.
Kwerenda wybierze rekordy pracowników, których imię to „Jan” lub „Ewa”. Wyrażenia warunkowe z operatorem OR
zazwyczaj zwiększają liczbę zwracanych rekordów.
Warunki zawierające alternatywę często zapisuje się z użyciem operatora SQL IN
. Poprzednią kwerendę możemy zapisać następująco:
Przykład użycia operatora IN
.
Operatorem logicznym jest również negacja.
Kwerenda wybierze rekordy pracowników, których imiona nie znajdują się w zbiorze podanych w nawiasach wartości.
instrukcje SQL kończą się średnikiem,
nazwy pól lub tabel – jeżeli zawierają spacje – zapisujemy w cudzysłowach (LibreOffice Base) lub nawiasach kwadratowych (Microsoft Access),
nazwy pól mogą być poprzedzone nazwą tabeli i znakiem kropki,
pojedynczymi cudzysłowami otaczamy literały znakowe (ang. string literal),
daty w zapytaniach zapisujemy następująco:
'RRRR‑MM‑DD'
lub{d 'RRRR‑MM‑DD'}
w LibreOffice Base;#RRRR‑MM‑DD#
w Microsoft Access.
Słownik
pojedyncze polecenie SQL, element konstrukcji zapytań, np. SELECT
, FROM
, WHERE
inaczej ciąg znakowy, to seria znaków ujęta w cudzysłowy, najczęściej używa się cudzysłowów pojedynczych,
schematyczny opis tabel, to znaczy zawartych w nich kolumn oraz ich typów danych, a także relacji, czyli związków między tabelami
tabela, która umożliwia tworzenie relacji wiele‑do‑wielu
(ang. query) inaczej kwerenda, instrukcja złożona z klauzul SQL, wykonująca operacje na bazie danych