Функции MySQL: строковые, числовые, определяемые пользователем, сохраненные

Anonim

Какие есть функции?

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

Давайте кратко рассмотрим пример функции MySQL. По умолчанию MySQL сохраняет типы данных даты в формате «ГГГГ-ММ-ДД». Предположим, мы создали приложение, и наши пользователи хотят, чтобы дата возвращалась в формате «ДД-ММ-ГГГГ». Для этого мы можем использовать встроенную в MySQL функцию DATE_FORMAT. DATE_FORMAT - одна из наиболее часто используемых функций в MySQL. Мы рассмотрим это более подробно по мере развертывания урока.

Зачем использовать функции?

Основываясь на примере, приведенном во введении, люди с опытом компьютерного программирования могут подумать: «Зачем нужны функции MySQL? Такого же эффекта можно достичь с помощью языка сценариев / программирования?» Это правда, что мы можем добиться этого, написав некоторые процедуры / функции в прикладной программе.

Возвращаясь к нашему примеру DATE во введении, чтобы наши пользователи могли получить данные в желаемом формате, бизнес-уровень должен будет выполнить необходимую обработку.

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

Еще одна причина, по которой мы должны рассмотреть возможность использования функций MySQL, заключается в том, что они могут помочь уменьшить сетевой трафик в клиент-серверных приложениях . Бизнес-уровню нужно будет только вызывать сохраненные функции без необходимости манипулировать данными. В среднем использование функций может помочь значительно улучшить общую производительность системы.

Типы функций

Встроенные функции

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

  • Строковые функции - работают со строковыми типами данных
  • Числовые функции - работают с числовыми типами данных
  • Функции даты - работают с типами данных даты
  • Агрегатные функции - работают со всеми вышеперечисленными типами данных и создают обобщенные наборы результатов.
  • Другие функции - MySQL также поддерживает другие типы встроенных функций, но мы ограничим наш урок только вышеуказанными функциями.

Давайте теперь подробно рассмотрим каждую из упомянутых выше функций. Мы будем объяснять наиболее часто используемые функции с помощью нашей «Myflixdb».

Строковые функции

Мы уже рассмотрели, что делают строковые функции. Мы рассмотрим практический пример их использования. В нашей таблице фильмов названия фильмов хранятся с использованием комбинаций строчных и прописных букв. Предположим, мы хотим получить список запросов, который возвращает названия фильмов в верхнем регистре. Для этого мы можем использовать функцию «UCASE». Он принимает строку в качестве параметра и преобразует все буквы в верхний регистр. Скрипт, показанный ниже, демонстрирует использование функции «UCASE».

SELECT `movie_id`,`title`, UCASE(`title`) FROM `movies`;

ЗДЕСЬ

  • UCASE (`title`) - встроенная функция, которая принимает заголовок в качестве параметра и возвращает его в верхнем регистре с псевдонимом` upper_case_title`.

Выполнение вышеуказанного скрипта в рабочей среде MySQL против Myflixdb дает нам следующие результаты, показанные ниже.

 
movie_id title UCASE('title')
16 67% Guilty 67% GUILTY
6 Angels and Demons ANGELS AND DEMONS
4 Code Name Black CODE NAME BLACK
5 Daddy's Little Girls DADDY'S LITTLE GIRLS
7 Davinci Code DAVINCI CODE
2 Forgetting Sarah Marshal FORGETTING SARAH MARSHAL
9 Honey mooners HONEY MOONERS
19 movie 3 MOVIE 3
1 Pirates of the Caribean 4 PIRATES OF THE CARIBEAN 4
18 sample movie SAMPLE MOVIE
17 The Great Dictator THE GREAT DICTATOR
3 X-Men X-MEN

MySQL поддерживает ряд строковых функций. Полный список всех встроенных строковых функций см. По этой ссылке http://dev.mysql.com/doc/refman/5.0/en/string-functions.html на веб-сайте MySQL.

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

Как упоминалось ранее, эти функции работают с числовыми типами данных. Мы можем выполнять математические вычисления с числовыми данными в операторах SQL.

Аритематические операторы

MySQL поддерживает следующие арифматические операторы, которые можно использовать для выполнения вычислений в операторах SQL.

Имя

Описание

DIV

Целочисленное деление

/

Разделение

-

Вычитание

+

Добавление

*

Умножение

% или MOD

Модуль

Давайте теперь посмотрим на примеры каждого из указанных выше операторов.

Целочисленное деление (DIV)

SELECT 23 DIV 6 ;

Выполнение вышеуказанного скрипта дает нам следующие результаты.

3

Оператор деления (/)

Давайте теперь посмотрим на пример оператора деления. Мы изменим пример DIV.

SELECT 23 / 6 ;

