„MySQL“ funkcijos: eilutė, skaitmeninė, vartotojo apibrėžta, saugoma

Anonim

Kas yra funkcijos?

„MySQL“ gali padaryti daug daugiau nei tik saugoti ir gauti duomenis . Mes taip pat galime atlikti duomenų manipuliavimą prieš juos gaudami ar išsaugodami. Štai kur atsiranda „MySQL“ funkcijos. Funkcijos yra tiesiog kodo dalys, kurios atlieka kai kurias operacijas ir tada pateikia rezultatą. Kai kurios funkcijos priima parametrus, o kitos - parametrus.

Trumpai apžvelkime „MySQL“ funkcijos pavyzdį. Pagal numatytuosius nustatymus „MySQL“ įrašo datos duomenų tipus „MMMM-MM-DD“ formatu. Tarkime, kad mes sukūrėme programą ir mūsų vartotojai nori, kad data būtų grąžinta „DD-MM-YYYY“ formatu. Norėdami tai pasiekti, galime naudoti „MySQL“ integruotą funkciją DATE_FORMAT. DATE_FORMAT yra viena iš dažniausiai naudojamų „MySQL“ funkcijų. Mes pažvelgsime į tai išsamiau, kai išskleisime pamoką.

Kodėl verta naudoti funkcijas?

Remiantis įžangoje pateiktu pavyzdžiu, žmonės, turintys kompiuterio programavimo patirties, gali galvoti: „Kodėl varginti„ MySQL “funkcijas? Tą patį efektą galima pasiekti naudojant scenarijų / programavimo kalbą?“ Tiesa, to galime pasiekti parašę keletą procedūrų / funkcijų į programos programą.

Grįžtant prie įžangoje pateikto DATE pavyzdžio, kad vartotojai gautų duomenis norimu formatu, verslo sluoksnis turės atlikti būtiną apdorojimą.

Tai tampa problema, kai programa turi integruotis su kitomis sistemomis. Kai mes naudojame „MySQL“ funkcijas, tokias kaip „DATE_FORMAT“, galime tą funkciją įterpti į duomenų bazę ir bet kuri programa, kuriai reikalingi duomenys, ją gauna reikiamu formatu. Tai sumažina pakartotinį darbą verslo logikoje ir sumažina duomenų neatitikimus.

Kita priežastis, kodėl turėtume apsvarstyti „ MySQL“ funkcijų naudojimą, yra tai, kad tai gali padėti sumažinti tinklo srautą kliento / serverio programose . „Business Layer“ tereikės skambinti į saugomas funkcijas, net nereikia manipuliuoti duomenimis. Vidutiniškai funkcijų naudojimas gali labai padėti pagerinti bendrą sistemos našumą.

Funkcijų tipai

Įmontuotos funkcijos

„MySQL“ komplektuojamas su daugybe integruotų funkcijų. Integruotos funkcijos yra tiesiog funkcijos, jau įdiegtos MySQL serveryje. Šios funkcijos leidžia mums atlikti įvairių tipų manipuliacijas duomenimis. Integruotas funkcijas iš esmės galima suskirstyti į šias dažniausiai naudojamas kategorijas.

  • Stygų funkcijos - veikia eilutės duomenų tipus
  • Skaitmeninės funkcijos - veikia skaitmeninius duomenų tipus
  • Datos funkcijos - veikia pagal datos duomenų tipus
  • Apibendrintos funkcijos - veikia visus anksčiau nurodytus duomenų tipus ir sukuria apibendrintus rezultatų rinkinius.
  • Kitos funkcijos - MySQL taip pat palaiko kitų tipų integruotas funkcijas, tačiau mes apsiribosime tik aukščiau išvardintomis funkcijomis.

Pažvelkime į kiekvieną iš aukščiau paminėtų funkcijų išsamiai. Mes paaiškinsime dažniausiai naudojamas funkcijas naudodami „Myflixdb“.

Styginių funkcijos

