О. А. Ткачев

Основы программирования в СУБД Oracle. SQL+PL/SQL.


Скачать книгу

операции в выражении имеют одинаковый приоритет, то их выполнение производится слева направо.

      Рассмотрим примеры использования вычисляемых столбцов. Если значение столбца commission_pct в таблице Employees обозначает надбавку к зарплате как часть заработной платы, то общая зарплата с учетом комиссионных может быть вычислена с использованием выражения:

      SALARY * (1 + COMMISSION_pct) As Total_Salary

      Следует иметь в виду то, что у некоторых сотрудников значение столбца commission_pct равно NULL. А если один из элементов выражения равен NULL, то и все выражение будет иметь значение NULL. Данную проблему можно решить, используя специальные функции, которые мы рассмотрим позже.

      Пример 2.31. Вывести данные о размере комиссионных для сотрудников, которые получают комиссионные

      SELECT employee_id, first_name, last_name, department_id,

      commission_pct*salary as commission

      FROM Employees

      WHERE commission_pct IS NOT NULL;

      Вычисляемые столбцы можно использовать в предложении WHERE.

      Пример 2.32. Вывести данные о продажах товаров, в которых сумма одной покупки превышала 300 000

      SELECT product_id, order_id, item_id, quantity, unit_price,

      quantity*unit_price

      FROM Order_items

      WHERE quantity*unit_price> 300000;

      Использование псевдостолбца ROWNUM

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

      Пример 2.33. Вывести пять строк с данными о продажах товаров, в которых сумма одной покупки превышала 300 000

      SELECT product_id, order_id, item_id, quantity, unit_price,

      quantity*unit_price

      FROM Order_items

      WHERE quantity*unit_price> 300000

      AND ROWNUM <=5;

      Следует иметь в виду, что любой запрос, содержащий условие ROWNUM = N, где N> 1, будет пуст. Это происходит потому, что первая строка, возвращаемая запросом, имеет значение ROWNUM = 1, это значение не удовлетворяет условию ROWNUM = N и поэтому не попадает в результат выполнения запроса. После этого каждая следующая строка будет иметь значение ROWNUM = 1 и также не будет удовлетворять условию ROWNUM = N.

      Оператор конкатенации

      Оператор конкатенации (слияния) записывается двумя вертикальными чертами (||) и используются для того, чтобы объединить при выводе данных два или несколько столбцов или литералов в один столбец.

      Синтаксис:

      {столбец1/литерал1} || {столбец2/литерал2} …As {псевдоним}

      Оператор конкатенации можно применять для строк, чисел и дат. Даты и числа при слиянии конвертируются в строковые значения. При слиянии строки значения со значением типа NULL Oracle возвращает строковое значение.

      Пример 2.34. Вывести данные о заказах, оформленных сотрудником 165

      SELECT ′ Order ′ ||order_id|| ′ from ′ ||order_date

      || ′ is ′ ||status AS Order_Statys

      FROM Orders

      WHERE salesman_id =165;

      Сортировка

      Результат выполнения оператора SELECT может быть упорядочен по значению одного или нескольких столбцов. Для этого служит предложение