МиСКЛ функције: низ, нумерички, кориснички дефинисан, ускладиштен

Anonim

Шта су функције?

МиСКЛ може учинити много више од пуког чувања и преузимања података . Такође можемо извршити манипулације подацима пре него што их преузмемо или сачувамо. Ту долазе МиСКЛ функције. Функције су једноставно делови кода који извршавају неке операције, а затим враћају резултат. Неке функције прихватају параметре, док друге функције не прихваћају параметре.

Погледајмо укратко пример МиСКЛ функције. МиСКЛ подразумевано чува типове података датума у ​​формату „ГГГГ-ММ-ДД“. Претпоставимо да смо направили апликацију и да наши корисници желе да се датум врати у формату „ДД-ММ-ГГГГ“, можемо да користимо МиСКЛ уграђену у функцију ДАТЕ_ФОРМАТ да бисмо то постигли. ДАТЕ_ФОРМАТ је једна од најчешће коришћених функција у МиСКЛ-у. Размотрићемо то детаљније током излагања лекције.

Зашто користити функције?

На основу примера наведеног у уводу, људи са искуством у рачунарском програмирању можда размишљају: "Зашто сметати МиСКЛ функцијама? Исти ефекат се може постићи и са скриптним / програмским језиком?" Тачно је да то можемо постићи уписом неких процедура / функција у апликативни програм.

Враћајући се на наш пример ДАТУМА у уводу, да би наши корисници добили податке у жељеном формату, пословни слој ће морати да обави неопходну обраду.

Ово постаје проблем када апликација мора да се интегрише са другим системима. Када користимо МиСКЛ функције као што је ДАТЕ_ФОРМАТ, тада можемо имати ту функцију уграђену у базу података и свака апликација којој су потребни подаци добија је у потребном формату. Ово смањује поновни рад у пословној логици и смањује недоследности података.

Још један разлог зашто бисмо требали размотрити коришћење МиСКЛ функција је чињеница да то може помоћи у смањењу мрежног промета у клијент / сервер апликацијама . Пословни ниво требаће само да упути позив ускладиштеним функцијама без потребе за манипулисањем подацима. У просеку, употреба функција може знатно да побољша укупне перформансе система.

Врсте функција

Уграђене функције

МиСКЛ долази у пакету са низом уграђених функција. Уграђене функције су једноставно функције које су већ примењене на МиСКЛ серверу. Ове функције омогућавају нам извршавање различитих врста манипулација подацима. Уграђене функције се у основи могу сврстати у следеће најчешће коришћене категорије.

  • Функције низова - раде на типовима података низа
  • Нумеричке функције - делују на нумеричким типовима података
  • Функције датума - делују на типовима података датума
  • Агрегатне функције - раде на свим горе наведеним типовима података и дају резимиране скупове резултата.
  • Остале функције - МиСКЛ такође подржава друге врсте уграђених функција, али ми ћемо ограничити нашу лекцију само на горе наведене функције.

Погледајмо сада сваку од горе поменутих функција у детаље. Објаснићемо најчешће коришћене функције користећи наш „Мифликдб“.

Стринг функције

Већ смо погледали шта функције низа раде. Размотрићемо практични пример који их користи. У нашој табели филмова наслови филмова се чувају помоћу комбинација малих и великих слова. Претпоставимо да желимо да добијемо листу упита која наслове филмова приказује великим словима. За то можемо користити функцију „УЦАСЕ“. Као параметар узима низ и претвара сва слова у велика слова. Скрипта приказана у наставку приказује употребу функције „УЦАСЕ“.

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

ОВДЕ

  • УЦАСЕ (`титле`) је уграђена функција која узима наслов као параметар и враћа га великим словима са псеудонимом" уппер_цасе_титле ".

Извршавање горње скрипте у МиСКЛ радном окружењу против Мифликдб даје нам следеће резултате приказане у наставку.

 
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

МиСКЛ подржава бројне функције низа. За потпуну листу свих уграђених функција стринга, упутите се на овај линк хттп://дев.мискл.цом/доц/рефман/5.0/ен/стринг-фунцтионс.хтмл на МиСКЛ веб локацији.

Нумеричке функције

Као што је раније поменуто, ове функције раде на нумеричким типовима података. Можемо изводити математичка израчунавања нумеричких података у СКЛ изразима.

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

МиСКЛ подржава следеће аритматичке операторе који се могу користити за извршавање израчунавања у СКЛ изразима.

Име

Опис

ДИВ

Целобројна подела

/

Дивизија

-

Одузимање

+

Сабирање

*

Множење

% или МОД

Модул

