Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lec4.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
249.86 Кб
Скачать

Курс лекций “Базы данных и СУБД” Ульянов В.С.

Лекция 4. Язык sql. Однострочные функции.

Функции

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

function(argument, argument, ...)

Функции могут использоваться для выполнения расчетов с данными, преобразования типов данных, изменения форматов вывода дат и т.д. Функции SQL бывают двух основных типов:

  • однострочные (или скалярные) функции

  • групповые (или агрегатные) функции

Эти функции различаются количеством строк, на которых они оперируют. Однострочная функция возвращает единственное значение для каждой строки таблицы, в то время как групповая функция возвращает единственное значение для целой группы строк. Групповые функции будут рассмотрены в следующих лекциях.

Однострочные функции

Однострочные функции могут появляться в предложениях SELECT, WHERE и ORDER BY команды SELECT. В качестве аргументов они могут принимать константы, заданные пользователем, значения переменных, имена столбцов таблицы БД или выражения, составленные с помощью операторов и функций. Все однострочные функции, как правило, разбивают на несколько групп по типам данных их аргументов и возвращаемых значений. Выделяют:

  • числовые функции,

  • символьные функции,

  • функции для работы с датами,

  • функции преобразования.

Числовые функции

Числовые функции принимают в качестве аргументов и возвращают в качестве результата числовые значения. В следующей таблице приведены некоторые из числовых функций:

Функция

Описание

ABS(n)

Возвращает абсолютную величину n.

MOD(m, n)

Возвращает остаток от деления m на n. Если n=0, возвращает m.

POWER(m, n)

Возвращает m в степени n. Основание m и степень n могут быть любыми числами, но если m отрицательно, то n должно быть целым.

ROUND(m[, n])

Возвращает m, округленное до n позиций после десятичной точки; если n опущено, то до целого, если n отрицательно, округляется целая часть числа. n должно быть целым.

SQRT (n)

Возвращает квадратный корень из n. n должно быть неотрицательным.

TRUNC(m[, n])

Возвращает m, усеченное до n цифр после десятичной точки. Если n опущено, усечение выполняется до целого. n может быть отрицательным, что приводит к усечению (обнулению) n цифр слева от десятичной точки.

Примеры использования числовых функций

В примерах используется фиктивная таблица СУБД Oracle DUAL. Эта таблица принадлежит пользователю SYS и доступна всем пользователям. Она содержит один столбец с именем DUMMY и одну строку со значением X. Таблица DUAL полезна в случае, если требуется получить результат действия какой-либо однострочной функции, вызванной с аргументами, не связанными с данными БД.

Пример: Найти квадратный корень из 10.

SELECT SQRT(10)

FROM s_dept;

Результат:

SQRT(10)

---------

3,1622777

3,1622777

3,1622777

3,1622777

3,1622777

3,1622777

3,1622777

12 rows selected.

-- Мы получили 12 значений, так как в таблице s_dept 12 строк. Но так как -- вычисляемое значение никак не связано с данными таблицами, то все эти 12 -- значений одинаковы. Чтобы избежать подобных излишеств, и предназначена -- таблица DUAL:

SELECT SQRT(10)

FROM dual;

Результат:

SQRT(10)

---------

3,1622777

Пример использования ABS: Найти модуль чисел –13, 0 и 13.

SELECT ABS(-13), ABS(0), ABS(13) FROM dual;

Результат:

ABS(-13) ABS(0) ABS(13)

-------- -------- --------

13 0 13

Пример использования MOD: Найти остаток от деления 18763298 на 813.

SELECT MOD(18763298, 813) FROM dual;

Результат:

MOD(18763298,813)

-----------------

71

Пример использования ROUND: Округление числа 268,57 с различными значениями аргумента n.

SELECT ROUND(268.57, 5), ROUND(268.57, 1), ROUND(268.57), ROUND(268.57, -2), ROUND(268.57, -3) FROM dual;

Результат:

ROUND(268.57,5) ROUND(268.57,1) ROUND(268.57) ROUND(268.57,-2) ROUND(268.57,-3)

-------------- -------------- ------------ --------------- ---------------

268,57 268,6 269 300 0

Пример использования TRUNC: Усечение числа 268,57 с различными значениями аргумента n.

SELECT TRUNC(268.57, 5), TRUNC(268.57, 1), TRUNC(268.57), TRUNC(268.57, -2), TRUNC(268.57, -3) FROM dual;

Результат:

TRUNC(268.57,5) TRUNC(268.57,1) TRUNC(268.57) TRUNC(268.57,-2) TRUNC(268.57,-3)

--------------- --------------- ------------- ---------------- ----------------

268,57 268,5 268 200 0

Пример использования однострочной функции в предложении WHERE: Вывести фамилии и зарплаты служащих для всех служащих, у кого зарплата делится нацело на 100.

SELECT last_name, salary

FROM s_emp

WHERE MOD(salary,100)=0;

Результат:

LAST_NAME SALARY

---------------- ---------

Velasquez 2500

Nagayama 1400

Urguhart 1200

Biri 1100

Catchpole 1300

Magee 1400

Maduro 1400

Nozaki 1200

Chang 800

Schwartz 1100

10 rows selected.

Пример использования однострочной функции в предложении ORDER BY: Вывести фамилии и зарплаты служащих для всех служащих. Результат отсортировать по остатку от деления зарплаты на 100.

SELECT last_name, salary

FROM s_emp

ORDER BY MOD(salary,100);

Результат:

LAST_NAME SALARY

-------------- ---------

Velasquez 2500

Nagayama 1400

Biri 1100

Magee 1400

Maduro 1400

Chang 800

Schwartz 1100

Nozaki 1200

Catchpole 1300

Urguhart 1200

Havel 1307

Sedeghi 1515

Nguyen 1525

Smith 940

Ngao 1450

Menchu 1250

Quick-To-See 1450

Markarian 850

Newman 750

Dumas 1450

Ropeburn 1550

25 rows selected.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]