MySQL Funkciók: karakterlánc, numerikus, felhasználó által meghatározott, tárolt
Mik azok a függvények?
MySQL sokkal többre képes, mint adatok tárolása és visszakeresése. mi is tudunk manipulációkat hajt végre az adatokon lekérése vagy mentése előtt. Ahol MySQL A függvények bejönnek. A függvények egyszerűen kóddarabok, amelyek végrehajtanak bizonyos műveleteket, majd eredményt adnak vissza. Egyes funkciók paramétereket fogadnak el, míg mások nem fogadnak el paramétereket.
Nézzünk röviden egy példát MySQL funkció. Alapértelmezés szerint, MySQL dátum adattípusokat menti „ÉÉÉÉ-HH-NN” formátumban. Tegyük fel, hogy elkészítettünk egy alkalmazást, és a felhasználóink azt szeretnék, hogy a dátum „DD-MM-YYYY” formátumban kerüljön visszaadásra, használhatjuk MySQL ennek eléréséhez beépített DATE_FORMAT függvény. A DATE_FORMAT az egyik leggyakrabban használt függvény MySQL. A lecke kifejtése során részletesebben is megvizsgáljuk.
Miért használjunk függvényeket?
A bevezetőben bemutatott példa alapján a számítógép-programozásban jártas emberek azt gondolhatják: „Miért bánkódni MySQL Funkciók? Ugyanezt a hatást lehet elérni szkript-/programozási nyelvvel?” Igaz, ezt úgy érhetjük el, hogy beírunk néhány eljárást/függvényt az alkalmazási programba.
Visszatérve a bevezetőben szereplő DÁTUM példánkhoz, ahhoz, hogy felhasználóink a kívánt formátumban megkaphassák az adatokat, az üzleti rétegnek el kell végeznie a szükséges feldolgozást.
Ez akkor válik problémássá, ha az alkalmazást más rendszerekkel kell integrálni. Amikor használjuk MySQL függvényeket, mint például a DATE_FORMAT, akkor ezt a funkciót beágyazhatjuk az adatbázisba, és minden alkalmazás, amelynek szüksége van az adatokra, megkapja azokat a kívánt formátumban. Ez csökkenti az üzleti logika átdolgozását és csökkenti az adatok következetlenségeit.
Egy másik ok, amiért érdemes megfontolni a használatát MySQL funkciókat az a tény, hogy segíthet csökkenteni a hálózati forgalmat a kliens/szerver alkalmazásokban. A Business Layernek csak a tárolt funkciókat kell hívnia anélkül, hogy adatokat kellene manipulálnia. Átlagosan a funkciók használata nagymértékben javíthatja a rendszer teljesítményét.
A függvények típusai
Beépített funkciók
MySQL számos beépített funkcióval együtt érkezik. A beépített funkciók egyszerűen olyan funkciók, amelyeket már megvalósítottak a rendszerben MySQL szerver. Ezek a funkciók lehetővé teszik számunkra, hogy különböző típusú manipulációkat hajtsunk végre az adatokon. A beépített függvények alapvetően a következő leggyakrabban használt kategóriákba sorolhatók.
- Strings függvények – string adattípusokon működni
- Numerikus függvények – numerikus adattípusokon működni
- Dátum funkciók – dátum adattípusokkal működik
- Összesített függvények – az összes fenti adattípuson működni, és összesített eredményhalmazokat készíteni.
- Egyéb funkciók - MySQL más típusú beépített függvényeket is támogat, de leckénket csak a fent megnevezett függvényekre korlátozzuk.
Most nézzük meg részletesen a fent említett funkciók mindegyikét. A „Myflixdb” segítségével elmagyarázzuk a leggyakrabban használt funkciókat.
String függvények
Már megnéztük, mit csinálnak a karakterlánc-függvények. Megnézünk egy gyakorlati példát, amely ezeket használja. A filmek táblázatunkban a filmcímek kis- és nagybetűk kombinációjával vannak tárolva. Tegyük fel, hogy egy lekérdezési listát szeretnénk kapni, amely a filmcímeket nagybetűkkel adja vissza. Ehhez használhatjuk a „UCASE” függvényt. Paraméterként egy karakterláncot vesz fel, és az összes betűt nagybetűvé alakítja. Az alább látható szkript az „UCASE” funkció használatát mutatja be.
SELECT `movie_id`,`title`, UCASE(`title`) FROM `movies`;
ITT
- A UCASE(`title`) a beépített függvény, amely paraméterként veszi a címet, és nagybetűkkel adja vissza `nagybetűs_cím` aliasnévvel.
A fenti szkript végrehajtása MySQL munkapad a Myflixdb-vel szemben az alábbi eredményeket adja.
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 számos karakterlánc-függvényt támogat. Az összes beépített karakterlánc-függvény teljes listáját ezen a hivatkozáson találja http://dev.mysql.com/doc/refman/5.0/en/string-functions.html on MySQL weboldal.
Numerikus függvények
Mint korábban említettük, ezek a funkciók numerikus adattípusokon működnek. Az SQL utasításokban szereplő numerikus adatokon matematikai számításokat végezhetünk.
Számtani operátorok
MySQL támogatja a következő aritmatikai operátorokat, amelyek az SQL utasításokban történő számításokhoz használhatók.
Név | Leírás |
---|---|
DIV | Egész tagolás |
/ | osztály |
- | Kivonás |
+ | Kiegészítés |
* | Szorzás |
% vagy MOD | Modulus |
Nézzünk most példákat a fenti operátorok mindegyikére
Egész osztás (DIV)
SELECT 23 DIV 6 ;
A fenti szkript végrehajtása a következő eredményeket adja.
3
Osztálykezelő (/)
Nézzük most az osztás operátor példáját. Módosítjuk a DIV példát.
SELECT 23 / 6 ;
A fenti szkript végrehajtása a következő eredményeket adja.
3.8333
Kivonás operátor (-)
Nézzük most a kivonási operátor példáját. Ugyanazokat az értékeket fogjuk használni, mint az előző két példában
SELECT 23 - 6 ;
A fenti szkript végrehajtása 17-et ad nekünk
Operátor hozzáadása (+)
Nézzük most az összeadás operátor példáját. Módosítjuk az előző példát.
SELECT 23 + 6 ;
A fenti szkript végrehajtása 29-et ad nekünk
Szorzási operátor (*)
Nézzük most a szorzási operátor példáját. Ugyanazokat az értékeket fogjuk használni, mint az előző példákban.
SELECT 23 * 6 AS `multiplication_result`;
A fenti szkript végrehajtása a következő eredményeket adja.
szorzási_eredmény |
---|
138 |
Modulo operátor (-)
A modulo operátor elosztja N-t M-mel, és megadja a maradékot. Nézzük most a modulo operátor példáját. Ugyanazokat az értékeket fogjuk használni, mint az előző példákban.
SELECT 23 % 6 ;
OR
SELECT 23 MOD 6 ;
A fenti szkript végrehajtása 5
Nézzünk most meg néhány gyakori numerikus függvényt MySQL.
Emelet – ez a funkció eltávolítja a tizedesjegyeket egy számból, és a legközelebbi legkisebb számra kerekíti. Az alább látható szkript bemutatja a használatát.
SELECT FLOOR(23 / 6) AS `floor_result`;
A fenti szkript végrehajtása a következő eredményeket adja.
Emelet_eredmény |
---|
3 |
Round – ez a függvény egy számot tizedesjegyekkel a legközelebbi egész számra kerekít. Az alább látható szkript bemutatja a használatát.
SELECT ROUND(23 / 6) AS `round_result`;
A fenti szkript végrehajtása a következő eredményeket adja.
Kerek_eredmény |
---|
4 |
Karima – ezt a függvényt véletlen szám generálására használják, értéke minden alkalommal változik a függvény meghívásakor. Az alább látható szkript bemutatja a használatát.
SELECT RAND() AS `random_result`;
Tárolt funkciók
A tárolt függvények olyanok, mint a beépített függvények, kivéve, hogy a tárolt függvényt magának kell meghatároznia. A tárolt függvény létrehozása után ugyanúgy használható SQL utasításokban, mint bármely más függvény. A tárolt függvény létrehozásának alapvető szintaxisa az alábbiak szerint látható
CREATE FUNCTION sf_name ([parameter(s)]) RETURNS data type DETERMINISTIC STATEMENTS
ITT
- "FUNKCIÓ LÉTREHOZÁSA sf_name ([paraméter(ek)])" kötelező és elmondja MySQL szervert, hogy létrehozzon egy `sf_name' nevű függvényt a zárójelben megadott opcionális paraméterekkel.
- „RETURNS adattípus” kötelező, és megadja az adattípust, amelyet a függvénynek vissza kell adnia.
- "MEGHATÁROZÓ" azt jelenti, hogy a függvény ugyanazokat az értékeket adja vissza, ha ugyanazokat az argumentumokat adja meg.
- „NYILATKOZATOK” az az eljárási kód, amelyet a függvény végrehajt.
Nézzünk most egy gyakorlati példát, amely egy beépített függvényt valósít meg. Tegyük fel, hogy tudni akarjuk, mely kölcsönzött filmek vannak túl a visszatérési dátumon. Létrehozhatunk egy tárolt függvényt, amely elfogadja a visszatérési dátumot paraméterként, majd összehasonlítja az aktuális dátummal MySQL szerver. Ha az aktuális dátum kisebb, mint a film visszatérési dátuma, akkor a „Nem”-t adjuk vissza, ellenkező esetben „Igen”-t adunk vissza. Az alábbi forgatókönyv segít nekünk ennek elérésében.
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|
A fenti szkript végrehajtása létrehozta az `sf_past_movie_return_date` tárolt függvényt.
Teszteljük most a tárolt függvényünket.
SELECT `movie_id`,`membership_number`,`return_date`,CURDATE() ,sf_past_movie_return_date(`return_date`) FROM `movierentals`;
A fenti szkript végrehajtása MySQL munkapad a myflixdb ellen a következő eredményeket adja.
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 |
Felhasználó által definiált funkciók
MySQL támogatja a felhasználó által meghatározott funkciókat is, amelyek kiterjesztik MySQL. A felhasználó által definiált függvények olyan függvények, amelyeket egy programozási nyelv használatával hozhat létre, mint pl C, C++ stb., majd add hozzá őket MySQL szerver. Miután hozzáadták, ugyanúgy használhatók, mint bármely más funkció.
Összegzésként
- A funkciók lehetővé teszik számunkra, hogy fokozzuk a képességeit MySQL.
- A függvények mindig értéket adnak vissza, és opcionálisan elfogadhatnak paramétereket.
- A beépített funkciók olyan funkciók, amelyekkel együtt szállítjuk MySQL. Aszerint kategorizálhatók, hogy milyen adattípusokon dolgoznak, azaz karakterláncok, dátum és beépített numerikus függvények.
- A tárolt funkciókat a felhasználó hozza létre MySQL szerver, és SQL utasításokban használható.
- A felhasználó által meghatározott funkciók kívülről jönnek létre MySQL és beépíthető MySQL szervert.