MySQL funkcije: niz, numerički, korisnički definiran, pohranjen

Anonim

Što su funkcije?

MySQL može učiniti mnogo više od pukog spremanja i dohvaćanja podataka . Također možemo izvoditi manipulacije podacima prije nego što ih dohvatimo ili spremimo. Tu dolaze MySQL funkcije. Funkcije su jednostavno dijelovi koda koji izvode neke operacije, a zatim vraćaju rezultat. Neke funkcije prihvaćaju parametre, dok druge funkcije ne prihvaćaju parametre.

Pogledajmo ukratko primjer MySQL funkcije. Prema zadanim postavkama MySQL sprema tipove podataka datuma u formatu "GGGG-MM-DD". Pretpostavimo da smo izradili aplikaciju i da naši korisnici žele da se datum vrati u formatu "DD-MM-GGGG", za to možemo koristiti MySQL ugrađenu funkciju DATE_FORMAT. DATE_FORMAT je jedna od najčešće korištenih funkcija u MySQL-u. Razmotrit ćemo ga detaljnije dok razvijamo lekciju.

Zašto koristiti funkcije?

Na temelju primjera navedenog u uvodu, ljudi s iskustvom u računalnom programiranju možda razmišljaju: "Zašto smetati MySQL funkcijama? Isti se učinak može postići skriptnim / programskim jezikom?" Istina je da to možemo postići upisivanjem nekih postupaka / funkcija u aplikacijski program.

Vraćajući se na naš primjer DATUMA u uvodu, da bi naši korisnici dobili podatke u željenom formatu, poslovni sloj će morati obaviti potrebnu obradu.

To postaje problem kada se aplikacija mora integrirati s drugim sustavima. Kada koristimo MySQL funkcije kao što je DATE_FORMAT, tada tu funkciju možemo ugraditi u bazu podataka i bilo koja aplikacija koja treba podatke dobiva je u traženom formatu. To smanjuje ponovni rad u poslovnoj logici i smanjuje nedosljednosti podataka.

Još jedan razlog zašto bismo trebali razmotriti korištenje MySQL funkcija jest činjenica da to može pomoći u smanjenju mrežnog prometa u klijent / poslužiteljskim aplikacijama . Poslovni sloj morat će uputiti poziv pohranjenim funkcijama bez potrebe za manipulacijom podacima. U prosjeku, upotreba funkcija može uvelike poboljšati ukupne performanse sustava.

Vrste funkcija

Ugrađene funkcije

MySQL dolazi u paketu s nizom ugrađenih funkcija. Ugrađene funkcije su jednostavno funkcije koje su već implementirane na MySQL poslužitelj. Te nam funkcije omogućuju izvršavanje različitih vrsta manipulacija podacima. Ugrađene funkcije mogu se u osnovi kategorizirati u sljedeće najčešće korištene kategorije.

  • Funkcije nizova - djeluju na tipovima podataka niza
  • Numeričke funkcije - djeluju na numeričkim vrstama podataka
  • Funkcije datuma - rade s vrstama podataka datuma
  • Skupne funkcije - djeluju na svim gore navedenim vrstama podataka i daju sažeti skup rezultata.
  • Ostale funkcije - MySQL podržava i druge vrste ugrađenih funkcija, ali mi ćemo svoju lekciju ograničiti samo na gore navedene funkcije.

Pogledajmo sada svaku od gore spomenutih funkcija u detalje. Objasnit ćemo najčešće korištene funkcije pomoću našeg "Myflixdb".

String funkcije

Već smo pogledali što rade funkcije niza. Pogledat ćemo na praktičnom primjeru koji ih koristi. U našoj tablici filmova naslovi filmova pohranjuju se pomoću kombinacija malih i velikih slova. Pretpostavimo da želimo dobiti popis upita koji naslove filmova prikazuje velikim slovima. Za to možemo koristiti funkciju "UCASE". Kao parametar uzima se niz i pretvara sva slova u velika slova. Skripta prikazana u nastavku prikazuje upotrebu funkcije "UCASE".

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

OVDJE

  • UCASE (`title`) je ugrađena funkcija koja uzima naslov kao parametar i vraća ga velikim slovima s pseudonimom" upper_case_title ".

Izvršavanje gornje skripte u MySQL radnom stolu protiv Myflixdb daje nam sljedeće rezultate prikazane u nastavku.

 
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 podržava brojne funkcije niza. Potpuni popis svih ugrađenih funkcija niza potražite na ovoj poveznici http://dev.mysql.com/doc/refman/5.0/en/string-functions.html na MySQL web mjestu.

Numeričke funkcije

Kao što je ranije spomenuto, ove funkcije rade na numeričkim vrstama podataka. Možemo izvoditi matematička izračunavanja numeričkih podataka u SQL izrazima.

Aritemski operatori

MySQL podržava sljedeće aritmatičke operatore koji se mogu koristiti za izvođenje izračuna u SQL izrazima.

Ime

Opis

DIV

Cjelovita podjela

/

Podjela

-

Oduzimanje

+

Dodatak

*

Množenje

% ili MOD

Modul

Pogledajmo sada primjere svakog od gore navedenih operatora

Cjelovita divizija (DIV)

