Widoki (perspektywy) w języku SQL na przykładzie SZBD MySQL - ćwiczenia praktyczne

Przykład użycia widoku (perspektywy):

CREATE OR REPLACE VIEW student_view AS
SELECT s.first_name AS imie, s.last_name AS nazwisko, u.name AS nazwa_uczelni
FROM student s, uczelnie u
WHERE s.ucz_id = u.ucz_id;

Przebieg ćwiczeń

1. Zdefiniować perspektywę o nazwie region_pracownik_view opartą na tabelach region, dept, emp, która będzie wyświetlać następujące dane: nazwę regionu, nazwę departamentu, imię, nazwisko, stanowiskowynagrodzenia pracowników. Dane posortować rosnąco według nazw regionów, nazw departamentów, stanowisk, nazwisk, imion. Wyświetlić zawartość utworzonego widoku.

CREATE OR REPLACE VIEW region_pracownik_view AS
 SELECT R.name AS region_name,
  D.name AS dept_name,
  E.title AS emp_title, E.first_name AS emp_first_name, E.last_name AS emp_last_name, E.salary AS emp_salary
 FROM region R, dept D, emp E
 WHERE R.id=D.region_id
  AND D.id=E.dept_id
 ORDER BY region_name, dept_name, emp_title, emp_last_name, emp_first_name;

SELECT * FROM region_pracownik_view;

3-12. Zdefiniować widok produkt_info_view oparty na tabelach item, product, inventory, który będzie pobierał z nich następujące informacje: nazwa produktu, sugerowana cena, cena sprzedaży, ilość w magazynie. Dane posortować rosnąco wg nazw towarów. Wyświetlić zawartość utworzonego widoku.3-2

CREATE VIEW produkt_info_view AS
 SELECT P.name, P.suggested_price,
  It.price,
  Inv.amount_in_stock
 FROM product P, item It, inventory Inv
 WHERE P.id=It.product_id
  AND P.id=Inv.product_id
 ORDER BY P.name;

3. Korzystajac ze zdefiniowanego widoku, wyswietlić nazwę produktu, sugerowana cenę sprzedaży, ilość w magazynie. Uwzględnić tylko te produkty, ktorych ilość >= 100.3-3

SELECT name, suggested_price, amount_in_stock
FROM produkt_info_view
WHERE amount_in_stock >= 100;

4. Z bazy danych pobrać następujące informacje: imię, nazwisko, stanowisko pracownika oraz imię i nazwisko jego managera. Dane posortować wg nazwiskimion managera. Uwzględnić także tych pracowników, którzy nie mają managera. Odwołanie do tej samej tabeli.

3-4

SELECT CONCAT (E.first_name, ' ', E.last_name, ', ', E.title) AS employee,
CONCAT (M.first_name, ' ', M.last_name, ', ', M.title) AS manager
FROM emp E LEFT JOIN emp M ON E.manager_id = M.id
WHERE (E.manager_id = M.id) OR (E.manager_id IS NULL);

 

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.