Ćwiczenia SQL

Zadanie 1: Połączenie z bazą i ustawienie kodowania

Opis: Celem tego zadania jest połączenie się z bazą danych MySQL oraz ustawienie odpowiedniego kodowania znaków, aby zapewnić poprawne wyświetlanie polskich znaków.

conn = mysqli_connect('localhost', 'root', '', 'szkola');
mysqli_set_charset(conn, 'utf8');

Zadanie 2: Wyświetlanie wszystkich klas

Opis: Zadanie polega na pobraniu i wyświetleniu wszystkich klas z tabeli `klasa`. Chcemy zobaczyć wszystkie rekordy tej tabeli.

$q = 'SELECT * FROM klasa';
$result = mysqli_query(conn, $q);
while ($row = mysqli_fetch_assoc($result)) {
echo $row['nazwa'];
}

Zadanie 3: Dodawanie nowej klasy do bazy

Opis: W tym zadaniu należy dodać nową klasę do tabeli `klasa`. Wartością do dodania będzie nazwa nowej klasy.

$q = "INSERT INTO klasa (nazwa) VALUES ('Nowa Klasa');";
$result = mysqli_query(conn, $q);

Zadanie 4: Usuwanie klasy z bazy

Opis: W tym zadaniu należy usunąć klasę o nazwie "Nowa Klasa" z tabeli `klasa`.

$q = "DELETE FROM klasa WHERE nazwa = 'Nowa Klasa';";
$result = mysqli_query(conn, $q);

Zadanie 5: Aktualizacja danych klasy

Opis: Celem tego zadania jest zaktualizowanie danych klasy, np. zmiana nazwy klasy o identyfikatorze 1.

$q = "UPDATE klasa SET nazwa = 'Klasa Zaktualizowana' WHERE id = 1;";
$result = mysqli_query(conn, $q);

Zadanie 6: Wyświetlanie klasy o określonym ID

Opis: Zadanie polega na wyświetleniu klasy o określonym ID. W tym przypadku będziemy szukać klasy o ID równym 1.

$q = "SELECT * FROM klasa WHERE id = 1";
$result = mysqli_query(conn, $q);
$row = mysqli_fetch_assoc($result);
echo $row['nazwa'];

Zadanie 7: Wyświetlanie klas z nazwą zawierającą 'A'

Opis: Zadanie to polega na wyświetleniu wszystkich klas, których nazwa zawiera literę 'A'.

$q = "SELECT * FROM klasa WHERE nazwa LIKE '%A%'";
$result = mysqli_query(conn, $q);

Zadanie 8: Zliczanie liczby klas w bazie

Opis: Zadanie polega na zliczeniu liczby klas znajdujących się w tabeli `klasa`.

$q = "SELECT COUNT(*) AS liczba FROM klasa";
$result = mysqli_query(conn, $q);
$row = mysqli_fetch_assoc($result);
echo $row['liczba'];

Zadanie 9: Wyświetlanie klas w porządku alfabetycznym

Opis: Celem zadania jest wyświetlenie klas posortowanych alfabetycznie po nazwie.

$q = "SELECT * FROM klasa ORDER BY nazwa ASC";
$result = mysqli_query(conn, $q);

Zadanie 10: Wyświetlanie 5 pierwszych klas

Opis: Zadanie to polega na wyświetleniu pierwszych 5 klas z tabeli `klasa`.

$q = "SELECT * FROM klasa LIMIT 5";
$result = mysqli_query(conn, $q);

Zadanie 11: Łączenie dwóch tabel

Opis: Zadanie to polega na połączeniu dwóch tabel: `klasa` i `uczniowie`, aby wyświetlić imiona uczniów oraz nazwy klas, w których się znajdują.

$q = "SELECT klasa.nazwa, uczniowie.imie FROM klasa JOIN uczniowie ON klasa.id = uczniowie.id_klasa";
$result = mysqli_query(conn, $q);

Zadanie 12: Grupowanie klas wg liczby uczniów

Opis: Celem zadania jest wyświetlenie liczby uczniów w każdej klasie. W tym celu wykorzystamy funkcję agregującą COUNT.

$q = "SELECT klasa.nazwa, COUNT(uczniowie.id) AS liczba_uczniow FROM klasa LEFT JOIN uczniowie ON klasa.id = uczniowie.id_klasa GROUP BY klasa.id";
$result = mysqli_query(conn, $q);

Zadanie 13: Tworzenie nowej tabeli

Opis: W tym zadaniu należy utworzyć nową tabelę `nauczyciele` zawierającą kolumny `id`, `imie` oraz `nazwisko`.

$q = "CREATE TABLE nauczyciele (id INT AUTO_INCREMENT PRIMARY KEY, imie VARCHAR(100), nazwisko VARCHAR(100))";
$result = mysqli_query(conn, $q);

Zadanie 14: Modyfikowanie tabeli (dodawanie kolumny)

Opis: Celem zadania jest dodanie nowej kolumny `opis` do tabeli `klasa`.

$q = "ALTER TABLE klasa ADD COLUMN opis TEXT";
$result = mysqli_query(conn, $q);

Zadanie 15: Usuwanie tabeli

Opis: Zadanie polega na usunięciu tabeli `nauczyciele` z bazy danych.

$q = "DROP TABLE nauczyciele";
$result = mysqli_query(conn, $q);

Zadanie 16: Wyświetlanie wyników z określonymi warunkami

Opis: Celem tego zadania jest wyświetlenie uczniów, którzy mają więcej niż 18 lat.

$q = "SELECT * FROM uczniowie WHERE wiek > 18";
$result = mysqli_query(conn, $q);

Zadanie 17: Sortowanie wyników w odwrotnej kolejności

Opis: W tym zadaniu chcemy posortować klasy według ID w odwrotnej kolejności (od największego do najmniejszego ID).

$q = "SELECT * FROM klasa ORDER BY id DESC LIMIT 1";
$result = mysqli_query(conn, $q);

Zadanie 18: Zapytanie z użyciem operatora BETWEEN

Opis: Celem tego zadania jest pobranie danych z tabeli `klasa` dla klas, których ID mieszczą się w zakresie od 1 do 5.

$q = "SELECT * FROM klasa WHERE id BETWEEN 1 AND 5";
$result = mysqli_query(conn, $q);

Zadanie 19: Użycie funkcji agregującej SUM

Opis: W tym zadaniu należy obliczyć sumę wszystkich uczniów w tabeli `klasa`.

$q = "SELECT SUM(liczba_uczniow) FROM klasa";
$result = mysqli_query(conn, $q);

Zadanie 20: Użycie subzapytania

Opis: Celem tego zadania jest pobranie nazwy klasy, do której należy uczeń o ID 1, przy użyciu subzapytania.

$q = "SELECT nazwa FROM klasa WHERE id IN (SELECT id_klasa FROM uczniowie WHERE id = 1)";
$result = mysqli_query(conn, $q);