Zadania z SZBD (MS Access / Base) - Część 2

Zadanie 11: Tworzenie procedury

Napisz procedurę składowaną do zwiększenia wynagrodzenia o 10% dla wszystkich pracowników.

CREATE PROCEDURE ZwieksszWynagrodzenie() BEGIN; UPDATE Pracownicy SET Wynagrodzenie = Wynagrodzenie * 1.10; END;

Zadanie 12: Wyzwalacz

Stwórz wyzwalacz zapisujący historię zmian wynagrodzenia do tabeli HistoriaWynagrodzen.

CREATE TRIGGER ZmianaWynagrodzenia AFTER UPDATE ON Pracownicy FOR EACH ROW BEGIN; INSERT INTO HistoriaWynagrodzen (ID_Pracownika, StareWynagrodzenie, NoweWynagrodzenie) VALUES (OLD.ID, OLD.Wynagrodzenie, NEW.Wynagrodzenie); END;

Zadanie 13: Łączenie tabel

Pobierz dane pracowników wraz z nazwami ich działów z tabeli Dzialy.

SELECT Pracownicy.Imię, Pracownicy.Nazwisko, Dzialy.Nazwa FROM Pracownicy JOIN Dzialy ON Pracownicy.ID_Dzialu = Dzialy.ID;

Zadanie 14: Grupowanie wyników

Pokaż średnie wynagrodzenie w każdym dziale.

SELECT ID_Dzialu, AVG(Wynagrodzenie) AS SrednieWynagrodzenie FROM Pracownicy GROUP BY ID_Dzialu;

Zadanie 15: Ograniczenie wyników

Wyświetl trzech najlepiej zarabiających pracowników.

SELECT * FROM Pracownicy ORDER BY Wynagrodzenie DESC LIMIT 3;

Zadanie 16: Tworzenie tabeli pomocniczej

Utwórz tabelę HistoriaWynagrodzen do przechowywania zmian wynagrodzenia.

CREATE TABLE HistoriaWynagrodzen ( ID INTEGER PRIMARY KEY AUTOINCREMENT, ID_Pracownika INTEGER, StareWynagrodzenie CURRENCY, NoweWynagrodzenie CURRENCY, DataZmiany TIMESTAMP DEFAULT CURRENT_TIMESTAMP );

Zadanie 17: Wstawianie danych do nowej tabeli

Dodaj przykładowe wpisy do tabeli HistoriaWynagrodzen.

INSERT INTO HistoriaWynagrodzen (ID_Pracownika, StareWynagrodzenie, NoweWynagrodzenie) VALUES (1, 5000, 5500), (2, 6000, 6600);

Zadanie 18: Tworzenie relacji

Połącz tabelę Pracownicy z tabelą Dzialy.

ALTER TABLE Pracownicy ADD COLUMN ID_Dzialu INTEGER; ALTER TABLE Pracownicy ADD FOREIGN KEY (ID_Dzialu) REFERENCES Dzialy(ID);

Zadanie 19: Zapytanie z warunkami

Wyświetl wszystkich pracowników, którzy zarabiają więcej niż średnia pensja.

SELECT * FROM Pracownicy WHERE Wynagrodzenie > (SELECT AVG(Wynagrodzenie) FROM Pracownicy);

Zadanie 20: Usuwanie relacji

Usuń klucz obcy łączący tabelę Pracownicy z tabelą Dzialy.

ALTER TABLE Pracownicy DROP COLUMN ID_Dzialu;