Data aktualizacji: 13 maja 2025

Bazy danych: Matura z informatyki - Jak najszybciej rozwiązać zadania z kodem SQL?

Większości osób wydaje się, że matura powinna być trudna i czasochłonna, ale wcale tak nie musi być. Na rozszerzonej maturze z informatyki pojawiają się zadania w których należy samodzielnie napisać kod SQL, jednak z pomocą poniższego artykułu okażą się to jedne z najprostszych zadań w arkuszu.

Jak szybko rozwiązać zadania - SQL na maturze

W 2023 na maturze pojawił się nowy typ zadania, polegający na pisaniu kodu SQL na kartce, wykorzystując tabele, które nie są dostępne w programie do zaimportowania. Autorzy prawdopodobnie zakładają, że sami ułożymy kwerendę w SQL-u. Jednak istnieje znacznie łatwiejszy sposób, wystarczy stworzyć odpowiednie tabele i kwerendy w Accessie, a następnie przenieść na arkusz lekko zmodyfikowany kod SQL. Należy jednak pamiętać o tym, że Access używa JET SQL, a w tego typu zadaniach jest wymagany ANSI SQL. W dalszej części artykułu dowiesz się jakie są różnice między tymi dwoma rodzajami SQL, a więc jak zmodyfikować ostateczny kod.

Różnice - ANSI SQL oraz JET SQL

W artykule wykorzystamy poniższe tabele.

Różnice ansi SQL jet SQL tabele

Powyższe tabele są naprawdę proste. Jak widać na załączonym obrazku, w tabeli Klienci kluczem jest id_klienta, w tabeli Usługi to id_zamowienia, natomiast w tabeli Pracownicy kluczem jest id_pracownika.

Liczba funkcji w ANSI SQL i JET SQL

Pierwszą różnicą okazuje się liczba funkcji.

ANSI SQLJET SQL
COUNT() (policz)W JET SQL istnieją wszystkie funkcje dostępne w ANSI SQL oraz wiele innych np. iif().
SUM() (suma)
AVG() (średnia)
MIN() (minimum)
MAX() (maksimum)

Jeśli w twojej kwerendzie znajduje się funkcja spoza powyższej tabeli, przed przepisaniem spróbuj zmodyfikować kwerendę, tak żeby wykorzystywała jedynie powyższe funkcje.

Operatory wykorzystywane do różnych działań

Kolejną różnicą są operatory wykorzystywane w konkretnych działaniach. W obu poniższych przykładach zastosowano ten sam rodzaj kwerendy.

ANSI SQLJET SQL
W ANSI SQL operator LIKE() obsługuje następujące symbole:
_ - dowolny znak,
% - dowolne znaki w dowolnej ilości.

Przykład użycia - Kwerenda zwracająca imiona posiadające znak a jako drugą literę:

SELECT imie FROM klienci WHERE imie LIKE(_a%);
W JET SQL operator LIKE() obsługuje następujące symbole:
? - dowolny znak,
* - dowolne znaki w dowolnej ilości.

Przykład użycia - Kwerenda zwracająca imiona posiadające znak a jako drugą literę:

SELECT imie FROM klienci WHERE imie LIKE(?a*);

Jest to ta sama kwerenda, co w przypadku ANSI SQL, co jasno wskazuje na różnice między nimi.

Jak widać wystarczy prosta zmiana znaków, żeby kwerenda była uznana na arkuszu maturalnym.

W Accesie można zmienić używane symbole na te używane w ANSI SQL. W tym celu należy wejść w opcje, w zakładkę „Projektanci Obiektu” i zaznaczyć opcję „Składnia zgodna z programem SQL SERVER ANSI 92”. Należy jednak uważać, bo wtedy zamiast LIKE Access używa słowa ALIKE. Powyższa kwerenda wygląda wtedy następująco:

SELECT imie FROM klienci WHERE imie ALIKE(_a%);

Poniżej zaznaczono opcję, którą należy zaznaczyć w celu korzystania z operatów ANSI SQL.

Wystarczy kliknąć opcje zaznaczone na powyższym obrazku, żeby utworzony kwerenda wykorzystywała składnię ANSI SQL.

Liczenie unikatowych wartości

Istnieje różnica również jeśli chodzi o liczenie unikatowych wartości.

