Podstawy SQL, zapytania SELECT, filtrowanie WHERE, sortowanie, laczenie tabel
ð Podstawa programowa: II.3dSQL (Structured Query Language) to standardowy jezyk do komunikacji z bazami danych. Umozliwia tworzenie tabel, wstawianie danych, wyszukiwanie informacji, modyfikowanie i usuwanie rekordow. SQL jest uzywany przez niemal wszystkie systemy relacyjnych baz danych.
Kwerenda to zapytanie skierowane do bazy danych. W MS Access kwerendy mozna tworzyc w trybie graficznym (projektowania) lub w trybie SQL. Podstawowe typy kwerend:
Podstawowa skladnia zapytania SELECT:
SELECT kolumna1, kolumna2, ...
FROM nazwa_tabeli
WHERE warunek
ORDER BY kolumna ASC|DESC;
-- Wszystkie dane z tabeli Uczniowie
SELECT * FROM Uczniowie;
-- Tylko imiona i nazwiska
SELECT Imie, Nazwisko FROM Uczniowie;
-- Uczniowie z klasy 2a
SELECT * FROM Uczniowie WHERE Klasa = '2a';
-- Uczniowie ze srednia powyzej 4.0, posortowani malejaco
SELECT Imie, Nazwisko, Srednia
FROM Uczniowie
WHERE Srednia > 4.0
ORDER BY Srednia DESC;
-- Uczniowie z klasy 2a lub 2b
SELECT * FROM Uczniowie WHERE Klasa IN ('2a', '2b');
-- Uczniowie, ktorych nazwisko zaczyna sie na "K"
SELECT * FROM Uczniowie WHERE Nazwisko LIKE 'K%';
-- Uczniowie urodzeni miedzy 2008 a 2010 ze srednia > 4.0
SELECT * FROM Uczniowie
WHERE Data_urodzenia BETWEEN '2008-01-01' AND '2010-12-31'
AND Srednia > 4.0;
Funkcje obliczajace wartosci dla grup rekordow:
-- Liczba uczniow w kazdej klasie
SELECT Klasa, COUNT(*) AS Liczba_uczniow
FROM Uczniowie
GROUP BY Klasa;
-- Srednia ocen z kazdego przedmiotu
SELECT Przedmioty.Nazwa, AVG(Oceny.Ocena) AS Srednia_ocen
FROM Oceny
JOIN Przedmioty ON Oceny.ID_przedmiotu = Przedmioty.ID
GROUP BY Przedmioty.Nazwa
HAVING AVG(Oceny.Ocena) > 3.5;
JOIN laczy dane z dwoch lub wiecej tabel na podstawie wspolnego pola (klucza):
-- Oceny uczniow z nazwami przedmiotow
SELECT Uczniowie.Imie, Uczniowie.Nazwisko,
Przedmioty.Nazwa, Oceny.Ocena
FROM Oceny
INNER JOIN Uczniowie ON Oceny.ID_ucznia = Uczniowie.ID
INNER JOIN Przedmioty ON Oceny.ID_przedmiotu = Przedmioty.ID
ORDER BY Uczniowie.Nazwisko;
Access oferuje graficzny kreator kwerend:
Uzyj bazy danych "Dziennik szkolny" z lekcji 12 (lub stworz nowa). Napisz zapytania SQL: (a) wyswietl wszystkich uczniow posortowanych alfabetycznie, (b) wyswietl uczniow z klasy "2a", (c) policz ilu jest uczniow w kazdej klasie, (d) znajdz ucznia z najwyzsza srednia. Wykonaj zapytania w Access lub na stronie db-fiddle.com.
-- a) Wszyscy uczniowie alfabetycznie
SELECT * FROM Uczniowie ORDER BY Nazwisko, Imie;
-- b) Uczniowie z klasy 2a
SELECT * FROM Uczniowie WHERE Klasa = '2a';
-- c) Liczba uczniow w klasach
SELECT Klasa, COUNT(*) AS Liczba
FROM Uczniowie GROUP BY Klasa;
-- d) Uczen z najwyzsza srednia
SELECT Imie, Nazwisko, Srednia
FROM Uczniowie
ORDER BY Srednia DESC
LIMIT 1;
Napisz zapytania SQL: (a) wyswietl imie, nazwisko i wszystkie oceny uczniow z matematyki (JOIN), (b) wyswietl uczniow, ktorzy maja przynajmniej jedna ocene 6 (DISTINCT), (c) oblicz srednia ocene z kazdego przedmiotu, (d) znajdz przedmioty, w ktorych srednia ocen jest nizsza niz 3.5 (HAVING), (e) wyswietl uczniow, ktorych nazwisko zaczyna sie na "K" lub "M" (LIKE, OR).
W Microsoft Access stworz 4 kwerendy uzywajac trybu graficznego (Projektowanie): (a) lista uczniow z ocenami z wybranego przedmiotu, (b) raport srednich ocen uczniow (z polem obliczeniowym), (c) kwerenda parametryczna - po uruchomieniu pyta o nazwe klasy i wyswietla uczniow, (d) kwerenda krzyżowa: wiersze = uczniowie, kolumny = przedmioty, wartosci = oceny. Dla kazdej kwerendy sprawdz widok SQL.
Napisz zaawansowane zapytania SQL: (a) wyswietl 3 najlepszych uczniow z kazdej klasy (podzapytanie), (b) znajdz uczniow, ktorzy nie maja zadnej oceny z matematyki (LEFT JOIN + IS NULL), (c) stworz zapytanie aktualizujace - podnieś o 0.5 wszystkie oceny uczniow klasy 2a z biologii, (d) stworz widok (VIEW) "Raport_ocen" laczacy dane ucznia, przedmiotu i oceny. Przetestuj na db-fiddle.com.