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

Тут можно читать онлайн Максим Чалышев - Oracle SQL. 100 шагов от новичка до профессионала - бесплатно ознакомительный отрывок. Жанр: comp-programming, год 11. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Oracle SQL. 100 шагов от новичка до профессионала
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    11
  • ISBN:
    нет данных
  • Рейтинг:
    5/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

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

Oracle SQL. 100 шагов от новичка до профессионала - описание и краткое содержание, автор Максим Чалышев, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Более 300 ответов на вопросы.
Более 500 практических заданий.
Более 1000 разобранных примеров.
Учебник справочник по языку SQL.

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

Oracle SQL. 100 шагов от новичка до профессионала - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Максим Чалышев
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Чем отличается Sequence от итераторов в запросах с CONNECT BY?

Это совершенно разные сущности, хотя результат их работы в чем-то схож. SEQUENCE представляет собой реальный физический объект в базе данных, обращение к которому позволяет вывести на экран заданную последовательность значений, запрос CONNECT BY LEVEL — это просто способ сделать почти то же самое в запросе, без создания SEQUENCE.

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

1. Вывести с помощью запроса значение sin числа от 0 до 1 с шагом 0,1.

2. Вывести с помощью запроса число и день недели (TO_CHAR (DATE,«DY»)) всех дней за 2008 год.

3. Вывести с помощью запроса все числа от 500 до 1000, кроме тех чисел, которые делятся нацело на 10.

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

Шаг 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

Более сложный вариант оператора DECODE:

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

Пример 2

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

Пример 1

Пример 2

Рисунок 155. Запрос: использование оператора CASE

Еще один вариант CASE:

Пример

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

Если в операторе CASE нет предложения ELSE, тогда оператор CASE вернет NULL.

— результат NULL.

Если в операторе CASE несколько одинаковых сравнений, то правильным будет результат последнего из них.

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

Существуют ли подобные операторы в других базах данных, например в MS SQL или PostgreSQL?

Это также оператор CASE с аналогичным синтаксисом и назначением.

Как сравнивать интервалы с помощью DECODE? Например, 1—10 — ответ 1, 20—30 — ответ 2, 30—40 — ответ 3.

Вот пример такого сравнения, здесь речь идет об интервале каталогов:

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

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

2. Из таблицы AUTO выберите сведения о цвете автомобиля, марке автомобиля, если номер автомобиля начинается с цифры 1 — выведите в отдельной колонке «регион 1», с цифры 2 — «регион 2», с цифры 3 — «регион 3». Используйте DECODE.

3. Сделайте предыдущее задание с использованием CASE.

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

Интервал:

Закладка:

Сделать


Максим Чалышев читать все книги автора по порядку

Максим Чалышев - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Oracle SQL. 100 шагов от новичка до профессионала, автор: Максим Чалышев. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x