ANSI SQLJET SQL
Wystarczy dodać DISTINCT w funkcji COUNT:

SELECT COUNT(DISTINCT funkcja) FROM pracownicy;
W przypadku JET SQL DISTINCT można używać tylko po SELECT, więc żeby uzyskać kwerendę zwracającą to co z lewej, należy użyć kodu w ramach następującego rozwiązania:

SELECT COUNT(*) FROM (SELECT DISTINCT funkcja FROM pracownicy);

Wykorzystywanie instrukcji warunkowych

Również instrukcje warunkowe wyglądają inaczej w przypadku ANSI SQL oraz JET SQL.

ANSI SQLJET SQL
W tym przypadku używa się konstrukcji CASE.

Przykład użycia:
SELECT imie, CASE
WHEN imie="Andzelika" THEN 1
ELSE 2
END AS status
FROM klienci;
W tym przypadku wykorzystuje się funkcję iif() lub switch().

Przykład użycia:
SELECT klienci.imie, IIf(klienci.imie="Andzelika",1,2) AS status
FROM klienci;

Rodzaje oraz składnia funkcji JOIN

W przypadku ANSI SQL możliwe jest wykorzystanie natural join, który nie jest wykorzystywany w ramach samego Accessa.

ANSI SQLJET SQL
INNER JOIN
LEFT JOIN
RIGHT JOIN
CROSS JOIN (brak relacji)
NATURAL JOIN - służy do łączenia dwóch tabel na podstawie kolumn o tej samej nazwie i zgodnych typach danych.
INNER JOIN
LEFT JOIN
RIGHT JOIN
CROSS JOIN (brak relacji)

Dodatkowo warto pamiętać o tym, że inaczej wygląda składnia funkcji JOIN w poszczególnych rodzajach SQL.

ANSI SQLJET SQL
Składnia funkcji JOIN w ANSI SQL może wyglądać następująco:
SELECT K.imie AS imieK, U.rodzaj, P.imie AS imieP
FROM uslugi AS U
INNER JOIN klienci AS K on K.id_klienta = U.id_klienta
INNER JOIN pracownicy AS P ON P.id_pracownika = U.id_pracownika;

Albo tak (cke w kluczu stosuje tę wersję):
SELECT K.imie AS imieK, U.rodzaj, P.imie AS imieP
FROM (uslugi AS U
INNER JOIN klienci AS K ON K.id_klienta = U.id_klienta)
INNER JOIN pracownicy AS P ON P.id_pracownika = U.id_pracownika;
W przypadku JET SQL wykorzystuje się opcję z nawiasami:
SELECT K.imie, U.rodzaj, P.imie
FROM (uslugi AS U
INNER JOIN klienci AS K ON K.id_klienta = U.id_klienta)
INNER JOIN pracownicy AS P ON P.id_pracownika = U.id_pracownika;

Konkatenacja (łączenie) zmiennych string

ANSI SQLJET SQL
|| - konkatenacja zmiennych string w ANSI.

Przykład użycia:
SELECT imie || ” ” || nazwisko FROM osoby;
& - konkatencja zmiennych string w JET.

Przykład użycia:
SELECT imie & ” ” & nazwisko FROM osoby;

Komentarze SQL

ANSI SQLJET SQL
Komentarze:
Jednoliniowe: „--”
Wieloliniowe: /* tutaj jest treść komentarza */
Brak możliwości wstawiania komentarzy.

Grupowanie GROUP BY

ANSI SQLJET SQL
GROUP BY używamy jedynie na wyświetlanych polach.GROUP BY musi być użyty na wszystkich polach użytych w zapytaniu (o ile nie są wykorzystywane w funkcjach agregujących), nawet niewyświetlane pola wymagają tej funkcji. Np. HAVING wymaga GROUP BY w Accessie (JET SQL).

Grupowanie pola w HAVING

W JET SQL musimy grupować też pole użyte w HAVING inaczej pojawi się błąd taki jak poniżej.

Błąd JET SQL

Należy zawsze pamiętać o grupowaniu również pól użytych w HAVING.

Znając różnice między rodzajami SQL, przepisanie kwerendy z accessa do arkusza maturalnego powinno być dla Ciebie łatwe. Oczywiście konieczna jest zdolność stworzenia danego zapytania w Accessie.

