Hva er funksjoner?
MySQL kan gjøre mye mer enn bare å lagre og hente data . Vi kan også utføre manipulasjoner på dataene før vi henter eller lagrer dem. Det er der MySQL Funksjoner kommer inn. Funksjoner er ganske enkelt kodestykker som utfører noen operasjoner og deretter returnerer et resultat. Noen funksjoner godtar parametere, mens andre funksjoner ikke godtar parametere.
La oss kort se på et eksempel på MySQL-funksjon. Som standard lagrer MySQL datadatatyper i formatet "ÅÅÅÅ-MM-DD". Anta at vi har bygget en applikasjon og brukerne våre ønsker at datoen skal returneres i formatet "DD-MM-ÅÅÅÅ", vi kan bruke MySQL innebygd funksjon DATE_FORMAT for å oppnå dette. DATE_FORMAT er en av de mest brukte funksjonene i MySQL. Vi vil se nærmere på det når vi utfolder leksjonen.
Hvorfor bruke funksjoner?
Basert på eksemplet gitt innledningsvis, kan personer med erfaring innen dataprogrammering tenke "Hvorfor bry MySQL-funksjoner? Den samme effekten kan oppnås med skript / programmeringsspråk?" Det er sant at vi kan oppnå det ved å skrive noen prosedyrer / funksjoner i applikasjonsprogrammet.
Å komme tilbake til DATE-eksemplet vårt innledningsvis, for at brukerne våre skal få dataene i ønsket format, må forretningslaget gjøre nødvendig behandling.
Dette blir et problem når applikasjonen må integreres med andre systemer. Når vi bruker MySQL-funksjoner som DATE_FORMAT, kan vi ha den funksjonaliteten innebygd i databasen, og ethvert program som trenger dataene får det i ønsket format. Dette reduserer omarbeid i forretningslogikken og reduserer datainkonsekvenser.
En annen grunn til at vi bør vurdere å bruke MySQL-funksjoner er det faktum at det kan bidra til å redusere nettverkstrafikk i klient- / serverapplikasjoner . Business Layer trenger bare å ringe til de lagrede funksjonene uten behov for å manipulere data. I gjennomsnitt kan bruk av funksjoner bidra til å forbedre den generelle systemytelsen.
Typer funksjoner
Innebygde funksjoner
MySQL leveres med en rekke innebygde funksjoner. Innebygde funksjoner er ganske enkelt funksjoner som allerede er implementert i MySQL-serveren. Disse funksjonene lar oss utføre forskjellige typer manipulasjoner på dataene. De innebygde funksjonene kan i utgangspunktet kategoriseres i følgende mest brukte kategorier.
- Strengefunksjoner - operer på strengdatatyper
- Numeriske funksjoner - opererer på numeriske datatyper
- Datofunksjoner - operer på datatypetyper
- Aggregerte funksjoner - bruk alle datatypene ovenfor og lag oppsummerte resultatsett.
- Andre funksjoner - MySQL støtter også andre typer innebygde funksjoner, men vi vil begrense leksjonen til de ovennevnte funksjonene.
La oss nå se på hver av funksjonene nevnt ovenfor i detalj. Vi vil forklare de mest brukte funksjonene ved hjelp av "Myflixdb".
Strengfunksjoner
Vi har allerede sett på hva strengfunksjoner gjør. Vi vil se på et praktisk eksempel som bruker dem. I filmtabellen vår lagres filmtitlene ved hjelp av kombinasjoner av store og store bokstaver. Anta at vi ønsker å få en spørreliste som returnerer filmtitlene med store bokstaver. Vi kan bruke "UCASE" -funksjonen til å gjøre det. Det tar en streng som parameter og konverterer alle bokstavene til store bokstaver. Skriptet vist nedenfor viser bruken av "UCASE" -funksjonen.
SELECT `movie_id`,`title`, UCASE(`title`) FROM `movies`;
HER
- UCASE (`title`) er den innebygde funksjonen som tar tittelen som parameter og returnerer den med store bokstaver med aliasnavnet` upper_case_title`.
Å utføre ovennevnte skript i MySQL arbeidsbenk mot Myflixdb gir oss 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 støtter en rekke strengfunksjoner. For en komplett liste over alle de innebygde strengfunksjonene, referer til denne lenken http://dev.mysql.com/doc/refman/5.0/en/string-functions.html på MySQL-nettstedet.
Numeriske funksjoner
Som tidligere nevnt fungerer disse funksjonene på numeriske datatyper. Vi kan utføre matematiske beregninger på numeriske data i SQL-setningene.
Aritematiske operatører
MySQL støtter følgende aritmatiske operatorer som kan brukes til å utføre beregninger i SQL-setningene.
Navn |
Beskrivelse |
---|---|
DIV |
Heltall divisjon |
/ |
Inndeling |
- |
Subtraksjon |
+ |
Addisjon |
* |
Multiplikasjon |
% eller MOD |
Modulus |
La oss nå se på eksempler på hver av operatørene ovenfor
Integer Division (DIV)
SELECT 23 DIV 6 ;
Å utføre skriptet ovenfor gir oss følgende resultater.
3
Divisjonsoperatør (/)
La oss nå se på eksemplet på divisjonsoperatøren. Vi vil endre DIV-eksemplet.
SELECT 23 / 6 ;
Å utføre skriptet ovenfor gir oss følgende resultater.
3.8333
Subtraksjonsoperatør (-)
La oss nå se på eksemplet på subtraksjonsoperatøren. Vi vil bruke de samme verdiene som i de to foregående eksemplene
SELECT 23 - 6 ;
Å utføre skriptet ovenfor gir oss 17
Tilleggsoperatør (+)
La oss nå se på eksemplet på tilleggsoperatøren. Vi vil endre det forrige eksemplet.
SELECT 23 + 6 ;
Å utføre skriptet ovenfor gir oss 29
Multiplikasjonsoperator (*)
La oss nå se på eksemplet på multiplikasjonsoperatøren. Vi vil bruke de samme verdiene som i de foregående eksemplene.
SELECT 23 * 6 AS `multiplication_result`;
Å utføre skriptet ovenfor gir oss følgende resultater.
multiplikasjon_resultat |
138 |
Modulo-operatør (-)
Moduloperatøren deler N med M og gir oss resten. La oss nå se på modulo-operatoreksemplet. Vi vil bruke de samme verdiene som i de foregående eksemplene.
SELECT 23 % 6 ;
ELLER
SELECT 23 MOD 6 ;
Å utføre ovennevnte skript gir oss 5
La oss nå se på noen av de vanlige numeriske funksjonene i MySQL.
Gulv - denne funksjonen fjerner desimaler fra et tall og avrunder det til nærmeste laveste tall. Skriptet vist nedenfor viser bruken.
SELECT FLOOR(23 / 6) AS `floor_result`;
Å utføre skriptet ovenfor gir oss følgende resultater.
Floor_result |
3 |
Round - denne funksjonen avrunder et tall med desimaler til nærmeste hele tall. Skriptet vist nedenfor viser bruken.
SELECT ROUND(23 / 6) AS `round_result`;
Å utføre skriptet ovenfor gir oss følgende resultater.
Round_result |
4 |
Rand - denne funksjonen brukes til å generere et tilfeldig tall, verdien endres hver gang funksjonen kalles. Skriptet vist nedenfor viser bruken.
SELECT RAND() AS `random_result`;
Lagrede funksjoner
Lagrede funksjoner er akkurat som innebygde funksjoner bortsett fra at du må definere den lagrede funksjonen selv. Når en lagret funksjon er opprettet, kan den brukes i SQL-setninger akkurat som alle andre funksjoner. Den grunnleggende syntaksen for å lage en lagret funksjon er som vist nedenfor
CREATE FUNCTION sf_name ([parameter(s)])RETURNS data typeDETERMINISTICSTATEMENTS
HER
- "OPPRETT FUNKSJON sf_name ([parameter (er)])" er obligatorisk og forteller MySQL-serveren å opprette en funksjon med navnet "sf_name" med valgfrie parametere definert i parentes.
- "RETURNS datatype" er obligatorisk og spesifiserer datatypen som funksjonen skal returnere.
- "DETERMINISTIC" betyr at funksjonen vil returnere de samme verdiene hvis de samme argumentene blir levert til den.
- "UTTALELSER" er prosedyrekoden som funksjonen utfører.
La oss nå se på et praktisk eksempel som implementerer en innebygd funksjon. Anta at vi vil vite hvilke leide filmer som er forbi returdato. Vi kan opprette en lagret funksjon som godtar returdato som parameter og deretter sammenligner den med gjeldende dato i MySQL-serveren. Hvis den nåværende datoen er mindre enn datoen for returfilmen, returnerer vi "Nei", ellers returnerer vi "Ja". Skriptet vist nedenfor hjelper oss med å oppnå 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|
Å utføre ovennevnte skript opprettet den lagrede funksjonen 'sf_past_movie_return_date'.
La oss nå teste vår lagrede funksjon.
SELECT `movie_id`,`membership_number`,`return_date`,CURDATE() ,sf_past_movie_return_date(`return_date`) FROM `movierentals`;
Å utføre skriptet ovenfor i MySQL arbeidsbenk mot myflixdb gir oss 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 |
Brukerdefinerte funksjoner
MySQL støtter også brukerdefinerte funksjoner som utvider MySQL. Brukerdefinerte funksjoner er funksjoner du kan opprette ved hjelp av et programmeringsspråk som C, C ++ etc. og deretter legge dem til MySQL-serveren. Når de er lagt til, kan de brukes akkurat som alle andre funksjoner.
Sammendrag
- Funksjoner lar oss forbedre funksjonene til MySQL.
- Funksjoner returnerer alltid en verdi og kan valgfritt akseptere parametere.
- Innebygde funksjoner er funksjoner som leveres med MySQL. De kan kategoriseres i henhold til datatypene de bruker på, dvs. strenger, dato og numeriske innebygde funksjoner.
- Lagrede funksjoner opprettes av brukeren i MySQL-serveren og kan brukes i SQL-setninger.
- Brukerdefinerte funksjoner opprettes utenfor MySQL og kan innlemmes i MySQL-serveren.