Funkcije MySQL: niz, številska, uporabniško določena, shranjena

Anonim

Kaj so funkcije?

MySQL lahko naredi veliko več kot le shranjevanje in pridobivanje podatkov . Prav tako lahko izvajamo manipulacije s podatki, preden jih pridobimo ali shranimo. Tu nastopijo funkcije MySQL. Funkcije so preprosto deli kode, ki izvedejo nekatere operacije in nato vrnejo rezultat. Nekatere funkcije sprejemajo parametre, druge pa ne.

Oglejmo si na kratko primer funkcije MySQL. MySQL privzeto shrani tipe podatkov v obliki "LLLL-MM-DD". Recimo, da smo zgradili aplikacijo in da uporabniki želijo, da se datum vrne v obliki "DD-MM-LLLL", lahko za dosego tega uporabimo MySQL, vgrajeno v funkcijo DATE_FORMAT. DATE_FORMAT je ena najpogosteje uporabljenih funkcij v MySQL. Podrobneje si ga bomo ogledali, ko bomo razgrnili pouk.

Zakaj uporabljati funkcije?

Na podlagi primera, predstavljenega v uvodu, lahko ljudje z izkušnjami v računalniškem programiranju razmišljajo: "Zakaj bi motili funkcije MySQL? Enak učinek lahko dosežemo s skriptnim / programskim jezikom?" Res je, da lahko to dosežemo s pisanjem nekaterih postopkov / funkcij v aplikacijski program.

Če se vrnemo na naš primer DATE v uvodu, da bodo naši uporabniki dobili podatke v želeni obliki, bo poslovna plast morala opraviti potrebno obdelavo.

To postane problem, ko se mora aplikacija integrirati z drugimi sistemi. Ko uporabljamo funkcije MySQL, kot je DATE_FORMAT, lahko to funkcijo vgradimo v bazo podatkov in jo vsaka aplikacija, ki potrebuje podatke, dobi v zahtevani obliki. To zmanjšuje ponovno delo v poslovni logiki in zmanjšuje neskladnosti podatkov.

Drugi razlog, zakaj bi morali razmisliti o uporabi funkcij MySQL, je dejstvo, da lahko pomaga zmanjšati omrežni promet v odjemalskih / strežniških aplikacijah . Business Layer bo moral le klicati shranjene funkcije, ne da bi morali manipulirati s podatki. V povprečju lahko uporaba funkcij močno izboljša splošno delovanje sistema.

Vrste funkcij

Vgrajene funkcije

MySQL je priložen številnim vgrajenim funkcijam. Vgrajene funkcije so preprosto funkcije, ki so že implementirane v strežnik MySQL. Te funkcije nam omogočajo izvajanje različnih vrst manipulacij s podatki. Vgrajene funkcije lahko v osnovi razvrstimo v naslednje najpogosteje uporabljene kategorije.

  • Funkcije nizov - delujejo na podatkovnih vrstah nizov
  • Numerične funkcije - delujejo s številskimi podatkovnimi vrstami
  • Datumske funkcije - delujejo na podatkovnih vrstah datumov
  • Združene funkcije - delujejo na vseh zgornjih vrstah podatkov in ustvarjajo strnjene nabore rezultatov.
  • Druge funkcije - MySQL podpira tudi druge vrste vgrajenih funkcij, vendar bomo svojo lekcijo omejili samo na zgoraj imenovane funkcije.

Poglejmo zdaj vsako od zgoraj omenjenih funkcij podrobno. Pojasnili bomo najpogosteje uporabljene funkcije z uporabo našega "Myflixdb".

String funkcije

Že smo pogledali, kaj naredijo funkcije nizov. Ogledali si bomo praktični primer, ki jih uporablja. V naši tabeli filmov so naslovi filmov shranjeni s kombinacijami malih in velikih črk. Recimo, da želimo dobiti seznam poizvedb, ki naslove filmov vrne z velikimi črkami. Za to lahko uporabimo funkcijo "UCASE". Kot parameter vzame niz in pretvori vse črke v velike črke. Spodnji skript prikazuje uporabo funkcije "UCASE".

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

TUKAJ

  • UCASE ("naslov") je vgrajena funkcija, ki naslov vzame kot parameter in ga vrne z velikimi črkami z imenom vzdevek "upper_case_title".

Izvedba zgornjega skripta v delovnem okolju MySQL v primerjavi z Myflixdb nam da naslednje rezultate, prikazane spodaj.

 
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 podpira številne nizovne funkcije. Za celoten seznam vseh vgrajenih funkcij nizov glejte to povezavo http://dev.mysql.com/doc/refman/5.0/en/string-functions.html na spletnem mestu MySQL.

Številske funkcije

Kot smo že omenili, te funkcije delujejo na numeričnih tipih podatkov. V stavkih SQL lahko izvajamo matematične izračune numeričnih podatkov.

Aritemski operaterji

MySQL podpira naslednje aritmatične operatorje, ki jih je mogoče uporabiti za izračune v stavkih SQL.

Ime

Opis

DIV

Celotna delitev

/

Divizija

-

Odštevanje

+

Dodatek

*

Množenje

% ali MOD

Modul

