MySQL funkciók: Karakterlánc, numerikus, felhasználó által definiált, tárolt

Anonim

Mik a funkciók?

A MySQL nem csak adatok tárolására és visszakeresésére képes . Az adatok lekérdezése vagy mentése előtt manipulációkat is végezhetünk . Itt jönnek létre a MySQL függvények. A függvények egyszerűen kóddarabok, amelyek végrehajtanak bizonyos műveleteket, majd eredményt adnak vissza. Egyes funkciók elfogadják a paramétereket, míg más funkciók nem fogadnak el paramétereket.

Nézzük meg röviden a MySQL függvény példáját. Alapértelmezés szerint a MySQL a dátum adattípusokat "ÉÉÉÉ-HH-NN" formátumban menti. Tegyük fel, hogy építettünk egy alkalmazást, és a felhasználóink ​​azt szeretnék, hogy a dátumot "NN-HH-ÉÉÉÉ" formátumban adják vissza, ennek eléréséhez a DATE_FORMAT beépített MySQL függvényt használhatjuk. A DATE_FORMAT az egyik leggyakrabban használt funkció a MySQL-ben. A lecke kibontakozása során részletesebben megvizsgáljuk.

Miért érdemes használni a függvényeket?

A bevezetőben bemutatott példa alapján a számítógépes programozásban jártas emberek gondolkodhatnak: "Miért zavarnám a MySQL funkciókat? Ugyanez a hatás elérhető a szkripteléssel / programozási nyelvvel is?" Igaz, hogy ezt úgy érhetjük el, hogy néhány eljárást / funkciót beírunk az alkalmazásba.

Visszatérve a BEVEZETÉS DATE példájához, hogy a felhasználók a kívánt formátumban kapják meg az adatokat, az üzleti rétegnek el kell végeznie a szükséges feldolgozást.

Ez akkor válik problémává, amikor az alkalmazásnak integrálódnia kell más rendszerekkel. Amikor olyan MySQL függvényeket használunk, mint a DATE_FORMAT, akkor beágyazhatjuk ezt a funkciót az adatbázisba, és minden olyan alkalmazás, amelyre szüksége van az adatokra, megkapja a szükséges formátumban. Ez csökkenti az üzleti logika újrafeldolgozását és az adatok inkonzisztenciáit.

A MySQL függvények használatának másik oka , hogy segíthet csökkenteni a hálózati forgalmat az ügyfél / szerver alkalmazásokban . A Business Layer-nek csak az adatok manipulálása nélkül kell hívnia a tárolt funkciókat. Átlagosan a funkciók használata nagymértékben javíthatja a rendszer teljes teljesítményét.

A funkciók típusai

Beépített funkciók

A MySQL számos beépített funkcióval rendelkezik. A beépített függvények egyszerűen a MySQL szerveren már megvalósított funkciók. Ezek a funkciók lehetővé teszik számunkra, hogy különböző típusú manipulációkat hajtsunk végre az adatokkal. 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ödnek
  • Numerikus függvények - numerikus adattípusokkal működnek
  • Dátumfunkciók - a dátum adattípusain működnek
  • Összesített függvények - működtetik a fenti adattípusokat, és összesített eredményhalmazokat készítenek.
  • Egyéb funkciók - A MySQL más típusú beépített funkciókat is támogat, de a leckét csak a fent megnevezett függvényekre korlátozzuk.

Most nézzük meg részletesen a fent említett funkciókat. A "Myflixdb" használatával elmagyarázzuk a leggyakrabban használt funkciókat.

Húrfüggvények

Már megnéztük, hogy a string függvények mit csinálnak. Megtekintünk egy gyakorlati példát, amely felhasználja őket. Filmtáblázatunkban a filmcímeket kis- és nagybetűk kombinációjával tároljuk. Tegyük fel, hogy szeretnénk lekérdezési listát kapni, amely a film címeit nagybetűvel adja vissza. Ehhez használhatjuk az "UCASE" funkciót. Paraméterként egy karakterláncot vesz fel, és az összes betűt nagybetűvé alakítja. Az alább látható szkript bemutatja az "UCASE" függvény használatát.

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