Выполнение вышеуказанного скрипта дает нам следующие результаты.

3,8333

Оператор вычитания (-)

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

SELECT 23 - 6 ;

Выполнение приведенного выше сценария дает нам 17

Оператор сложения (+)

Давайте теперь посмотрим на пример оператора сложения. Мы модифицируем предыдущий пример.

SELECT 23 + 6 ;

Выполнение приведенного выше скрипта дает нам 29

Оператор умножения (*)

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

SELECT 23 * 6 AS `multiplication_result`;

Выполнение вышеуказанного скрипта дает нам следующие результаты.

multiplication_result

138

Оператор по модулю (-)

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

SELECT 23 % 6 ;

ИЛИ ЖЕ

SELECT 23 MOD 6 ;

Выполнение приведенного выше скрипта дает нам 5

Давайте теперь посмотрим на некоторые общие числовые функции в MySQL.

Этаж - эта функция удаляет десятичные разряды из числа и округляет его до ближайшего наименьшего числа. Скрипт, показанный ниже, демонстрирует его использование.

SELECT FLOOR(23 / 6) AS `floor_result`;

Выполнение вышеуказанного скрипта дает нам следующие результаты.

Floor_result

3

Round - эта функция округляет число с десятичными знаками до ближайшего целого числа. Скрипт, показанный ниже, демонстрирует его использование.

SELECT ROUND(23 / 6) AS `round_result`;

Выполнение вышеуказанного скрипта дает нам следующие результаты.

Round_result

4

Rand - эта функция используется для генерации случайного числа, его значение изменяется каждый раз при вызове функции. Скрипт, показанный ниже, демонстрирует его использование.

SELECT RAND() AS `random_result`;

Сохраненные функции

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

CREATE FUNCTION sf_name ([parameter(s)])RETURNS data typeDETERMINISTICSTATEMENTS

ЗДЕСЬ

  • «CREATE FUNCTION sf_name ([parameter (s)])» является обязательным и сообщает серверу MySQL создать функцию с именем `sf_name 'с необязательными параметрами, указанными в скобках.
  • «Тип данных RETURNS» является обязательным и указывает тип данных, который должна возвращать функция.
  • «ДЕТЕРМИНИСТИЧЕСКИЙ» означает, что функция будет возвращать те же значения, если ей переданы те же аргументы.
  • «ЗАЯВЛЕНИЯ» - это процедурный код, который выполняет функция.

Давайте теперь посмотрим на практический пример, который реализует встроенную функцию. Предположим, мы хотим знать, какие фильмы взяты напрокат, срок возврата которых истек. Мы можем создать сохраненную функцию, которая принимает дату возврата в качестве параметра, а затем сравнивает ее с текущей датой на сервере MySQL. Если текущая дата меньше даты возврата фильма, мы возвращаем «Нет», иначе мы возвращаем «Да». Показанный ниже сценарий помогает нам в этом.

DELIMITER |CREATE FUNCTION sf_past_movie_return_date (return_date DATE)RETURNS VARCHAR(3)DETERMINISTICBEGINDECLARE sf_value VARCHAR(3);IF curdate() > return_dateTHEN SET sf_value = 'Yes';ELSEIF curdate() <= return_dateTHEN SET sf_value = 'No';END IF;RETURN sf_value;END|

Выполнение вышеуказанного скрипта создает сохраненную функцию `sf_past_movie_return_date`.

Давайте теперь проверим нашу сохраненную функцию.

SELECT `movie_id`,`membership_number`,`return_date`,CURDATE() ,sf_past_movie_return_date(`return_date`) FROM `movierentals`;

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

 
movie_id membership_number return_date CURDATE() sf_past_movie_return_date('return_date')
1 1 NULL 04-08-2012 NULL
2 1 25-06-2012 04-08-2012 yes
2 3 25-06-2012 04-08-2012 yes
2 2 25-06-2012 04-08-2012 yes
3 3 NULL 04-08-2012 NULL

Пользовательские функции

MySQL также поддерживает определяемые пользователем функции, расширяющие MySQL. Пользовательские функции - это функции, которые вы можете создать с помощью таких языков программирования, как C, C ++ и т. Д., А затем добавить их на сервер MySQL. После добавления их можно использовать так же, как и любую другую функцию.

Резюме

  • Функции позволяют нам расширять возможности MySQL.
  • Функции всегда возвращают значение и могут дополнительно принимать параметры.
  • Встроенные функции - это функции, поставляемые с MySQL. Их можно разделить на категории в соответствии с типами данных, с которыми они работают, то есть строками, датами и числовыми встроенными функциями.
  • Сохраненные функции создаются пользователем на сервере MySQL и могут использоваться в операторах SQL.
  • Пользовательские функции создаются вне MySQL и могут быть включены в сервер MySQL.