Максим Чалышев - Oracle SQL. 100 шагов от новичка до профессионала

Здесь есть возможность читать онлайн «Максим Чалышев - Oracle SQL. 100 шагов от новичка до профессионала» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Год выпуска: 11, Жанр: Программирование, Базы данных, Прочая околокомпьтерная литература, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Oracle SQL. 100 шагов от новичка до профессионала: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Oracle SQL. 100 шагов от новичка до профессионала»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Более 300 ответов на вопросы.
Более 500 практических заданий.
Более 1000 разобранных примеров.
Учебник справочник по языку SQL.

Oracle SQL. 100 шагов от новичка до профессионала — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Oracle SQL. 100 шагов от новичка до профессионала», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

День двенадцатый

Шаг 56. Иерархические запросы CONNECT BY

Введение

Достаточно часто необходимо представить данные в иерархическом виде. Например, есть иерархическая система подчинения подразделений на предприятии, либо состав изделий, когда одно изделие состоит из других, а те, в свою очередь, также состоят из более мелких деталей.

Для этого используется древовидная иерархическая система, такая, где есть идентификатор и есть идентификатор родителя (родительского узла) ID, PARENTED. Для работы с подобной иерархической структурой также используется конструкция SQL — CONNECT BY.

Теория и практика

Оператор CONNECT BY используется для запросов, где требуется работа со сложной древовидной иерархией.

Например, уровни подчинения сотрудников компании или сложная структура отделов на предприятии.

где LEVEL — специальная переменная, означающая уровень иерархии;
START WITH — ключевой оператор древовидной структуры: с какого элемента необходимо начинать обход;
INITIAL-CONDITION — условное выражение для обозначения начала обхода.
Пример: создадим и заполним таблицу.

Заполним таблицу, выполняя последовательно каждую команду.

Здесь ID — идентификатор сотрудника, NAME — наименование сотрудника, IDPARENT — идентификатор руководителя данного сотрудника.

Пример позволяет показать иерархию.

LEVEL покажет уровень иерархии.

В данном примере генерируется количество символов подчеркивания, соответствующее уровню иерархии LEVEL.

Рисунок 150. Использование CONNECT BY START WITH PRIOR

Важные замечания

В данном способе воспроизведения иерархии с использованием запросов SQL CONNECT BY не работает классическая сортировка ORDER BY, попытка сортировки запроса с помощью ORDER BY ломает иерархию, поэтому для сортировки подобных запросов используется специальная директива ORDER SIBLINGS BY.

Есть возможность представить иерархию в виде пути от каталога к каталогу. Для этого необходимо воспользоваться функцией SYS_CONNECT_BY_PATH (NAME, '/»).

Рисунок 151. CONNECT BY: пример

Иногда при таком способе организации данных возникают так называемые циклические ссылки, это когда родительская запись ссылается на подчиненную, а подчиненная, в свою очередь, на родительскую. Обращение в запросе к таким данным приводит к бесконечному выполнению цикла и ошибке.

Избежать подобной проблемы позволяет использование специальной директивы NOCYCLE.

Переделаем запрос из примера с использованием данной директивы.

Вопросы учеников

Такая конструкция для вывода иерархических данных существует только в диалекте ORACLE SQL?

Нет, в MS SQL и PostgreSQL также существуют подобные операторы. Это оператор WITH RECURSIVE.

Для MySQL такой конструкции не существует.

Как начать обход дерева не с первого, а со второго, третьего элемента?

Для этого в директиве START WIDTH следует указать идентификатор того элемента, с которого начинается обход древовидной структуры.

Например,

Здесь START WITH IDPARENT =1, обход начинается с первого элемента.

Рисунок 152. CONNECT BY: пример SYS_CONNECT_BY_PATH

Контрольные вопросы и задания для самостоятельного выполнения

1. Повторите материалы данного шага.

2. Создайте таблицу «Детали», где одна деталь может быть частью другой, выведите на экран иерархию деталей.

3. Создайте циклическую иерархию, запустите запрос с использованием NOCYRCLE и без использования NOCYRCLE, проанализируйте результат.

Шаг 57. Условные выражения в SQL-запросе. DECODE/CASE

Введение

В языке SQL есть специальные команды для условных выражений в запросах, то есть выражений, на критерии истинности которых осуществляется ветвление запроса. Аналогичные конструкции есть в алгоритмических языках, таких, например, как JAVA, PASCAL или C++.

В алгоритмических языках это операторы IF и CASE.

В языке SQL похожая функциональность реализуется с помощью операторов DECODE, CASE.

Теория и практика

Условные выражения в SQL ORACLE диалекта реализуются с помощью операторов CASE и DECODE.

Разберем каждый из условных операторов отдельно с примерами.

DeCODEвыводит значение в зависимости от логического выражения.

SELECT DeCODE(выражение, значение, значение если выражение = значение, значение если выражение!= значение) FROM TABLE;
Пример 1

равно 2.

Пример 2

Рисунок 153. Запрос: использование DECODE

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Oracle SQL. 100 шагов от новичка до профессионала»

Представляем Вашему вниманию похожие книги на «Oracle SQL. 100 шагов от новичка до профессионала» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Oracle SQL. 100 шагов от новичка до профессионала»

Обсуждение, отзывы о книге «Oracle SQL. 100 шагов от новичка до профессионала» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x