MySQL-funktioner: String, Numerisk, Brugerdefineret, Lagret

Anonim

Hvad er funktioner?

MySQL kan gøre meget mere end bare at gemme og hente data . Vi kan også udføre manipulationer af dataene, før vi henter eller gemmer dem. Det er her, MySQL-funktioner kommer ind. Funktioner er simpelthen kodestykker, der udfører nogle operationer og derefter returnerer et resultat. Nogle funktioner accepterer parametre, mens andre funktioner ikke accepterer parametre.

Lad os kort se på et eksempel på MySQL-funktion. Som standard gemmer MySQL datadatatyper i formatet "ÅÅÅÅ-MM-DD". Antag, at vi har bygget en applikation, og vores brugere ønsker, at datoen skal returneres i formatet "DD-MM-ÅÅÅÅ", vi kan bruge MySQL indbygget funktion DATE_FORMAT til at opnå dette. DATE_FORMAT er en af ​​de mest anvendte funktioner i MySQL. Vi vil se på det mere detaljeret, når vi udfolder lektionen.

Hvorfor bruge funktioner?

Baseret på eksemplet i indledningen kan folk med erfaring i computerprogrammering tænke "Hvorfor gider MySQL-funktioner? Den samme effekt kan opnås med scripting / programmeringssprog?" Det er sandt, at vi kan opnå det ved at skrive nogle procedurer / funktion i applikationsprogrammet.

At komme tilbage til vores DATE-eksempel i introduktionen, for at vores brugere kan få dataene i det ønskede format, skal forretningslaget udføre den nødvendige behandling.

Dette bliver et problem, når applikationen skal integreres med andre systemer. Når vi bruger MySQL-funktioner såsom DATE_FORMAT, så kan vi have den funktionalitet integreret i databasen, og ethvert program, der har brug for dataene, får det i det krævede format. Dette reducerer genarbejdet i forretningslogikken og reducerer datakonsekvenser.

En anden grund til, at vi bør overveje at bruge MySQL-funktioner, er, at det kan hjælpe med at reducere netværkstrafik i klient- / serverapplikationer . Business Layer behøver kun at ringe til de lagrede funktioner uden behov for at manipulere data. I gennemsnit kan brugen af ​​funktioner i høj grad hjælpe med at forbedre den samlede systemydelse.

Typer af funktioner

Indbyggede funktioner

MySQL leveres med et antal indbyggede funktioner. Indbyggede funktioner er simpelthen funktioner, der allerede er implementeret i MySQL-serveren. Disse funktioner giver os mulighed for at udføre forskellige typer manipulationer af dataene. De indbyggede funktioner kan grundlæggende kategoriseres i følgende mest anvendte kategorier.

  • Stringsfunktioner - fungerer på strengdatatyper
  • Numeriske funktioner - fungerer på numeriske datatyper
  • Datofunktioner - fungerer på datadatatyper
  • Samlede funktioner - betjen alle ovennævnte datatyper og producer opsummerede resultatsæt.
  • Andre funktioner - MySQL understøtter også andre typer indbyggede funktioner, men vi begrænser kun vores lektion til ovennævnte funktioner.

Lad os nu se på hver af de ovennævnte funktioner i detaljer. Vi forklarer de mest anvendte funktioner ved hjælp af vores "Myflixdb".

Strengfunktioner

Vi har allerede set på, hvad strengfunktioner gør. Vi vil se på et praktisk eksempel, der bruger dem. I vores filmtabel gemmes filmtitlerne ved hjælp af kombinationer af små og store bogstaver. Antag, at vi ønsker at få en forespørgsleliste, der returnerer filmtitlerne med store bogstaver. Vi kan bruge "UCASE" -funktionen til at gøre det. Det tager en streng som parameter og konverterer alle bogstaverne til store bogstaver. Nedenstående script demonstrerer brugen af ​​"UCASE" -funktionen.

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

HER

  • UCASE ('title') er den indbyggede funktion, der tager titlen som en parameter og returnerer den med store bogstaver med aliasnavnet 'upper_case_title'.

Udførelse af ovenstående script i MySQL-arbejdsbænk mod Myflixdb giver os følgende resultater vist nedenfor.

 
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 understøtter en række strengfunktioner. For en komplet liste over alle de indbyggede strengfunktioner henvises til dette link http://dev.mysql.com/doc/refman/5.0/en/string-functions.html på MySQL-webstedet.

Numeriske funktioner

Som tidligere nævnt fungerer disse funktioner på numeriske datatyper. Vi kan udføre matematiske beregninger på numeriske data i SQL-sætningerne.

Aritematiske operatører

MySQL understøtter følgende aritmatiske operatorer, der kan bruges til at udføre beregninger i SQL-sætningerne.

Navn

Beskrivelse

DIV

Heltalsafdeling

/

Division

-

Subtraktion

+

Tilføjelse

*

