MySQL-i funktsioonid: string, numbriline, kasutaja määratud, salvestatud

Anonim

Mis on funktsioonid?

MySQL suudab palju enamat kui lihtsalt andmete salvestamine ja hankimine . Enne andmete hankimist või salvestamist saame andmetega ka manipuleerida . Seal tulevad sisse MySQL-funktsioonid. Funktsioonid on lihtsalt kooditükid, mis täidavad mõningaid toiminguid ja tagastavad seejärel tulemuse. Mõni funktsioon aktsepteerib parameetreid, samas kui teised funktsioonid ei aktsepteeri parameetreid.

Vaatame lühidalt MySQL-i funktsiooni näidet. Vaikimisi salvestab MySQL kuupäeva andmetüübid vormingus "AAAA-KK-PP". Oletame, et oleme loonud rakenduse ja meie kasutajad soovivad, et kuupäev tagastataks vormingus "PP-KK-AAAA". Selle saavutamiseks võime kasutada MySQL-i sisseehitatud funktsiooni DATE_FORMAT. DATE_FORMAT on MySQL-is üks enimkasutatavaid funktsioone. Õppetunni avamisel vaatleme seda üksikasjalikumalt.

Miks kasutada funktsioone?

Sissejuhatuses toodud näite põhjal võivad arvutiprogrammeerimise kogemusega inimesed mõelda: "Miks peaksite MySQL-i funktsioone häirima? Sama efekti saab saavutada skriptimise / programmeerimiskeelega?" Tõsi, me saame selle saavutada, kirjutades mõned protseduurid / funktsioonid rakendusprogrammi.

Naastes sissejuhatuse DATE näite juurde, et meie kasutajad saaksid andmed soovitud vormingus, peab ärikiht tegema vajaliku töötlemise.

Sellest saab probleem, kui rakendus peab integreeruma teiste süsteemidega. Kui kasutame MySQL-i funktsioone, näiteks DATE_FORMAT, siis võime selle funktsionaalsuse andmebaasi varjata ja kõik andmeid vajavad rakendused saavad need vajalikus vormingus. See vähendab äriloogika ümbertöötamist ja andmete vasturääkivusi.

Teine põhjus, miks peaksime kaaluma MySQL-i funktsioonide kasutamist, on asjaolu, et see aitab vähendada võrguliiklust kliendi / serveri rakendustes . Ärikihil tuleb helistada ainult salvestatud funktsioonidele, ilma et oleks vaja andmetega manipuleerida. Keskmiselt võib funktsioonide kasutamine süsteemi üldist jõudlust oluliselt parandada.

Funktsioonide tüübid

Sisseehitatud funktsioonid

MySQL on komplektis paljude sisseehitatud funktsioonidega. Sisseehitatud funktsioonid on lihtsalt funktsioonid, mis on juba MySQL-i serveris rakendatud. Need funktsioonid võimaldavad meil teha andmetega erinevat tüüpi manipuleerimisi. Sisseehitatud funktsioone saab põhimõtteliselt liigitada järgmistesse kõige sagedamini kasutatavatesse kategooriatesse.

  • Stringfunktsioonid - töötavad stringi andmetüüpidel
  • Numbrilised funktsioonid - toimivad arvandmetüüpidel
  • Kuupäeva funktsioonid - töötavad kuupäeva andmetüüpidel
  • Koondfunktsioonid - opereerivad kõiki ülaltoodud andmetüüpe ja toovad kokku kokkuvõtlikud tulemuste komplektid.
  • Muud funktsioonid - MySQL toetab ka muud tüüpi sisseehitatud funktsioone, kuid piirdume oma õppetükis ainult ülalnimetatud funktsioonidega.

Vaatame nüüd kõiki eespool nimetatud funktsioone üksikasjalikult. Selgitame enimkasutatavaid funktsioone meie "Myflixdb" abil.

Stringi funktsioonid

Vaatasime juba, mida teevad stringifunktsioonid. Vaatame praktilist näidet, mis neid kasutab. Meie filmitabelis on filmide pealkirjad salvestatud väikeste ja väikeste tähtede kombinatsioonidega. Oletame, et soovime saada päringute loendi, mis tagastab filmi pealkirjad suurtähtedega. Selleks saame kasutada funktsiooni "UCASE". See võtab parameetrina stringi ja teisendab kõik tähed suurtähtedeks. Allpool toodud skript demonstreerib funktsiooni "UCASE" kasutamist.

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

SIIN

  • UCASE ("pealkiri") on sisseehitatud funktsioon, mis võtab pealkirja parameetriks ja tagastab selle suurtähtedega varjunimega "upper_case_title".

Ülaltoodud skripti käivitamine MySQL-i töölaual Myflixdb-ga annab meile järgmised tulemused.

 
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 toetab mitmeid stringifunktsioone. Kõigi sisseehitatud stringifunktsioonide täieliku loendi leiate MySQL-i veebisaidilt sellel lingil http://dev.mysql.com/doc/refman/5.0/en/string-functions.html.

Numbrilised funktsioonid

Nagu varem mainitud, toimivad need funktsioonid arvandmetüüpidel. Saame teha matemaatilisi arvutusi SQL-lausete arvandmetele.

Aritemaatilised operaatorid

MySQL toetab järgmisi aritmaatilisi operaatoreid, mida saab kasutada SQL-lausete arvutuste tegemiseks.

Nimi

Kirjeldus

DIV

Täisarvude jagunemine

/

Jaotus

-

Lahutamine

+

Lisamine

*

