Przebieg ćwiczeń
- Zainstalować serwer MySQL w systemie operacyjnym Windows. Przy instalacji utworzyć hasło THM*2015 dla roota.
- Utworzyć bazę danych firmaTibG1.
- Użytkownikowi przemek, który będzie się logować lokalnie do serwera MySQL przy użyciu wybranego przez siebie hasła, nadać pełne uprawnienia do bazy danych.
- Utworzyć strukturę bazy danych i wprowadzić do niej przykładowe dane ze skryptu firma.sql.
1. Z bazy danych pobrać imiona i nazwiska pracowników, którzy mają wynagrodzenie wyższe niż średnie wynagrodzenie w firmie. Dane posortować rosnąco wg nazwisk i imion. Jeśli zajdzie potrzeba, użyć polecenia LIMIT.
SELECT AVG(salary) FROM emp; SELECT first_name AS imie, last_name AS nazwisko, salary AS placa FROM emp WHERE salary > (SELECT AVG(salary) FROM emp) ORDER BY nazwisko, imie;
2. Z bazy danych pobrać imiona, nazwiska, wynagrodzenie i identyfikator departamentu pracowników, którzy mają najniższe wynagrodzenie w firmie. Dane posortować wg identyfikatora departamentu.
SELECT MIN(salary) FROM emp; SELECT first_name AS imie, last_name AS nazwisko, salary AS pensja, dept_id AS departament FROM emp WHERE salary = (SELECT MIN(salary) FROM emp) ORDER BY departament;
3. Powyższe zapytanie zmodyfikować w ten sposób, aby zamiast identyfikatora departamentu była wyświetlana jego nazwa.
SELECT E.first_name AS imie, E.last_name AS nazwisko, E.salary AS pensja, D.name AS departament FROM emp E, dept D WHERE E.dept_id=D.id AND E.salary=(SELECT MIN(salary) FROM emp) ORDER BY E.dept_id;
SELECT E.first_name AS imie, E.last_name AS nazwisko, E.salary AS pensja, D.name FROM emp E INNER JOIN dept D ON E.dept_id=D.id WHERE E.dept_id=D.id AND E.salary=(SELECT MIN(salary) FROM emp) ORDER BY E.dept_id;
4. Z bazy danych pobrać imiona, nazwiska i wynagrodzenia pracowników, którzy mają wynagrodzenie niższe/wyższe niż pracownicy o nazwisku Patel.
SELECT first_name AS imie, last_name AS nazwisko, salary AS pensja FROM emp WHERE salary > ALL(SELECT salary FROM emp WHERE last_name='Patel') ORDER BY pensja; SELECT first_name AS imie, last_name AS nazwisko, salary AS pensja FROM emp WHERE salary < ALL(SELECT salary FROM emp WHERE last_name='Patel') ORDER BY pensja;