Mitä toiminnot ovat?
MySQL voi tehdä paljon enemmän kuin vain tallentaa ja noutaa tietoja . Voimme myös manipuloida tietoja ennen niiden noutamista tai tallentamista. Siellä tulevat MySQL-toiminnot. Funktiot ovat yksinkertaisesti koodikappaleita, jotka suorittavat joitain toimintoja ja palauttavat sitten tuloksen. Jotkut toiminnot hyväksyvät parametrit, kun taas toiset toiminnot eivät hyväksy parametreja.
Tarkastellaan lyhyesti esimerkkiä MySQL-toiminnosta. Oletuksena MySQL tallentaa päivämäärätiedotyypit muodossa "VVVV-KK-PP". Oletetaan, että olemme rakentaneet sovelluksen ja käyttäjämme haluavat päivämäärän palauttamisen muodossa "PP-KK-VVVV". Voimme käyttää MySQL: n sisäänrakennettua toimintoa DATE_FORMAT tämän saavuttamiseksi. DATE_FORMAT on yksi MySQL: n käytetyimmistä toiminnoista. Tarkastelemme sitä tarkemmin, kun avaat oppitunnin.
Miksi käyttää toimintoja?
Johdannossa annetun esimerkin perusteella ihmiset, joilla on kokemusta tietokoneohjelmoinnista, saattavat ajatella "Miksi vaivata MySQL-toimintoja? Sama vaikutus voidaan saavuttaa komentosarjojen / ohjelmointikielen avulla?" On totta, että voimme saavuttaa sen kirjoittamalla joitain toimintoja / toimintoja sovellusohjelmaan.
Palataksemme johdannossa olevaan DATE-esimerkkiin, jotta käyttäjämme saisivat tiedot haluttuun muotoon, yrityskerroksen on tehtävä tarvittava käsittely.
Tästä tulee ongelma, kun sovelluksen on integroitava muihin järjestelmiin. Kun käytämme MySQL-toimintoja, kuten DATE_FORMAT, voimme saada toiminnot upotettua tietokantaan, ja kaikki tietoja tarvitsevat sovellukset saavat ne vaadittuun muotoon. Tämä vähentää uudelleen työskentelyä liiketoimintalogiikassa ja vähentää tietojen epäjohdonmukaisuuksia.
Toinen syy, miksi meidän pitäisi harkita MySQL-toimintojen käyttöä, on se, että se voi auttaa vähentämään verkkoliikennettä asiakas / palvelinsovelluksissa . Business Layer tarvitsee vain soittaa tallennettuihin toimintoihin ilman tarvetta manipuloida tietoja. Keskimäärin toimintojen käyttö voi parantaa huomattavasti järjestelmän yleistä suorituskykyä.
Toimintotyypit
Sisäänrakennetut toiminnot
MySQL sisältää useita sisäänrakennettuja toimintoja. Sisäänrakennetut toiminnot ovat yksinkertaisesti toimintoja, jotka ovat jo toteutettu MySQL-palvelimessa. Näiden toimintojen avulla voimme suorittaa erityyppisiä manipulointeja tietoihin. Sisäänrakennetut toiminnot voidaan periaatteessa luokitella seuraaviin eniten käytettyihin luokkiin.
- Merkkijonofunktiot - toimivat merkkijonotyypeillä
- Numeeriset toiminnot - toimivat numeerisilla tietotyypeillä
- Päivämäärätoiminnot - toimivat päivämäärätietotyypeillä
- Kokoomatoiminnot - toimivat kaikilla yllä olevilla tietotyypeillä ja tuottavat yhteenvetoiset tulosjoukot.
- Muut toiminnot - MySQL tukee myös muita sisäänrakennettuja toimintoja, mutta rajoitamme oppitunnimme vain yllä mainittuihin toimintoihin.
Tarkastellaan nyt kaikkia edellä mainittuja toimintoja yksityiskohtaisesti. Selitämme eniten käytettyjä toimintoja "Myflixdb" -sivullamme.
Merkkijonotoiminnot
Olemme jo tarkastelleet mitä merkkijonofunktiot tekevät. Katsomme käytännön esimerkkiä, jossa niitä käytetään. Elokuvataulukossamme elokuvien otsikot tallennetaan yhdistämällä pieniä ja isoja kirjaimia. Oletetaan, että haluamme saada kyselyluettelon, joka palauttaa elokuvien otsikot isoilla kirjaimilla. Voimme käyttää "UCASE" -toimintoa siihen. Se ottaa parametrin merkkijonon ja muuntaa kaikki kirjaimet isoiksi. Alla esitetty komentosarja osoittaa "UCASE" -toiminnon käytön.
SELECT `movie_id`,`title`, UCASE(`title`) FROM `movies`;
TÄSSÄ
- UCASE (`` otsikko '') on sisäänrakennettu toiminto, joka ottaa otsikon parametriksi ja palauttaa sen isoilla kirjaimilla aliaksen nimellä `` iso_kotelo_nimi ''.
Yllä olevan komentosarjan suorittaminen MySQL-työpöydällä Myflixdb: tä vastaan antaa meille seuraavat tulokset.
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 tukee useita merkkijonofunktioita. Täydellinen luettelo kaikista sisäänrakennetuista merkkijonofunktioista on tässä MySQL-verkkosivuston linkissä: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html.
Numeeriset toiminnot
Kuten aiemmin mainittiin, nämä toiminnot toimivat numeerisilla tietotyypeillä. Voimme suorittaa matemaattisia laskelmia SQL-käskyjen numeerisista tiedoista.
Aritemaattiset operaattorit
MySQL tukee seuraavia aritmaattisia operaattoreita, joita voidaan käyttää laskelmien suorittamiseen SQL-käskyissä.
Nimi |
Kuvaus |
---|---|
DIV |
Kokonaislukujako |
/ |
Divisioona |
- |
Vähennyslasku |
+ |
Lisäys |
* |
Kertolasku |
% tai MOD |
Modulus |
Katsotaan nyt esimerkkejä kustakin yllä olevasta operaattorista
Kokonaisluku (DIV)
SELECT 23 DIV 6 ;
Yllä olevan komentosarjan suorittaminen antaa meille seuraavat tulokset.
3
Jaoston operaattori (/)
Katsotaanpa nyt jako-operaattorin esimerkkiä. Muutamme DIV-esimerkkiä.
SELECT 23 / 6 ;
Yllä olevan komentosarjan suorittaminen antaa meille seuraavat tulokset.
3.8333
Vähennysoperaattori (-)
Katsotaanpa nyt vähennysoperaattorin esimerkkiä. Käytämme samoja arvoja kuin kahdessa edellisessä esimerkissä
SELECT 23 - 6 ;
Yllä olevan komentosarjan suorittaminen antaa meille 17
Lisäysoperaattori (+)
Tarkastellaan nyt esimerkkiä lisäysoperaattorista. Muutamme edellistä esimerkkiä.
SELECT 23 + 6 ;
Yllä olevan komentosarjan suorittaminen antaa meille 29
Kertolaskuoperaattori (*)
Tarkastellaan nyt kertolaskuoperaattorin esimerkkiä. Käytämme samoja arvoja kuin edellisissä esimerkeissä.
SELECT 23 * 6 AS `multiplication_result`;
Yllä olevan komentosarjan suorittaminen antaa meille seuraavat tulokset.
kertolasku_tulos |
138 |
Modulo-operaattori (-)
Moduulioperaattori jakaa N: n M: llä ja antaa meille loput. Katsotaan nyt esimerkkiä modulo-operaattorista. Käytämme samoja arvoja kuin edellisissä esimerkeissä.
SELECT 23 % 6 ;
TAI
SELECT 23 MOD 6 ;
Yllä olevan komentosarjan suorittaminen antaa meille 5
Katsotaan nyt joitain yleisiä numeerisia toimintoja MySQL: ssä.
Lattia - tämä toiminto poistaa desimaalipisteet numerosta ja pyöristää sen lähimpään pienimpään lukuun. Alla esitetty komentosarja osoittaa sen käytön.
SELECT FLOOR(23 / 6) AS `floor_result`;
Yllä olevan komentosarjan suorittaminen antaa meille seuraavat tulokset.
Kerros_tulos |
3 |
Pyöreä - tämä toiminto pyöristää luvun desimaaleilla lähimpään kokonaislukuun. Alla esitetty komentosarja osoittaa sen käytön.
SELECT ROUND(23 / 6) AS `round_result`;
Yllä olevan komentosarjan suorittaminen antaa meille seuraavat tulokset.
Pyöreä tulos |
4 |
Rand - tätä funktiota käytetään satunnaisluvun luomiseen, sen arvo muuttuu aina, kun funktiota kutsutaan. Alla esitetty komentosarja osoittaa sen käytön.
SELECT RAND() AS `random_result`;
Tallennetut toiminnot
Tallennetut toiminnot ovat aivan kuten sisäänrakennetut toiminnot, paitsi että sinun on määritettävä tallennettu toiminto itse. Kun tallennettu toiminto on luotu, sitä voidaan käyttää SQL-käskyissä aivan kuten mitä tahansa muuta toimintoa. Tallennetun toiminnon luomisen perussyntaksi on esitetty alla
CREATE FUNCTION sf_name ([parameter(s)])RETURNS data typeDETERMINISTICSTATEMENTS
TÄSSÄ
- "CREATE FUNCTION sf_name ([parametri (t)]]) on pakollinen ja käskee MySQL-palvelinta luomaan toiminnon nimeltä" sf_name ", jossa on sulkeissa määritetyt valinnaiset parametrit.
- RETURNS-tietotyyppi on pakollinen ja määrittää tietotyypin, jonka funktion tulisi palauttaa.
- "DETERMINISTIC" tarkoittaa, että funktio palauttaa samat arvot, jos sille annetaan samat argumentit.
- "STATEMENTS" on toimintokoodi, jonka funktio suorittaa.
Katsotaan nyt käytännön esimerkkiä, joka toteuttaa sisäänrakennetun toiminnon. Oletetaan, että haluamme tietää, mitkä vuokratut elokuvat ovat palautuspäivän jälkeen. Voimme luoda tallennetun toiminnon, joka hyväksyy palautuspäivän parametrina ja vertaa sitä sitten MySQL-palvelimen nykyiseen päivämäärään. Jos nykyinen päivämäärä on pienempi kuin paluuelokuvan päivämäärä, palautamme "Ei", muuten palautamme "Kyllä". Alla esitetty komentosarja auttaa meitä saavuttamaan sen.
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|
Yllä olevan komentosarjan suorittaminen loi tallennetun toiminnon `sf_past_movie_return_date`.
Testataan nyt tallennettua toimintoamme.
SELECT `movie_id`,`membership_number`,`return_date`,CURDATE() ,sf_past_movie_return_date(`return_date`) FROM `movierentals`;
Yllä olevan komentosarjan suorittaminen MySQL-työpöydällä myflixdb: tä vastaan antaa meille seuraavat tulokset.
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 |
Käyttäjän määrittelemät toiminnot
MySQL tukee myös käyttäjän määrittämiä toimintoja, jotka laajentavat MySQL: ää. Käyttäjän määrittelemät toiminnot ovat toimintoja, jotka voit luoda ohjelmointikielellä, kuten C, C ++ jne., Ja lisätä ne sitten MySQL-palvelimeen. Kun ne on lisätty, niitä voidaan käyttää kuten mitä tahansa muuta toimintoa.
Yhteenveto
- Toimintojen avulla voimme parantaa MySQL: n ominaisuuksia.
- Toiminnot palauttavat aina arvon ja voivat vaihtoehtoisesti hyväksyä parametrit.
- Sisäänrakennetut toiminnot ovat toimintoja, jotka toimitetaan MySQL: n mukana. Ne voidaan luokitella niiden tietotyyppien mukaan, joita ne käyttävät, ts. Merkkijonot, päivämäärä ja sisäänrakennetut numeeriset toiminnot.
- Tallennetut toiminnot luodaan käyttäjän MySQL-palvelimella, ja niitä voidaan käyttää SQL-lauseissa.
- Käyttäjän määrittelemät toiminnot luodaan MySQL: n ulkopuolelle ja ne voidaan sisällyttää MySQL-palvelimeen.