Przykład utworzenia kodu SQL - zadanie matura 2024

Poniżej znajdziesz przykład wykorzystania Microsoft Access w celu utworzenia kodu SQL i przepisania go do arkusza maturalnego.

Zadanie maturalne SQL
Zadanie maturalne SQL 1

Utwórzmy nową tabelę Fotoradar i dodajmy do niej opisane w zadaniu pola: IdFotoradaru, Miejscowosc i DozwolonaPredkosc. Dodajemy również pole do tabeli Rejestr.

Przykład zadania SQL 1

W nowej tabeli Fotoradar znajdują się pola IdFotoradaru, Miejscowosc i DozwolonaPredkosc.

Następnie ustalamy odpowiednie relacje:

Przykład zadania SQL 2
Relacje utworzone pomiędzy tabelami zadania.

Relacje utworzone pomiędzy tabelami zadania.

Najpierw należy utworzyć nowe zapytanie, dodając do niego tabele Fotoradar i Rejestr. Następnie zmieniamy typ sprzężenia tak, aby uwzględniał wszystkie rekordy z tabeli Fotoradar. Wystarczy wybrać Fotoradar.idFotoradaru oraz dowolne pole z tabeli Rejestr, stosując warunek IS NULL. Na końcu przepisujemy zapytanie SQL na arkusz maturalny, pomijając nawiasy. Jak widać, możliwe jest stworzenie kwerendy SQL nawet bez znajomości składni SQL.

ANSI SQLJET SQL
SELECT Fotoradar.IdFotoradaru FROM Fotoradar LEFT JOIN Rejestr ON Fotoradar.IdFotoradaru = Rejestr.IdFotoradaru WHERE Rejestr.IdFotoradaru Is Null;SELECT Fotoradar.idFotoradaru FROM Fotoradar LEFT JOIN Rejestr ON Fotoradar.idFotoradaru = Rejestr.idFotoradaru WHERE (((Rejestr.idFotoradaru) Is Null));

Test - Podsumowanie artykułu

Najczęściej zadawane pytania o SQL na maturze z informatyki

Czy SQL jest na maturze?

Jak najbardziej tak, język SQL pojawia się w zadaniach na maturze. Przede wszystkim w przypadku zadań, które wymagają napisania kodu SQL na arkuszu maturalnym. Jeśli chodzi o polecenia wymagające użycia programu Microsoft Access, korzysta się z wbudowanych funkcji, które opierają się o język SQL.

Jakie rozszerzenie ma SQL?

Plik zawierający kod SQL posiada rozszerzenie .sql (Structured Query Language (SQL)). Jednak należy pamiętać, że w przypadku programu Microsoft Access, mowa o plikach baz danych z rozszerzeniem .mdb lub .accdb.

Czy język SQL jest trudny?

Uznawany jest za stosunkowo prosty język, jeśli chodzi o zadania maturalne. Potrzebna jest jednak praktyka, dzięki której używanie go okaże się szybkie i wygodne. W tym celu dobrze jest skorzystać z arkuszy maturalnych z lat poprzednich i rozwiązanie wszystkich zawartych z nich zadań.

Jak oceniasz ten artykuł?

Przykro nam 🙁 , że ten wpis nie był dla Ciebie wystarczająco przydatny!

Będziemy wdzięczni jeżeli napiszesz co moglibyśmy poprawić.

Najnowsze wpisy

Notacja wykładnicza - co to, jak wykonywać działania i przykłady zadań

Przeczytaj >>

Kalkulator procentowy - oblicz procent z liczby oraz wiele więcej

Przeczytaj >>

Obliczanie procentów - jak obliczyć procenty, wzory na procenty i podstawowe definicje

Przeczytaj >>

Potęgi - wzory, własności i działania na potęgach

Przeczytaj >>

Kalkulator potęg - działania na potęgach: mnożenie, dzielenie, dodawanie, odejmowanie i inne

Przeczytaj >>

JESTEŚ AMBITNY?

Dołącz do nas jeszcze dziś i rozwijaj się w swojej ulubionej dziedzinie we współpracy z nauczycielami, którzy są autorami artykułów na naszym blogu!
POZNAJ OFERTĘ KUrSÓW
© Ambitni Szkoła Informatyki 011111100101(2) | jesteś niemal gotowy!
crossmenu