Ćwiczenia INF.03 – Filtrowanie danych SQL

Utworzenie bazy danych i tabeli

Utwórz bazę danych schronisko z tabelą zwierzeta i kolumnami:

-- Utworzenie bazy danych
CREATE DATABASE schronisko
CHARACTER SET utf8
COLLATE utf8_unicode_ci;

-- Wybranie bazy danych
USE schronisko;

-- Utworzenie tabeli zwierzeta
CREATE TABLE zwierzeta (
    id INT PRIMARY KEY AUTO_INCREMENT,
    imie VARCHAR(50) NOT NULL,
    gatunek VARCHAR(30) NOT NULL,
    wiek INT NOT NULL,
    data_przyjecia DATE NOT NULL
);
    

Zadanie 1 – Wyświetlanie kotów

Wyświetl wszystkie zwierzęta typu kot.

SELECT * FROM zwierzeta
WHERE gatunek = 'kot';
    

Zadanie 2 – Zwierzęta starsze niż 5 lat

Wyświetl wszystkie zwierzęta, których wiek jest większy niż 5.

SELECT * FROM zwierzeta
WHERE wiek > 5;
    

Zadanie 3 – Zwierzęta przyjęte w konkretnym okresie

Wyświetl wszystkie zwierzęta przyjęte między 2025-01-01 a 2025-06-30.

SELECT * FROM zwierzeta
WHERE data_przyjecia BETWEEN '2025-01-01' AND '2025-06-30';
    

Zadanie 4 – Psy młodsze niż 3 lata

Wyświetl wszystkie zwierzęta gatunku pies młodsze niż 3 lata.

SELECT * FROM zwierzeta
WHERE gatunek = 'pies' AND wiek < 3;
    

Zadanie 5 – Sortowanie według wieku i daty przyjęcia

Wyświetl wszystkie zwierzęta posortowane rosnąco według wieku, a następnie malejąco według daty przyjęcia.

SELECT * FROM zwierzeta
ORDER BY wiek ASC, data_przyjecia DESC;
    

Zadanie 6 – Wyszukiwanie zwierząt po imieniu

Wyświetl zwierzęta, których imię zaczyna się na literę M.

SELECT * FROM zwierzeta
WHERE imie LIKE 'M%';
    

Zadanie 7 – Liczba zwierząt według gatunku

Wyświetl liczbę zwierząt w każdym gatunku.

SELECT gatunek, COUNT(*) AS liczba
FROM zwierzeta
GROUP BY gatunek;
    

Zadanie 8 – Średni wiek zwierząt

Oblicz średni wiek zwierząt dla każdego gatunku.

SELECT gatunek, AVG(wiek) AS sredni_wiek
FROM zwierzeta
GROUP BY gatunek;
    

Zadanie 9 – Najstarsze zwierzę z każdego gatunku

Wyświetl po jednym najstarszym zwierzęciu dla każdego gatunku.

SELECT * FROM zwierzeta z1
WHERE wiek = (
    SELECT MAX(wiek) FROM zwierzeta z2
    WHERE z2.gatunek = z1.gatunek
);
    

Zadanie 10 – Zwierzęta przyjęte w ostatnich 30 dniach

Wyświetl wszystkie zwierzęta przyjęte w ciągu ostatnich 30 dni.

SELECT * FROM zwierzeta
WHERE data_przyjecia >= CURDATE() - INTERVAL 30 DAY;
    

Zadanie 11 – Wyszukiwanie z wielu kryteriów

Wyświetl psy młodsze niż 5 lat lub koty starsze niż 7 lat.

SELECT * FROM zwierzeta
WHERE (gatunek = 'pies' AND wiek < 5)
   OR (gatunek = 'kot' AND wiek > 7);
    

Zadanie 12 – Porządkowanie i filtrowanie

Wyświetl wszystkie zwierzęta posortowane alfabetycznie według imienia i filtrowane po gatunku „kot”.

SELECT * FROM zwierzeta
WHERE gatunek = 'kot'
ORDER BY imie ASC;