ITT

  • Az UCASE (`title ') a beépített függvény, amely a címet paraméterként veszi fel, és nagybetűvel adja vissza a` upper_case_title` álnévvel.

A fenti szkript futtatása a MySQL munkaasztalon a Myflixdb-vel szemben az alábbi eredményeket nyújtja nekünk.

 
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

A MySQL számos string funkciót támogat. Az összes beépített karakterlánc-függvény teljes listáját itt találja: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html a MySQL webhelyen.

Numerikus függvények

Mint korábban említettük, ezek a funkciók numerikus adattípusokon működnek. Matematikai számításokat hajthatunk végre az SQL utasítások numerikus adatain.

Aritematikai operátorok

A MySQL a következő számtani operátorokat támogatja, amelyek felhasználhatók az SQL utasítások számításainak végrehajtására.

Név

Leírás

DIV

Egész tagolás

/

Osztály

-

Kivonás

+

Kiegészítés

*

Szorzás

% vagy MOD

Modulus

Most nézzük meg a fenti operátorok példáit

Egész osztály (DIV)

SELECT 23 DIV 6 ;

A fenti parancsfájl végrehajtása a következő eredményeket adja nekünk.

3

Osztályüzemeltető (/)

Most nézzük meg a divízió operátor példáját. Módosítjuk a DIV példát.

SELECT 23 / 6 ;

A fenti parancsfájl végrehajtása a következő eredményeket adja nekünk.

3.8333

Kivonási operátor (-)

Most nézzük meg 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ásával 17-et kapunk

Összeadás operátor (+)

Most nézzük meg az összeadás operátor példáját. Módosítjuk az előző példát.

SELECT 23 + 6 ;

A fenti parancsfájl végrehajtásával 29-et kapunk

Szorzási operátor (*)

Most nézzük meg 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 parancsfájl végrehajtása a következő eredményeket adja nekünk.

szorzás_eredmény

138

Modulo operátor (-)

A modulo operátor osztja N-t M-mel, és megadja nekünk a maradékot. Most nézzük meg 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 ;

VAGY

SELECT 23 MOD 6 ;

A fenti szkript végrehajtása 5-öt ad

Most nézzük meg a MySQL néhány általános numerikus függvényét.

Emelet - ez a funkció eltávolítja a tizedesjegyeket a számokból, és a legközelebbi legkisebb számra kerekíti. Az alább látható szkript bemutatja használatát.

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

A fenti parancsfájl végrehajtása a következő eredményeket adja nekünk.

Emelet_eredmény

3

Kerek - ez a függvény tizedesjegyekkel kerekít egy számot a legközelebbi egész számra. Az alább látható szkript bemutatja használatát.

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

A fenti parancsfájl végrehajtása a következő eredményeket adja nekünk.

Kerek_eredmény

4

Rand - ez a függvény véletlenszám generálására szolgál, értéke minden alkalommal változik, amikor a függvény meghívásra kerül. Az alább látható szkript bemutatja használatát.

SELECT RAND() AS `random_result`;

Tárolt funkciók

A tárolt funkciók ugyanúgy vannak, mint a beépített funkciók, azzal a különbséggel, 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ó az 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ábbiakban látható

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

ITT

  • A "CREATE FUNCTION sf_name ([paraméter (ek)]]) kötelező kitölteni, és azt mondja a MySQL szervernek, hogy hozzon létre egy" sf_name "nevű függvényt a zárójelben megadott opcionális paraméterekkel.
  • A "RETURNS adattípus" kötelező és megadja azt az adattípust, amelyet a függvénynek vissza kell adnia.
  • A "DETERMINISTIC" azt jelenti, hogy a függvény ugyanazokat az értékeket adja vissza, ha ugyanazokat az argumentumokat adják meg neki.
  • A "STATEMENTS" az az eljárási kód, amelyet a függvény végrehajt.

Most nézzünk meg egy gyakorlati példát, amely egy beépített függvényt valósít meg. Tegyük fel, hogy szeretnénk tudni, hogy 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 a MySQL szerver aktuális dátumával. Ha az aktuális dátum kevesebb, mint a visszatérő film dátuma, akkor a "Nem" -t adjuk vissza, máskor pedig az "Igen" -et. Az alább látható szkript segít abban, hogy ezt elérjük.

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|

A fenti parancsfájl végrehajtásával létrehozta a `sf_past_movie_return_date` tárolt függvényt.

Most teszteljük a tárolt funkcióinkat.

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

A fenti parancsfájl futtatása a MySQL munkapadban a myflixdb fájlhoz 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

A MySQL a felhasználó által definiált funkciókat is támogatja, amelyek kibővítik a MySQL-t. A felhasználó által definiált függvények olyan funkciók, amelyeket létrehozhat egy programozási nyelv, például C, C ++ stb. Segítségével, majd hozzáadhatja a MySQL szerverhez. A hozzáadás után ugyanúgy használhatók, mint bármely más funkció.

Összegzés

  • A funkciók lehetővé teszik a MySQL képességeinek bővítését.
  • A függvények mindig adnak vissza egy értéket, és opcionálisan elfogadhatnak paramétereket is.
  • A beépített függvények olyan funkciók, amelyeket a MySQL tartalmaz. Osztályozhatók az általuk működtetett adattípusok, azaz karakterláncok, dátum és beépített numerikus függvények szerint.
  • A tárolt függvényeket a felhasználó a MySQL szerveren hozza létre, és SQL utasításokban használhatók.
  • A felhasználó által definiált függvények a MySQL-en kívül jönnek létre, és beépíthetők a MySQL-kiszolgálóba.