Kas ir funkcijas?
MySQL var paveikt daudz vairāk nekā tikai datu glabāšanu un izgūšanu . Mēs varam arī veikt manipulācijas ar datiem pirms to iegūšanas vai saglabāšanas. Tur parādās MySQL funkcijas. Funkcijas ir vienkārši koda daļas, kas veic dažas darbības un pēc tam atgriež rezultātu. Dažas funkcijas pieņem parametrus, bet citas - parametrus.
Īsumā apskatīsim MySQL funkcijas piemēru. Pēc noklusējuma MySQL datumu datu tipus saglabā formātā "GGGG-MM-DD". Pieņemsim, ka esam izveidojuši lietojumprogrammu un mūsu lietotāji vēlas, lai datums tiktu atgriezts formātā "DD-MM-GGGG". Lai to panāktu, mēs varam izmantot MySQL iebūvēto funkciju DATE_FORMAT. DATE_FORMAT ir viena no visbiežāk izmantotajām funkcijām MySQL. Atklājot mācību stundu, mēs to aplūkosim sīkāk.
Kāpēc izmantot funkcijas?
Pamatojoties uz ievadā sniegto piemēru, cilvēki ar pieredzi datorprogrammēšanā var domāt: "Kāpēc jāuztraucas par MySQL funkcijām? To pašu efektu var panākt ar skriptu / programmēšanas valodu?" Mēs varam to panākt, lietojumprogrammā ierakstot dažas procedūras / funkcijas.
Atgriežoties pie mūsu DATE piemēra ievadā, lai mūsu lietotāji iegūtu datus vēlamajā formātā, biznesa slānim būs jāveic nepieciešamā apstrāde.
Tas kļūst par problēmu, kad lietojumprogrammai ir jāintegrējas ar citām sistēmām. Kad mēs izmantojam tādas MySQL funkcijas kā DATE_FORMAT, šī funkcija var tikt iegulta datu bāzē, un jebkura lietojumprogramma, kurai nepieciešami dati, iegūst to vajadzīgajā formātā. Tas samazina atkārtotu darbu uzņēmējdarbības loģikā un samazina datu neatbilstības.
Vēl viens iemesls, kāpēc mums vajadzētu apsvērt MySQL funkciju izmantošanu, ir fakts, ka tas var palīdzēt samazināt tīkla trafiku klienta / servera lietojumprogrammās . Biznesa slānim būs nepieciešams piezvanīt tikai uz saglabātajām funkcijām, bez nepieciešamības manipulēt ar datiem. Vidēji funkciju izmantošana var ievērojami uzlabot sistēmas vispārējo veiktspēju.
Funkciju veidi
Iebūvētās funkcijas
MySQL komplektā ietilpst vairākas iebūvētas funkcijas. Iebūvētās funkcijas ir vienkārši funkcijas, kas jau ir ieviestas MySQL serverī. Šīs funkcijas ļauj mums veikt dažāda veida manipulācijas ar datiem. Iebūvētās funkcijas var galvenokārt iedalīt šādās visbiežāk lietotajās kategorijās.
- Stīgu funkcijas - darbojas ar virkņu datu tipiem
- Skaitliskās funkcijas - darbojas ar ciparu datu tipiem
- Datuma funkcijas - darbojas pēc datuma datu tipiem
- Apkopotās funkcijas - darbojas ar visiem iepriekš minētajiem datu tipiem un veido apkopotas rezultātu kopas.
- Citas funkcijas - MySQL atbalsta arī cita veida iebūvētas funkcijas, taču mēs aprobežosimies tikai ar iepriekš minētajām funkcijām.
Tagad detalizēti apskatīsim katru no iepriekš minētajām funkcijām. Mēs izskaidrosim visbiežāk izmantotās funkcijas, izmantojot mūsu "Myflixdb".
Stīgu funkcijas
Mēs jau apskatījām, kādas ir virknes funkcijas. Mēs aplūkosim praktisku piemēru, kurā tie tiek izmantoti. Mūsu filmu tabulā filmu nosaukumi tiek glabāti, izmantojot mazo un lielo burtu kombinācijas. Pieņemsim, ka mēs vēlamies iegūt vaicājumu sarakstu, kas filmu nosaukumus atgriež ar lielajiem burtiem. Lai to izdarītu, mēs varam izmantot funkciju "UCASE". Tas ņem virkni kā parametru un pārvērš visus burtus lielajiem burtiem. Zemāk parādītais skripts parāda funkcijas "UCASE" izmantošanu.
SELECT `movie_id`,`title`, UCASE(`title`) FROM `movies`;
ŠEIT
- UCASE (`title`) ir iebūvēta funkcija, kas virsrakstu uztver kā parametru un atgriež to ar lieliem burtiem ar aizstājvārdu` upper_case_title`.
Iepriekš minētā skripta izpildīšana MySQL darbagaldā pret Myflixdb dod mums šādus rezultātus, kas parādīti zemāk.
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 atbalsta virkni virkņu funkciju. Lai iegūtu pilnu visu iebūvēto virkņu funkciju sarakstu, skatiet šo saiti http://dev.mysql.com/doc/refman/5.0/en/string-functions.html MySQL vietnē.
Skaitliskās funkcijas
Kā jau minēts iepriekš, šīs funkcijas darbojas ar skaitliskiem datu tipiem. Mēs varam veikt matemātiskus aprēķinus skaitliskajiem datiem SQL priekšrakstos.
Aritemātiskie operatori
MySQL atbalsta šādus aritmātiskos operatorus, kurus var izmantot, lai veiktu aprēķinus SQL priekšrakstos.
Nosaukums |
Apraksts |
---|---|
DIV |
Vesels skaitlis |
/ |
Nodaļa |
- |
Atņemšana |
+ |
Papildinājums |
* |
Reizināšana |
% vai MOD |
Modulis |
Apskatīsim katra iepriekš minētā operatora piemērus
Veselā divīzija (DIV)
SELECT 23 DIV 6 ;
Izpildot iepriekš minēto skriptu, mēs iegūstam šādus rezultātus.
3
Divīzijas operators (/)
Tagad aplūkosim sadalījuma operatora piemēru. Mēs pārveidosim DIV piemēru.
SELECT 23 / 6 ;
Izpildot iepriekš minēto skriptu, mēs iegūstam šādus rezultātus.
3.8333
Atņemšanas operators (-)
Apskatīsim atņemšanas operatora piemēru. Mēs izmantosim tādas pašas vērtības kā iepriekšējos divos piemēros
SELECT 23 - 6 ;
Izpildot iepriekš minēto skriptu, mēs iegūstam 17
Papildinājumu operators (+)
Tagad aplūkosim pievienošanas operatora piemēru. Mēs pārveidosim iepriekšējo piemēru.
SELECT 23 + 6 ;
Izpildot iepriekš minēto skriptu, mēs saņemam 29
Reizināšanas operators (*)
Apskatīsim reizināšanas operatora piemēru. Mēs izmantosim tādas pašas vērtības kā iepriekšējos piemēros.
SELECT 23 * 6 AS `multiplication_result`;
Izpildot iepriekš minēto skriptu, mēs iegūstam šādus rezultātus.
reizināšanas_rezultāts |
138. lpp |
Modulo operators (-)
Moduļa operators dala N ar M un dod mums atlikušo daļu. Tagad aplūkosim moduļa operatora piemēru. Mēs izmantosim tādas pašas vērtības kā iepriekšējos piemēros.
SELECT 23 % 6 ;
VAI
SELECT 23 MOD 6 ;
Izpildot iepriekš minēto skriptu, mēs iegūstam 5
Apskatīsim dažas no MySQL izplatītākajām skaitliskajām funkcijām.
Stāvs - šī funkcija noņem skaitļus aiz komata un noapaļo līdz tuvākajam zemākajam skaitlim. Zemāk parādītais skripts parāda tā lietojumu.
SELECT FLOOR(23 / 6) AS `floor_result`;
Izpildot iepriekš minēto skriptu, mēs iegūstam šādus rezultātus.
Stāvs_rezultāts |
3 |
Apaļš - šī funkcija noapaļo skaitli ar zīmēm aiz komata līdz tuvākajam veselajam skaitlim. Zemāk parādītais skripts parāda tā lietojumu.
SELECT ROUND(23 / 6) AS `round_result`;
Izpildot iepriekš minēto skriptu, mēs iegūstam šādus rezultātus.
Apaļš rezultāts |
4 |
Rand - šī funkcija tiek izmantota nejauša skaitļa ģenerēšanai, tās vērtība mainās katru reizi, kad tiek izsaukta funkcija. Zemāk parādītais skripts parāda tā lietojumu.
SELECT RAND() AS `random_result`;
Saglabātās funkcijas
Saglabātās funkcijas ir gluži tāpat kā iebūvētās funkcijas, izņemot to, ka jums pašam jādefinē saglabātā funkcija. Kad saglabātā funkcija ir izveidota, to var izmantot SQL priekšrakstos tāpat kā jebkuru citu funkciju. Saglabātās funkcijas izveidošanas pamata sintakse ir parādīta zemāk
CREATE FUNCTION sf_name ([parameter(s)])RETURNS data typeDETERMINISTICSTATEMENTS
ŠEIT
- "CREATE FUNCTION sf_name ([parametrs (-i)]]) ir obligāts un liek MySQL serverim izveidot funkciju ar nosaukumu" sf_name "ar izvēles parametriem, kas definēti iekavās.
- "RETURNS data type" ir obligāts un norāda datu tipu, kas funkcijai jāatgriež.
- "DETERMINISTIC" nozīmē, ka funkcija atgriezīs tās pašas vērtības, ja tai tiks piegādāti tie paši argumenti.
- "STATEMENTS" ir procedūras kods, kuru funkcija izpilda.
Apskatīsim praktisku piemēru, kas īsteno iebūvēto funkciju. Pieņemsim, ka mēs vēlamies uzzināt, kuras īrētās filmas ir pagājušas pēc atgriešanās datuma. Mēs varam izveidot saglabātu funkciju, kas pieņem atgriešanās datumu kā parametru un pēc tam salīdzina to ar MySQL servera pašreizējo datumu. Ja pašreizējais datums ir mazāks par atgriešanās filmas datumu, mēs atgriežam "Nē", pretējā gadījumā mēs atgriežam "Jā". Zemāk parādītais skripts palīdz mums to sasniegt.
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|
Izpildot iepriekš minēto skriptu, tika izveidota saglabātā funkcija `sf_past_movie_return_date`.
Tagad pārbaudīsim mūsu saglabāto funkciju.
SELECT `movie_id`,`membership_number`,`return_date`,CURDATE() ,sf_past_movie_return_date(`return_date`) FROM `movierentals`;
Iepriekš minētā skripta izpildīšana MySQL darbagaldā pret myflixdb dod mums šādus rezultātus.
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 |
Lietotāja definētas funkcijas
MySQL atbalsta arī lietotāja definētas funkcijas, kas paplašina MySQL. Lietotāja definētas funkcijas ir funkcijas, kuras varat izveidot, izmantojot programmēšanas valodu, piemēram, C, C ++ uc, un pēc tam tās pievienot MySQL serverim. Pēc pievienošanas tos var izmantot tāpat kā jebkuru citu funkciju.
Kopsavilkums
- Funkcijas ļauj mums uzlabot MySQL iespējas.
- Funkcijas vienmēr atgriež vērtību un pēc izvēles var pieņemt parametrus.
- Iebūvētās funkcijas ir funkcijas, kas tiek piegādātas kopā ar MySQL. Tos var klasificēt pēc datu tipiem, ar kuriem tie darbojas, ti, virknes, datums un iebūvētās skaitliskās funkcijas.
- Saglabātās funkcijas lietotājs izveido MySQL serverī, un tās var izmantot SQL priekšrakstos.
- Lietotāja definētas funkcijas tiek izveidotas ārpus MySQL, un tās var iekļaut MySQL serverī.