MySQL Funktioner: Streng, Numerisk, Brugerdefineret, Lagret

Hvad er funktioner?

MySQL kan meget mere end blot at gemme og hente data. Vi kan også udføre manipulationer på dataene før du henter eller gemmer det. Det er der MySQL Funktioner kommer ind. Funktioner er simpelthen kodestykker, der udfører nogle handlinger og derefter returnerer et resultat. Nogle funktioner accepterer parametre, mens andre funktioner ikke accepterer parametre.

Lad os kort se på et eksempel på MySQL fungere. Som standard, MySQL gemmer datodatatyper i formatet "ÅÅÅÅ-MM-DD". Antag, at vi har bygget en applikation, og vores brugere ønsker, at datoen skal returneres i formatet "DD-MM-ÅÅÅÅ", kan vi bruge MySQL indbygget funktion DATE_FORMAT for at opnå dette. DATE_FORMAT er en af ​​de mest brugte funktioner i MySQL. Vi vil se nærmere på det, efterhånden som vi udfolder lektionen.

Hvorfor bruge funktioner?

Hvorfor bruge funktioner

Baseret på eksemplet givet 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 rigtigt, at vi kan opnå det ved at skrive nogle procedurer/funktioner i ansøgningsprogrammet.

For 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 indlejret i databasen, og enhver applikation, der har brug for dataene, får den i det krævede format. Det her reducerer omarbejde i forretningslogikken og reducerer datainkonsistens.

En anden grund til, at vi bør overveje at bruge MySQL funktioner er, at det kan hjælpe med at reducere netværkstrafikken i klient/server-applikationer. Business Layer behøver kun at foretage opkald til de lagrede funktioner uden behov for at manipulere data. I gennemsnit kan brugen af ​​funktioner bidrage til at forbedre den samlede systemydeevne betydeligt.

Typer af funktioner

Indbyggede funktioner

MySQL leveres med en række indbyggede funktioner. Indbyggede funktioner er simpelthen funktioner, der allerede er implementeret i MySQL server. Disse funktioner giver os mulighed for at udføre forskellige typer manipulationer på dataene. De indbyggede funktioner kan grundlæggende kategoriseres i følgende mest brugte kategorier.

  • Strings funktioner – operere på strengdatatyper
  • Numeriske funktioner – operere på numeriske datatyper
  • Dato funktioner – operere på datodatatyper
  • Samlede funktioner – operere på alle ovenstående datatyper og producere opsummerede resultatsæt.
  • Andre funktioner - MySQL understøtter også andre typer indbyggede funktioner, men vi vil begrænse vores lektion til kun de ovennævnte funktioner.

Lad os nu se nærmere på hver af funktionerne nævnt ovenfor. Vi vil forklare de mest brugte funktioner ved hjælp af vores "Myflixdb".

String funktioner

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

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

HER

  • UCASE(`titel`) er den indbyggede funktion, der tager titlen som en parameter og returnerer den med store bogstaver med aliasnavnet `store_case_title`.

Udførelse af ovenstående script i MySQL workbench 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, se dette link http://dev.mysql.com/doc/refman/5.0/en/string-functions.html on MySQL internet side.

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 operatorer

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

Navn Description
DIV Heltalsafdeling
/ Afdeling
- Subtraktion
+ Tilsætning
* 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

Divisionsoperatør (/)

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

SELECT 23 / 6 ;

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

3.8333

Subtraktionsoperator (-)

Lad os nu se på subtraktionsoperatoreksemplet. Vi vil bruge de samme værdier som i de to foregående eksempler

SELECT 23 - 6 ;

Udførelse af ovenstående script giver os 17

Tilføjelsesoperator (+)

Lad os nu se på additionsoperatoreksemplet. Vi vil ændre det foregående eksempel.

SELECT 23 + 6 ;

Udførelse af ovenstående script giver os 29

Multiplikationsoperator (*)

Lad os nu se på eksemplet med multiplikationsoperatoren. Vi vil bruge 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-operator (-)

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

SELECT 23 % 6 ;

OR

SELECT 23 MOD 6 ;

Udførelse af ovenstående script giver os 5

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

Gulvlampe – denne funktion fjerner decimaler fra et tal og runder det af til det nærmeste laveste tal. Scriptet vist nedenfor demonstrerer dets brug.

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

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

Etage_resultat
3

Rund – denne funktion afrunder et tal med decimaler til nærmeste hele tal. Scriptet vist nedenfor demonstrerer dets brug.

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, dets værdi ændres hver gang funktionen kaldes. Scriptet vist nedenfor demonstrerer dets brug.

SELECT RAND() AS `random_result`;

Gemte funktioner

Lagrede funktioner er ligesom indbyggede funktioner, bortset fra at du selv skal definere den lagrede funktion. Når en lagret funktion er blevet oprettet, kan den bruges i SQL-sætninger ligesom enhver anden funktion. Den grundlæggende syntaks for at oprette en lagret funktion er som vist nedenfor

CREATE FUNCTION sf_name ([parameter(s)])
   RETURNS data type
   DETERMINISTIC
   STATEMENTS

HER

  • "CREATE FUNCTION sf_name ([parameter(s)]) " er obligatorisk og fortæller MySQL server for at oprette en funktion ved navn `sf_name' med valgfrie parametre defineret i parentes.
  • "RETURNERER datatype" er obligatorisk og angiver den datatype, som funktionen skal returnere.
  • "DETERMINISTISK" betyder, at funktionen returnerer de samme værdier, hvis de samme argumenter leveres til den.
  • "UDTALELSER" er den proceduremæssige kode, som funktionen udfører.

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

DELIMITER |
CREATE FUNCTION sf_past_movie_return_date (return_date DATE)
  RETURNS VARCHAR(3)
   DETERMINISTIC
    BEGIN
     DECLARE sf_value VARCHAR(3);
        IF curdate() > return_date
            THEN SET sf_value = 'Yes';
        ELSEIF  curdate() <= return_date
            THEN SET sf_value = 'No';
        END IF;
     RETURN sf_value;
    END|

Udførelse af ovenstående script skabte den lagrede 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`;

Udførelse af ovenstående script i MySQL workbench 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 f.eks C, C++ osv. og derefter tilføje dem til MySQL server. Når de er tilføjet, kan de bruges ligesom enhver anden funktion.

Resumé

  • Funktioner giver os mulighed for at forbedre mulighederne for MySQL.
  • Funktioner returnerer altid en værdi og kan valgfrit acceptere parametre.
  • Indbyggede funktioner er funktioner, der leveres med MySQL. De kan kategoriseres efter de datatyper, de opererer på, dvs. strenge, dato og numeriske indbyggede funktioner.
  • Gemte funktioner oprettes af brugeren indenfor MySQL server og kan bruges i SQL-sætninger.
  • Brugerdefinerede funktioner oprettes udenfor MySQL og kan indgå i MySQL serveren.

Dagligt Guru99 Nyhedsbrev

Start dagen med de seneste og vigtigste AI-nyheder leveret lige nu.