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.