Oglejmo si zdaj primere vsakega od zgornjih operaterjev

Integer Division (DIV)

SELECT 23 DIV 6 ;

Izvedba zgornjega skripta nam da naslednje rezultate.

3.

Operater oddelka (/)

Poglejmo si zdaj primer operatorja delitve. Spremenili bomo primer DIV.

SELECT 23 / 6 ;

Izvedba zgornjega skripta nam da naslednje rezultate.

3,8333

Operator odštevanja (-)

Poglejmo si zdaj primer operatorja odštevanja. Uporabili bomo enake vrednosti kot v prejšnjih dveh primerih

SELECT 23 - 6 ;

Z izvajanjem zgornjega skripta dobimo 17

Operater seštevanja (+)

Oglejmo si zdaj primer operatorja dodajanja. Spremenili bomo prejšnji primer.

SELECT 23 + 6 ;

Izvedba zgornjega skripta nam da 29

Operator množenja (*)

Poglejmo zdaj primer operatorja množenja. Uporabili bomo enake vrednosti kot v prejšnjih primerih.

SELECT 23 * 6 AS `multiplication_result`;

Izvedba zgornjega skripta nam da naslednje rezultate.

rezultat_množenja

138

Modulo operator (-)

Operator modula deli N z M in nam daje preostanek. Poglejmo zdaj primer modulo operaterja. Uporabili bomo enake vrednosti kot v prejšnjih primerih.

SELECT 23 % 6 ;

ALI

SELECT 23 MOD 6 ;

Izvedba zgornjega skripta nam da 5

Poglejmo si zdaj nekatere pogoste številske funkcije v MySQL.

Tla - ta funkcija odstrani decimalna mesta s številke in jo zaokroži na najbližjo najnižjo številko. Spodnji scenarij prikazuje njegovo uporabo.

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

Izvedba zgornjega skripta nam da naslednje rezultate.

Rezultat_ nadstropja

3.

Round - ta funkcija zaokroži število z decimalnimi mesti na najbližje celo število. Spodnji scenarij prikazuje njegovo uporabo.

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

Izvedba zgornjega skripta nam da naslednje rezultate.

Round_result

4.

Rand - ta funkcija se uporablja za generiranje naključnega števila, njena vrednost se spremeni vsakič, ko pokličete funkcijo. Spodnji scenarij prikazuje njegovo uporabo.

SELECT RAND() AS `random_result`;

Shranjene funkcije

Shranjene funkcije so tako kot vgrajene funkcije, le da morate shranjeno funkcijo določiti sami. Ko je shranjena funkcija ustvarjena, jo lahko uporabljamo v stavkih SQL tako kot katero koli drugo funkcijo. Osnovna sintaksa za ustvarjanje shranjene funkcije je prikazana spodaj

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

TUKAJ

  • "Ustvari funkcijo sf_name ([parameter (s)])" " je obvezen in strežniku MySQL pove, naj ustvari funkcijo z imenom" sf_name "z neobveznimi parametri, definiranimi v oklepaju.
  • "RETURNS podatkovni tip" je obvezen in določa podatkovni tip, ki ga mora funkcija vrniti.
  • "DETERMINISTIC" pomeni, da bo funkcija vrnila enake vrednosti, če ji bodo dostavljeni enaki argumenti.
  • "IZJAVE" je procesna koda, ki jo funkcija izvaja.

Oglejmo si zdaj praktični primer, ki izvaja vgrajeno funkcijo. Recimo, da želimo vedeti, kateri izposojeni filmi so po datumu vrnitve. Ustvarimo lahko shranjeno funkcijo, ki kot parameter sprejme datum vrnitve in ga nato primerja s trenutnim datumom v strežniku MySQL. Če je trenutni datum manjši od datuma povratnega filma, vrnemo "Ne", sicer vrnemo "Da". Spodnji scenarij nam pomaga, da to dosežemo.

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|

Z izvajanjem zgornjega skripta je bila ustvarjena shranjena funkcija `sf_past_movie_return_date`.

Preizkusimo zdaj svojo shranjeno funkcijo.

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

Izvedba zgornjega skripta v delovnem okolju MySQL proti myflixdb nam da naslednje rezultate.

 
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

Uporabniško določene funkcije

MySQL podpira tudi uporabniško določene funkcije, ki razširjajo MySQL. Uporabniško določene funkcije so funkcije, ki jih lahko ustvarite s programskim jezikom, kot so C, C ++ itd., In jih nato dodate v strežnik MySQL. Ko jih dodate, jih lahko uporabljate tako kot katero koli drugo funkcijo.

Povzetek

  • Funkcije nam omogočajo izboljšanje zmogljivosti MySQL.
  • Funkcije vedno vrnejo vrednost in lahko poljubno sprejmejo parametre.
  • Vgrajene funkcije so funkcije, ki so dobavljene z MySQL. Lahko jih razvrstimo glede na vrste podatkov, na katerih delujejo, tj. Nize, datum in številske funkcije.
  • Shranjene funkcije ustvari uporabnik v strežniku MySQL in jih lahko uporabi v stavkih SQL.
  • Uporabniško določene funkcije so ustvarjene zunaj MySQL in jih je mogoče vključiti v strežnik MySQL.