Знакомство с Oracle Application Express. Создание и выполнение SQL-запросов (Лабораторная работа № 1), страница 3

10.  Выполните запрос select t.product_name, t.category, t.list_price from (select * from demo_product_info where category='Womens') t. “t” псевдоним таблицы вложенного подзапроса.

Часть 4

Цель: Операции над множествами. Иерархические запросы. Соединение таблицы с самой собой.

Задания:

1.  При помощи оператора Intersect определите города, в которых есть и заказчики и филиалы. Используйте таблицы demo_customers и dept.

2.  Выберите все города из таблиц demo_customers и dept, используя оператор UNION.

3.  Выберите все города из таблиц demo_customers и dept, используя оператор UNION ALL. Сравните полученные результаты текущего и предыдущего задания.

4.  Выберите разницу между городами таблицы dept и demo_customers и demo_customers и dept при помощи оператора MINUS.

5.  Используя соединение таблицы с самой собой, определите служащих, зачисленных на работу раньше своих руководителей. Данные берутся из таблицы emp.

6.  Использования синтаксис объединения, использующего JOIN,  определите служащих имеющих зарплату больше своего руководителя.

7.  Выведите список сотрудников и их начальников, используя внешнее объединение.

8.  Используя иерархических запросов, проследите уровни подчиненности сотрудников фирмы. Данные берутся из таблицы emp.

9.  Выполните предыдущий запрос, используя удобное для восприятия форматирование вывода с помощью функции LPAD и псевдонима столбца LEVEL.

10.  Покажите все ветви части общего дерева иерархии, выделенной предыдущим запросом, с указанием длины пути от родителя к потомку в этой ветви и самого пути от начальника к подчиненному для этой ветви.

Технология работы:

1.  Выполните запрос select lower(cust_city) from demo_customers Intersect select lower(loc) from dept. Оператор Intersect позволяет найти совпадения значения строк в двух таблицах.

2.  Выполните запрос  select lower(cust_city) from demo_customers Union select lower(loc) from dept.

3.  Выполните запрос select lower(cust_city) from demo_customers union all select lower(loc) from dept. Конструкция Union all возвращает все результаты двух выборок, а union только уникальные значения.

4.  Выполните запрос select lower(loc) from dept minus select lower(cust_city) from demo_customers и запрос select lower(cust_city) from demo_customers minus select lower(loc) from dept. Сравните полученные результаты.

5.  Выполните запрос

select e1.ename,e1.job,e1.sal,e1.hiredate,e2.ename,e2.job,e2.sal,e2.hiredate from emp e1, emp e2 where e1.mgr=e2.empno and e1.hiredate<e2.hiredate. Поле mrg в таблице emp внешний ключ на эту же таблицу emp, это поле указывает на начальника сотрудника определённого в таблице emp. Для выборки данных из таблиц используются псевдонимы таблиц e1 и e2. Из таблицы e1 выбираются данные по сотрудникам. Из таблицы e2 выбираются данные по их начальникам. Выражение e1.mgr=e2.empno объединяет данные двух таблиц при помощи внешнего и первичного ключа.

6.  Выполните запрос

select e1.ename,e1.job,e1.sal,e1.hiredate,e2.ename,e2.job,e2.sal,e2.hiredate from emp e1 left outer join emp e2 on e1.mgr=e2.empno where e1.sal>e2.sal.

Выражение emp e1 inner join emp e2 on e1.mgr=e2.empno позволяет выполнить соединение таблиц по одному или нескольким ключевым полям (несколько условий указываются в скобках после ключевого слова on).