Функції MySQL: рядковий, числовий, визначений користувачем, збережений

Anonim

Що таке функції?

MySQL може робити набагато більше, ніж просто зберігати та отримувати дані . Ми також можемо виконувати маніпуляції з даними перед тим, як отримати або зберегти їх. Тут і з’являються функції MySQL. Функції - це просто фрагменти коду, які виконують деякі операції, а потім повертають результат. Деякі функції приймають параметри, тоді як інші функції не приймають параметрів.

Давайте коротко розглянемо приклад функції MySQL. За замовчуванням MySQL зберігає типи даних дати у форматі "РРРР-ММ-ДД". Припустимо, що ми створили додаток, і наші користувачі хочуть повернення дати у форматі "DD-MM-YYYY", ми можемо використовувати 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`;

Виконання вищезазначеного сценарію дає нам такі результати.

множення_результат

138

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

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

SELECT 23 % 6 ;

АБО

SELECT 23 MOD 6 ;

Виконання вищезазначеного сценарію дає нам 5

Давайте тепер розглянемо деякі загальні числові функції в MySQL.

Пол - ця функція видаляє десяткові місця з числа та округлює його до найближчого найнижчого числа. Наведений нижче сценарій демонструє його використання.

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

Виконання вищезазначеного сценарію дає нам такі результати.

Результат_поверху

3

Round - ця функція округлює число з десятковою комою до найближчого цілого числа. Наведений нижче сценарій демонструє його використання.

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

Виконання вищезазначеного сценарію дає нам такі результати.

Круглий_результат

4

Rand - ця функція використовується для генерації випадкового числа, її значення змінюється кожного разу, коли функція викликається. Наведений нижче сценарій демонструє його використання.

SELECT RAND() AS `random_result`;

Збережені функції

Збережені функції подібно до вбудованих, за винятком того, що вам потрібно визначити збережену функцію самостійно. Після створення збереженої функції її можна використовувати в операторах SQL, як і будь-яку іншу функцію. Основний синтаксис для створення збереженої функції наведений нижче

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

ТУТ

  • "СТВОРИТИ ФУНКЦІЮ sf_name ([параметр (и)])" є обов'язковим і повідомляє серверу MySQL створити функцію з ім'ям `sf_name 'з необов'язковими параметрами, визначеними в дужках.
  • "Тип повернення даних" є обов'язковим і визначає тип даних, який функція повинна повертати.
  • "ДЕТЕРМІНІСТИЧНИЙ" означає, що функція поверне однакові значення, якщо до неї подано однакові аргументи.
  • "ЗАЯВИ" - це процедурний код, який виконує функція.

Давайте зараз розглянемо практичний приклад, який реалізує вбудовану функцію. Припустимо, ми хочемо знати, які фільми в прокаті минули від дати повернення. Ми можемо створити збережену функцію, яка приймає дату повернення як параметр, а потім порівнює її з поточною датою на сервері 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.