Korrutamine

% või MOD

Modulus

Vaatame nüüd ülaltoodud operaatori näiteid

Tervikdivisjon (DIV)

SELECT 23 DIV 6 ;

Ülaltoodud skripti käivitamine annab meile järgmised tulemused.

3

Jaoskonna operaator (/)

Vaatame nüüd jagamise operaatori näidet. Muudame DIV-i näidet.

SELECT 23 / 6 ;

Ülaltoodud skripti käivitamine annab meile järgmised tulemused.

3.8333

Lahutamise operaator (-)

Vaatame nüüd lahutamisoperaatori näidet. Kasutame samu väärtusi nagu kahes eelmises näites

SELECT 23 - 6 ;

Ülaltoodud skripti täitmine annab meile 17

Lisaoperaator (+)

Vaatame nüüd liitmisoperaatori näidet. Muudame eelmist näidet.

SELECT 23 + 6 ;

Ülaltoodud skripti täitmine annab meile 29

Korrutamise operaator (*)

Vaatame nüüd korrutamisoperaatori näidet. Kasutame samu väärtusi nagu eelmistes näidetes.

SELECT 23 * 6 AS `multiplication_result`;

Ülaltoodud skripti käivitamine annab meile järgmised tulemused.

korrutamise_tulemus

138

Modulo operaator (-)

Moduloperaator jagab N M-ga ja annab meile ülejäänud osa. Vaatame nüüd mooduloperaatori näidet. Kasutame samu väärtusi nagu eelmistes näidetes.

SELECT 23 % 6 ;

VÕI

SELECT 23 MOD 6 ;

Ülaltoodud skripti käivitamine annab meile 5

Vaatame nüüd mõnda MySQL-i tavalisemat arvfunktsiooni.

Põrand - see funktsioon eemaldab arvult kümnendkohad ja ümardab selle lähima madalaima arvuni. Allpool näidatud skript näitab selle kasutamist.

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

Ülaltoodud skripti käivitamine annab meile järgmised tulemused.

Põranda_tulemus

3

Ümmargune - see funktsioon ümardab arvu kümnendkohtadega täisarvuni. Allpool näidatud skript näitab selle kasutamist.

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

Ülaltoodud skripti käivitamine annab meile järgmised tulemused.

Ümmargune tulemus

4

Rand - seda funktsiooni kasutatakse juhusliku arvu genereerimiseks, selle väärtus muutub iga kord, kui funktsiooni kutsutakse. Allpool näidatud skript näitab selle kasutamist.

SELECT RAND() AS `random_result`;

Salvestatud funktsioonid

Salvestatud funktsioonid on täpselt nagu sisseehitatud funktsioonid, välja arvatud see, et peate ise määratlema salvestatud funktsiooni. Kui salvestatud funktsioon on loodud, saab seda SQL-lausetes kasutada nagu iga teist funktsiooni. Salvestatud funktsiooni loomise põhisüntaks on näidatud allpool

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

SIIN

  • "LOO FUNKTSIOON sf_name ([parameeter (id)])) on kohustuslik ja käsib MySQL-serveril luua sulgudes määratletud valikuliste parameetritega funktsioon nimega" sf_name ".
  • „RETURNS data type” on kohustuslik ja määrab andmetüübi, mille funktsioon peaks tagastama.
  • "DETERMINISTIC" tähendab, et funktsioon tagastab samad väärtused, kui sellele esitatakse samad argumendid.
  • "STATEMENTS" on protseduuriline kood, mille funktsioon täidab.

Vaatame nüüd praktilist näidet, mis rakendab sisseehitatud funktsiooni. Oletame, et tahame teada, millised laenutatud filmid on tagasi jõudnud. Saame luua salvestatud funktsiooni, mis aktsepteerib parameetrina tagastamise kuupäeva ja võrdleb seda siis MySQL-i serveri praeguse kuupäevaga. Kui praegune kuupäev on väiksem kui filmi naasmise kuupäev, siis tagastame "Ei", muidu tagastame "Jah". Allpool toodud skript aitab meil seda saavutada.

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|

Ülaltoodud skripti käivitamine lõi salvestatud funktsiooni "sf_past_movie_return_date".

Proovime nüüd oma salvestatud funktsiooni.

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

Ülaltoodud skripti käivitamine MySQL-i töölaual myflixdb-ga annab meile järgmised tulemused.

 
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

Kasutaja määratletud funktsioonid

MySQL toetab ka kasutaja määratletud funktsioone, mis laiendavad MySQL-i. Kasutaja määratud funktsioonid on funktsioonid, mille saate luua programmeerimiskeelt kasutades, näiteks C, C ++ jne, ja seejärel lisada need MySQL-i serverisse. Pärast lisamist saab neid kasutada nagu kõiki muid funktsioone.

Kokkuvõte

  • Funktsioonid võimaldavad meil MySQL-i võimalusi täiustada.
  • Funktsioonid tagastavad alati väärtuse ja võivad valikuliselt parameetreid aktsepteerida.
  • Sisseehitatud funktsioonid on funktsioonid, mis tarnitakse MySQL-iga. Neid saab kategoriseerida andmetüüpide järgi, mida nad töötavad, st stringide, kuupäeva ja sisseehitatud numbriliste funktsioonide järgi.
  • Salvestatud funktsioonid loob kasutaja MySQL-i serveris ja neid saab kasutada SQL-lausetes.
  • Kasutaja määratud funktsioonid luuakse väljaspool MySQL-i ja neid saab lisada MySQL-i serverisse.