Ćwiczenia SQL - Zaawansowane

Ćwiczenie 29: Tworzenie i używanie indeksów

Tworzenie indeksu na kolumnie, aby przyspieszyć wyszukiwanie.

CREATE INDEX idx_klasa ON uczniowie(klasa);
    

Ćwiczenie 30: Zastosowanie wyrażeń regularnych w zapytaniach

Użycie wyrażeń regularnych do wyszukiwania uczniów, których nazwisko zaczyna się na literę 'K'.

SELECT * FROM uczniowie WHERE nazwisko REGEXP '^K';
    

Ćwiczenie 31: Tworzenie procedury składowanej

Tworzenie procedury składowanej, która umożliwia dodanie nowego ucznia do bazy danych.

DELIMITER //
CREATE PROCEDURE DodajUcznia(IN imie VARCHAR(50), IN nazwisko VARCHAR(50), IN wiek INT, IN klasa VARCHAR(10))
BEGIN
    INSERT INTO uczniowie (imie, nazwisko, wiek, klasa) VALUES (imie, nazwisko, wiek, klasa);
END //
DELIMITER ;
    

Ćwiczenie 32: Tworzenie funkcji użytkownika

Przykład funkcji użytkownika, która zwraca średni wiek uczniów.

DELIMITER //
CREATE FUNCTION ObliczSredniWiek() RETURNS DECIMAL(5,2)
BEGIN
    DECLARE wynik DECIMAL(5,2);
    SELECT AVG(wiek) INTO wynik FROM uczniowie;
    RETURN wynik;
END //
DELIMITER ;
    

Ćwiczenie 33: Zastosowanie transakcji i kontroli dostępu

Użycie transakcji do przeprowadzania kilku operacji w jednej jednostce. Jeśli którakolwiek operacja nie powiedzie się, cała transakcja zostanie wycofana.

START TRANSACTION;
UPDATE uczniowie SET wiek = wiek + 1 WHERE klasa = '3A';
DELETE FROM uczniowie WHERE wiek > 18;
COMMIT;
    

Ćwiczenie 34: Optymalizacja zapytań

Optymalizacja zapytania poprzez użycie indeksów, aby przyspieszyć operacje wyszukiwania.

EXPLAIN SELECT * FROM uczniowie WHERE klasa = '2A';
    

Ćwiczenie 35: Tworzenie raportów z agregacją danych

Tworzenie raportu pokazującego średnią ocenę z przedmiotów w każdej klasie.

SELECT klasa, AVG(ocena) AS srednia_ocena FROM oceny GROUP BY klasa;