Powtórzenie wiadomości z widoków, podzapytań i sposobów ich tworzenia
Nowe dane do zaimportowania
-- Tworzenie nowych tabel
CREATE TABLE dzialy (
id_dzialu INT AUTO_INCREMENT PRIMARY KEY,
nazwa_dzialu VARCHAR(50)
);
CREATE TABLE pracownicy (
id_pracownika INT AUTO_INCREMENT PRIMARY KEY,
imie VARCHAR(50),
nazwisko VARCHAR(50),
id_dzialu INT,
pensja DECIMAL(10, 2),
FOREIGN KEY (id_dzialu) REFERENCES dzialy(id_dzialu)
);
CREATE TABLE projekty (
id_projektu INT AUTO_INCREMENT PRIMARY KEY,
nazwa_projektu VARCHAR(50),
budzet DECIMAL(10, 2)
);
CREATE TABLE pracownicy_projekty (
id_pracownika INT,
id_projektu INT,
FOREIGN KEY (id_pracownika) REFERENCES pracownicy(id_pracownika),
FOREIGN KEY (id_projektu) REFERENCES projekty(id_projektu),
PRIMARY KEY (id_pracownika, id_projektu)
);
-- Wstawianie danych
-- Działy
INSERT INTO dzialy (nazwa_dzialu) VALUES
('HR'),
('IT'),
('Sales'),
('Finance');
-- Pracownicy
INSERT INTO pracownicy (imie, nazwisko, id_dzialu, pensja) VALUES
('Alice', 'Smith', 1, 5000.00),
('Bob', 'Johnson', 2, 7000.00),
('Charlie', 'Brown', 2, 7500.00),
('David', 'Davis', 3, 4500.00),
('Eve', 'Miller', 4, 6000.00);
-- Projekty
INSERT INTO projekty (nazwa_projektu, budzet) VALUES
('Project Alpha', 100000.00),
('Project Beta', 50000.00),
('Project Gamma', 150000.00);
-- Pracownicy-Projekty
INSERT INTO pracownicy_projekty (id_pracownika, id_projektu) VALUES
(2, 1),
(3, 1),
(4, 2),
(5, 3),
(2, 3);
Ćwiczenia
1. Tworzenie widoków
- Utwórz widok
widok_pracownicy_dzialy
, który łączy dane pracowników i ich działów (imie, nazwisko, nazwa_dzialu). - Utwórz widok
widok_projekty_pracownicy
, który pokazuje nazwy projektów oraz pracowników przydzielonych do każdego projektu.
2. UNION / UNION ALL
- Zwróć listę wszystkich nazwisk pracowników, którzy zarabiają powyżej 6000 lub pracują w dziale "HR". Wykorzystaj
UNION
do połączenia dwóch zapytań. - Zwróć listę wszystkich nazw projektów i nazwisk pracowników pracujących nad projektami. Użyj
UNION ALL
do połączenia danych z różnych tabel.
3. INTERSECT
- Znajdź pracowników, którzy pracują w dziale "IT" i jednocześnie uczestniczą w projektach. Wybierz tylko ich imiona i nazwiska. (Symuluj
INTERSECT
, korzystając z podzapytania wIN
).
4. EXCEPT
- Znajdź pracowników z działu "Sales", którzy nie uczestniczą w żadnym projekcie. (Symuluj
EXCEPT
, korzystając z podzapytania i operatoraNOT IN
).
5. Podzapytania
- Znajdź nazwiska pracowników, którzy zarabiają więcej niż średnia pensja wszystkich pracowników w dziale "Finance".
- Wyświetl nazwę działu, w którym żaden pracownik nie pracuje nad projektem "Project Alpha".