Погледајмо сада примере сваког од горе наведених оператора

Целобројна дивизија (ДИВ)

SELECT 23 DIV 6 ;

Извршавање горње скрипте даје нам следеће резултате.

3

Дивизион оператер (/)

Погледајмо сада пример оператора дељења. Изменићемо пример ДИВ-а.

SELECT 23 / 6 ;

Извршавање горње скрипте даје нам следеће резултате.

3.8333

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

Погледајмо сада пример оператора одузимања. Користићемо исте вредности као у претходна два примера

SELECT 23 - 6 ;

Извршавање горње скрипте даје нам 17

Оператор сабирања (+)

Погледајмо сада пример оператора сабирања. Изменићемо претходни пример.

SELECT 23 + 6 ;

Извршавање горње скрипте даје нам 29

Оператор множења (*)

Погледајмо сада пример оператора множења. Користићемо исте вредности као у претходним примерима.

SELECT 23 * 6 AS `multiplication_result`;

Извршавање горње скрипте даје нам следеће резултате.

мултиплицатион_ресулт

138

Модуло оператор (-)

Оператор модула дели Н са М и даје нам остатак. Погледајмо сада пример оператора модуло. Користићемо исте вредности као у претходним примерима.

SELECT 23 % 6 ;

ИЛИ

SELECT 23 MOD 6 ;

Извршавање горње скрипте даје нам 5

Погледајмо сада неке уобичајене нумеричке функције у МиСКЛ-у.

Под - ова функција уклања децимална места са броја и заокружује га на најближи најмањи број. Скрипта приказана доле показује употребу.

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

Извршавање горње скрипте даје нам следеће резултате.

Резултат пода

3

Округло - ова функција заокружује број са децималним мјестима на најближи цијели број. Скрипта приказана доле показује употребу.

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

Извршавање горње скрипте даје нам следеће резултате.

Роунд_ресулт

4

Ранд - ова функција се користи за генерисање случајног броја, чија се вредност мења сваки пут када се функција позове. Скрипта приказана доле показује употребу.

SELECT RAND() AS `random_result`;

Похрањене функције

Похрањене функције су попут уграђених функција, осим што морате сами дефинисати ускладиштену функцију. Једном када је сачувана функција креирана, она се може користити у СКЛ изразима као и свака друга функција. Основна синтакса за креирање меморисане функције је приказана доле

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

ОВДЕ

  • „СТВОРИ ФУНКЦИЈУ сф_наме ([параметар (и)])“ је обавезан и говори МиСКЛ серверу да креира функцију која се зове `сф_наме 'са опционим параметрима дефинисаним у загради.
  • „ВРАТИ тип података“ је обавезан и одређује тип података који би функција требало да врати.
  • „ДЕТЕРМИНИСТИЧКО“ значи да ће функција вратити исте вредности ако су јој достављени исти аргументи.
  • „ИЗЈАВЕ“ су процедурални код који функција извршава.

Погледајмо сада практични пример који имплементира уграђену функцију. Претпоставимо да желимо да знамо који су изнајмљени филмови прошли датум повратка. Можемо створити ускладиштену функцију која прихвата датум враћања као параметар, а затим га упоређује са тренутним датумом на МиСКЛ серверу. Ако је тренутни датум мањи од датума повратка филма, вратит ћемо „Не“, у супротном ћемо вратити „Да“. Скрипта приказана доле помаже нам да то постигнемо.

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|

Извршењем горе наведене скрипте креирана је меморисана функција `сф_паст_мовие_ретурн_дате`.

Хајде сада да тестирамо нашу сачувану функцију.

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

Извршавање горње скрипте у МиСКЛ радном окружењу против мифликдб даје нам следеће резултате.

 
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

Кориснички дефинисане функције

МиСКЛ такође подржава кориснички дефинисане функције које проширују МиСКЛ. Кориснички дефинисане функције су функције које можете креирати помоћу програмског језика као што су Ц, Ц ++ итд., А затим их додати на МиСКЛ сервер. Једном додани, могу се користити као и било која друга функција.

Резиме

  • Функције нам омогућавају да побољшамо могућности МиСКЛ-а.
  • Функције увек враћају вредност и могу опционално да прихвате параметре.
  • Уграђене функције су функције које се испоручују са МиСКЛ-ом. Могу се категорисати према типовима података на којима раде, тј. Низовима, датуму и нумеричким уграђеним функцијама.
  • Похрањене функције креира корисник на МиСКЛ серверу и могу се користити у СКЛ изразима.
  • Кориснички дефинисане функције креирају се изван МиСКЛ-а и могу се интегрисати у МиСКЛ сервер.