Multiplikation

% eller MOD

Modulus

Lad os nu se på eksempler på hver af ovenstående operatører

Integer Division (DIV)

SELECT 23 DIV 6 ;

Udførelse af ovenstående script giver os følgende resultater.

3

Division operatør (/)

Lad os nu se på eksempeloperatøreksemplet. Vi vil ændre DIV-eksemplet.

SELECT 23 / 6 ;

Udførelse af ovenstående script giver os følgende resultater.

3.8333

Subtraktionsoperatør (-)

Lad os nu se på eksemplet på subtraktionsoperatøren. Vi bruger de samme værdier som i de to foregående eksempler

SELECT 23 - 6 ;

At udføre ovenstående script giver os 17

Tilføjelsesoperatør (+)

Lad os nu se på eksemplet på tilføjelsesoperatøren. Vi vil ændre det foregående eksempel.

SELECT 23 + 6 ;

At udføre ovenstående script giver os 29

Multiplikationsoperator (*)

Lad os nu se på eksemplet til multiplikationsoperatør. Vi bruger de samme værdier som i de foregående eksempler.

SELECT 23 * 6 AS `multiplication_result`;

Udførelse af ovenstående script giver os følgende resultater.

multiplikationsresultat

138

Modulo-operatør (-)

Moduloperatoren deler N med M og giver os resten. Lad os nu se på modulo-operatoreksemplet. Vi bruger de samme værdier som i de foregående eksempler.

SELECT 23 % 6 ;

ELLER

SELECT 23 MOD 6 ;

At udføre ovenstående script giver os 5

Lad os nu se på nogle af de almindelige numeriske funktioner i MySQL.

Gulv - denne funktion fjerner decimaler fra et tal og afrunder det til nærmeste laveste tal. Nedenstående script viser dets anvendelse.

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

Udførelse af ovenstående script giver os følgende resultater.

Floor_result

3

Runde - denne funktion afrunder et tal med decimaler til nærmeste heltal. Nedenstående script viser dets anvendelse.

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

Udførelse af ovenstående script giver os følgende resultater.

Round_result

4

Rand - denne funktion bruges til at generere et tilfældigt tal, dens værdi ændres hver gang funktionen kaldes. Nedenstående script viser dets anvendelse.

SELECT RAND() AS `random_result`;

Gemte funktioner

Gemte funktioner er ligesom indbyggede funktioner bortset fra at du selv skal definere den gemte funktion. Når en gemt funktion er oprettet, kan den bruges i SQL-sætninger ligesom enhver anden funktion. Den grundlæggende syntaks til oprettelse af en gemt funktion er som vist nedenfor

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

HER

  • "CREATE FUNCTION sf_name ([parameter (s)])" er obligatorisk og fortæller MySQL-serveren at oprette en funktion ved navn 'sf_name' med valgfri parametre defineret i parentes.
  • "RETURNS datatype" er obligatorisk og specificerer den datatype, som funktionen skal returnere.
  • "DETERMINISTIC" betyder, at funktionen returnerer de samme værdier, hvis de samme argumenter leveres til den.
  • "UDTALELSER" er den procedurekode, som funktionen udfører.

Lad os nu se på et praktisk eksempel, der implementerer en indbygget funktion. Antag, at vi vil vide, hvilke lejede film, der er forbi returdatoen. Vi kan oprette en gemt funktion, der accepterer returdatoen som parameter og derefter sammenligner den med den aktuelle dato i MySQL-serveren. Hvis den aktuelle dato er mindre end datoen for returfilmen, returnerer vi "Nej" ellers returnerer vi "Ja". Nedenstående script hjælper os med at opnå det.

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|

Udførelse af ovenstående script oprettede den gemte funktion 'sf_past_movie_return_date'.

Lad os nu teste vores lagrede funktion.

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

At udføre ovenstående script i MySQL-arbejdsbænk mod myflixdb giver os følgende resultater.

 
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

Brugerdefinerede funktioner

MySQL understøtter også brugerdefinerede funktioner, der udvider MySQL. Brugerdefinerede funktioner er funktioner, som du kan oprette ved hjælp af et programmeringssprog som C, C ++ osv. Og derefter tilføje dem til MySQL-serveren. Når de er tilføjet, kan de bruges ligesom enhver anden funktion.

Resumé

  • Funktioner giver os mulighed for at forbedre MySQL's muligheder.
  • Funktioner returnerer altid en værdi og kan eventuelt acceptere parametre.
  • Indbyggede funktioner er funktioner, der leveres med MySQL. De kan kategoriseres efter de datatyper, de arbejder på, dvs. strenge, dato og numeriske indbyggede funktioner.
  • Gemte funktioner oprettes af brugeren i MySQL-serveren og kan bruges i SQL-sætninger.
  • Brugerdefinerede funktioner oprettes uden for MySQL og kan inkorporeres i MySQL-serveren.