Mes jau pažvelgėme į tai, ką daro eilutės funkcijos. Mes pažvelgsime į praktinį pavyzdį, kuriame jie naudojami. Mūsų filmų lentelėje filmų pavadinimai saugomi naudojant mažųjų ir didžiųjų raidžių derinius. Tarkime, kad norime gauti užklausų sąrašą, kuriame filmo pavadinimai pateikiami didžiosiomis raidėmis. Tam galime naudoti funkciją „UCASE“. Kaip parametrą reikia eilutės ir visos raidės paverčiamos didžiosiomis raidėmis. Žemiau pateiktas scenarijus parodo „UCASE“ funkcijos naudojimą.

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

ČIA

  • UCASE („title“) yra įmontuota funkcija, pavadinanti parametrą pavadinimu ir pateikusį jį didžiosiomis raidėmis su slapyvardžiu „upper_case_title“.

Minėto scenarijaus vykdymas „MySQL“ darbastalyje su „Myflixdb“ suteikia mums šiuos rezultatus.

 
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“ palaiko daugybę eilučių funkcijų. Norėdami gauti išsamų visų įdiegtų eilutės funkcijų sąrašą, ieškokite šios nuorodos http://dev.mysql.com/doc/refman/5.0/en/string-functions.html „MySQL“ svetainėje.

Skaitmeninės funkcijos

Kaip minėta anksčiau, šios funkcijos veikia pagal skaitmeninius duomenų tipus. Galime atlikti matematinius skaičiavimus iš skaitinių duomenų SQL sakiniuose.

Aritematiniai operatoriai

„MySQL“ palaiko šiuos aritmatinius operatorius, kurie gali būti naudojami atliekant skaičiavimus SQL sakiniuose.

vardas

apibūdinimas

DIV

Sveikas skaičius

/

Padalijimas

-

Atimtis

+

Papildymas

*

Dauginimas

% arba MOD

Modulis

Dabar pažvelkime į kiekvieno iš pirmiau nurodytų operatorių pavyzdžius

Sveiko skaičiaus skyrius (DIV)

SELECT 23 DIV 6 ;

Vykdydami pirmiau pateiktą scenarijų, gauname šiuos rezultatus.

3

Skyriaus operatorius (/)

Dabar pažvelkime į padalijimo operatoriaus pavyzdį. Mes pakeisime DIV pavyzdį.

SELECT 23 / 6 ;

Vykdydami pirmiau pateiktą scenarijų, gauname šiuos rezultatus.

3.8333

Atimties operatorius (-)

Dabar pažvelkime į atimties operatoriaus pavyzdį. Mes naudosime tas pačias reikšmes kaip ir ankstesniuose dviejuose pavyzdžiuose

SELECT 23 - 6 ;

Vykdydami pirmiau pateiktą scenarijų, gauname 17

Papildymo operatorius (+)

Dabar pažvelkime į papildymo operatoriaus pavyzdį. Mes pakeisime ankstesnį pavyzdį.

SELECT 23 + 6 ;

Vykdydami pirmiau pateiktą scenarijų, gauname 29

Daugybos operatorius (*)

Dabar pažvelkime į daugybos operatoriaus pavyzdį. Mes naudosime tas pačias reikšmes kaip ir ankstesniuose pavyzdžiuose.

SELECT 23 * 6 AS `multiplication_result`;

Vykdydami pirmiau pateiktą scenarijų, gauname šiuos rezultatus.

daugybos_rezultatas

138

„Modulo“ operatorius (-)

Modulio operatorius padalija N iš M ir suteikia mums likusią dalį. Dabar pažvelkime į modulo operatoriaus pavyzdį. Mes naudosime tas pačias reikšmes kaip ir ankstesniuose pavyzdžiuose.

SELECT 23 % 6 ;

ARBA

SELECT 23 MOD 6 ;

Vykdydami pirmiau pateiktą scenarijų, gauname 5

Pažvelkime į kai kurias įprastas „MySQL“ skaitines funkcijas.

