Podzapytania zagnieżdżone w języku SQL na przykładzie DBMS MySQL - ćwiczenia praktyczne

Przebieg ćwiczeń

  1. Zainstalować serwer MySQL w systemie operacyjnym Windows. Przy instalacji utworzyć hasło THM*2015 dla roota.
  2. Utworzyć bazę danych firmaTibG1.
  3. 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.
  4. 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, nazwiskawynagrodzenie 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;

3lub

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;

4

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.