SELECT 23 DIV 6 ;

Izvršavanje gornje skripte daje nam sljedeće rezultate.

3

Podjeljenik (/)

Pogledajmo sada primjer operatora diobe. Izmijenit ćemo primjer DIV-a.

SELECT 23 / 6 ;

Izvršavanje gornje skripte daje nam sljedeće rezultate.

3,8333

Operator oduzimanja (-)

Pogledajmo sada primjer operatora oduzimanja. Upotrijebit ćemo iste vrijednosti kao u prethodna dva primjera

SELECT 23 - 6 ;

Izvršavanje gornje skripte daje nam 17

Operator zbrajanja (+)

Pogledajmo sada primjer operatora zbrajanja. Izmijenit ćemo prethodni primjer.

SELECT 23 + 6 ;

Izvršavanje gornje skripte daje nam 29

Operator množenja (*)

Pogledajmo sada primjer operatora množenja. Upotrijebit ćemo iste vrijednosti kao u prethodnim primjerima.

SELECT 23 * 6 AS `multiplication_result`;

Izvršavanje gornje skripte daje nam sljedeće rezultate.

rezultat množenja_

138

Modulo operator (-)

Operator modula dijeli N s M i daje nam ostatak. Pogledajmo sada primjer operatora modulo. Upotrijebit ćemo iste vrijednosti kao u prethodnim primjerima.

SELECT 23 % 6 ;

ILI

SELECT 23 MOD 6 ;

Izvršavanje gornje skripte daje nam 5

Pogledajmo sada neke od uobičajenih numeričkih funkcija u MySQL-u.

Pod - ova funkcija uklanja decimalna mjesta s broja i zaokružuje ga na najbliži najmanji broj. Skripta prikazana u nastavku pokazuje njezinu upotrebu.

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

Izvršavanje gornje skripte daje nam sljedeće rezultate.

Rezultat poda

3

Okruglo - ova funkcija zaokružuje broj s decimalnim mjestima na najbliži cijeli broj. Skripta prikazana u nastavku pokazuje njezinu upotrebu.

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

Izvršavanje gornje skripte daje nam sljedeće rezultate.

Okrugli_rezultat

4

Rand - ova se funkcija koristi za generiranje slučajnog broja, a vrijednost joj se mijenja svaki put kad se funkcija pozove. Skripta prikazana u nastavku pokazuje njezinu upotrebu.

SELECT RAND() AS `random_result`;

Pohranjene funkcije

Pohranjene funkcije su poput ugrađenih funkcija, osim što morate sami definirati pohranjenu funkciju. Jednom kad je spremljena funkcija stvorena, može se koristiti u SQL izrazima kao i bilo koja druga funkcija. Osnovna sintaksa za stvaranje pohranjene funkcije prikazana je dolje

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

OVDJE

  • "CREATE FUNCTION sf_name ([parametar (i)])" je obvezan i govori MySQL poslužitelju da kreira funkciju pod nazivom `sf_name 's neobaveznim parametrima definiranim u zagradi.
  • "RETURNS vrsta podataka" obavezna je i određuje vrstu podataka koju bi funkcija trebala vratiti.
  • "DETERMINISTIČKO" znači da će funkcija vratiti iste vrijednosti ako su joj dostavljeni isti argumenti.
  • "IZJAVE" je proceduralni kod koji funkcija izvršava.

Pogledajmo sada praktični primjer koji implementira ugrađenu funkciju. Pretpostavimo da želimo znati koji su unajmljeni filmovi prošli datum povratka. Možemo stvoriti pohranjenu funkciju koja prihvaća datum povrata kao parametar, a zatim ga uspoređuje s trenutnim datumom na MySQL poslužitelju. Ako je trenutni datum manji od datuma povratnog filma, vratit ćemo "Ne", u suprotnom ćemo vratiti "Da". Skripta prikazana u nastavku pomaže nam da to postignemo.

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|

Izvršavanjem gornje skripte stvorena je pohranjena funkcija `sf_past_movie_return_date`.

Isprobajmo sada našu pohranjenu funkciju.

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

Izvršenje gornje skripte u MySQL radnom stolu protiv myflixdb daje nam sljedeće 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

Korisnički definirane funkcije

MySQL također podržava korisnički definirane funkcije koje proširuju MySQL. Korisnički definirane funkcije su funkcije koje možete stvoriti pomoću programskog jezika poput C, C ++ itd., A zatim ih dodati na MySQL poslužitelj. Jednom dodani, mogu se koristiti kao i bilo koja druga funkcija.

Sažetak

  • Funkcije nam omogućuju poboljšanje mogućnosti MySQL-a.
  • Funkcije uvijek vraćaju vrijednost i po želji mogu prihvatiti parametre.
  • Ugrađene funkcije su funkcije koje se isporučuju s MySQL-om. Mogu se kategorizirati prema vrstama podataka na kojima rade, tj. Nizovima, datumu i numeričkim ugrađenim funkcijama.
  • Pohranjene funkcije stvara korisnik na MySQL poslužitelju i mogu se koristiti u SQL izrazima.
  • Korisnički definirane funkcije kreiraju se izvan MySQL-a i mogu se integrirati u MySQL poslužitelj.