Aukštas - ši funkcija pašalina dešimtaines vietas nuo skaičiaus ir suapvalina jį iki artimiausio mažiausio skaičiaus. Žemiau pateiktas scenarijus parodo jo naudojimą.

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

Vykdydami pirmiau pateiktą scenarijų, gauname šiuos rezultatus.

Aukštas_rezultatas

3

Apvalus - ši funkcija suapvalina skaičių po kablelio iki artimiausio sveiko skaičiaus. Žemiau pateiktas scenarijus parodo jo naudojimą.

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

Vykdydami pirmiau pateiktą scenarijų, gauname šiuos rezultatus.

Apvalus rezultatas

4

Randas - ši funkcija naudojama atsitiktiniam skaičiui generuoti, jos reikšmė keičiasi kiekvieną kartą, kai paskambinama funkcija. Žemiau pateiktas scenarijus parodo jo naudojimą.

SELECT RAND() AS `random_result`;

Saugomos funkcijos

Saugomos funkcijos yra panašios į įmontuotas funkcijas, išskyrus tai, kad turite patys apibrėžti saugomą funkciją. Sukūrus saugomą funkciją, ją galima naudoti SQL sakiniuose, kaip ir bet kurią kitą funkciją. Pagrindinė saugomos funkcijos kūrimo sintaksė yra tokia, kaip parodyta žemiau

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

ČIA

  • "CREATE FUNCTION sf_name ([parametras (-ai)])) yra privalomas ir liepia MySQL serveriui sukurti funkciją pavadinimu" sf_name "su papildomais parametrais, apibrėžtais skliausteliuose.
  • „RETURNS data type“ yra privalomas ir nurodo duomenų tipą, kurį funkcija turėtų grąžinti.
  • „NUSTATYMAI“ reiškia, kad funkcija grąžins tas pačias reikšmes, jei jai bus pateikti tie patys argumentai.
  • „STATEMENTS“ yra procedūrinis kodas, kurį vykdo funkcija.

Pažvelkime į praktinį pavyzdį, kuris įgyvendina integruotą funkciją. Tarkime, kad mes norime sužinoti, kurie nuomojami filmai yra pasibaigę grąžinimo datai. Mes galime sukurti saugomą funkciją, kuri priima grąžinimo datą kaip parametrą ir palygina ją su dabartine data „MySQL“ serveryje. Jei dabartinė data yra mažesnė nei grąžinamo filmo data, tada mes grąžiname „Ne“, kitu atveju grąžiname „Taip“. Žemiau pateiktas scenarijus padeda mums tai pasiekti.

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|

Vykdant pirmiau pateiktą scenarijų sukurta saugoma funkcija „sf_past_movie_return_date“.

Dabar patikrinkime mūsų saugomą funkciją.

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

Minėto scenarijaus vykdymas „MySQL“ darbastalyje prieš „myflixdb“ suteikia mums šiuos rezultatus.

 
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

Vartotojo nustatytos funkcijos

„MySQL“ taip pat palaiko vartotojo nustatytas funkcijas, kurios praplečia „MySQL“. Vartotojo nustatytos funkcijos yra funkcijos, kurias galite sukurti naudodami programavimo kalbą, pvz., C, C ++ ir kt., Ir tada jas pridėti prie „MySQL“ serverio. Pridėjus jas galima naudoti kaip ir bet kurią kitą funkciją.

Santrauka

  • Funkcijos leidžia mums sustiprinti „MySQL“ galimybes.
  • Funkcijos visada grąžina vertę ir gali pasirinktinai priimti parametrus.
  • Integruotos funkcijos yra funkcijos, kurios pateikiamos kartu su „MySQL“. Jie gali būti skirstomi pagal duomenų tipus, kuriuos jie naudoja, ty eilutes, datą ir skaitmenines integruotas funkcijas.
  • „MySQL“ serveryje vartotojas sukuria saugomas funkcijas, kurias galima naudoti SQL sakiniuose.
  • Vartotojo nustatytos funkcijos yra sukurtos už „MySQL“ ribų ir gali būti integruotos į „MySQL“ serverį.