Funzioni MySQL: stringa, numerico, definito dall'utente, memorizzato

Anonim

Cosa sono le funzioni?

MySQL può fare molto di più che archiviare e recuperare i dati . Possiamo anche eseguire manipolazioni sui dati prima di recuperarli o salvarli. È qui che entrano in gioco le funzioni MySQL. Le funzioni sono semplicemente pezzi di codice che eseguono alcune operazioni e quindi restituiscono un risultato. Alcune funzioni accettano parametri mentre altre funzioni non accettano parametri.

Vediamo brevemente un esempio della funzione MySQL. Per impostazione predefinita, MySQL salva i tipi di dati della data nel formato "AAAA-MM-GG". Supponiamo di aver creato un'applicazione e che i nostri utenti desiderino che la data venga restituita nel formato "GG-MM-AAAA", possiamo utilizzare la funzione incorporata di MySQL DATE_FORMAT per ottenere ciò. DATE_FORMAT è una delle funzioni più utilizzate in MySQL. Lo esamineremo più in dettaglio man mano che spiegheremo la lezione.

Perché usare le funzioni?

Sulla base dell'esempio fornito nell'introduzione, le persone con esperienza nella programmazione di computer potrebbero pensare "Perché preoccuparsi delle funzioni MySQL? Lo stesso effetto può essere ottenuto con il linguaggio di scripting / programmazione?" È vero che possiamo ottenerlo scrivendo alcune procedure / funzioni nel programma applicativo.

Tornando al nostro esempio DATE nell'introduzione, affinché i nostri utenti ottengano i dati nel formato desiderato, il livello aziendale dovrà eseguire l'elaborazione necessaria.

Questo diventa un problema quando l'applicazione deve integrarsi con altri sistemi. Quando usiamo le funzioni di MySQL come DATE_FORMAT, possiamo avere quella funzionalità incorporata nel database e qualsiasi applicazione che necessita dei dati lo ottiene nel formato richiesto. Ciò riduce la rielaborazione nella logica aziendale e riduce le incongruenze dei dati.

Un altro motivo per cui dovremmo considerare l'utilizzo delle funzioni MySQL è il fatto che può aiutare a ridurre il traffico di rete nelle applicazioni client / server . Business Layer dovrà solo effettuare chiamate alle funzioni archiviate senza la necessità di manipolare i dati. In media, l'uso delle funzioni può aiutare a migliorare notevolmente le prestazioni complessive del sistema.

Tipi di funzioni

Funzioni integrate

MySQL viene fornito in bundle con una serie di funzioni integrate. Le funzioni integrate sono semplicemente funzioni già implementate nel server MySQL. Queste funzioni ci consentono di eseguire diversi tipi di manipolazioni sui dati. Le funzioni integrate possono essere fondamentalmente classificate nelle seguenti categorie più utilizzate.

  • Funzioni stringhe : operano su tipi di dati stringa
  • Funzioni numeriche : operano su tipi di dati numerici
  • Funzioni data : operano sui tipi di dati della data
  • Funzioni aggregate : operano su tutti i tipi di dati di cui sopra e producono set di risultati riepilogati.
  • Altre funzioni - MySQL supporta anche altri tipi di funzioni integrate, ma limiteremo la nostra lezione solo alle funzioni sopra menzionate.

Vediamo ora in dettaglio ciascuna delle funzioni sopra menzionate. Spiegheremo le funzioni più utilizzate utilizzando il nostro "Myflixdb".

Funzioni di stringa

Abbiamo già visto cosa fanno le funzioni di stringa. Vedremo un esempio pratico che li utilizza. Nella nostra tabella dei film, i titoli dei film vengono memorizzati utilizzando combinazioni di lettere maiuscole e minuscole. Supponiamo di voler ottenere un elenco di query che restituisca i titoli dei film in lettere maiuscole. Possiamo usare la funzione "UCASE" per farlo. Prende una stringa come parametro e converte tutte le lettere in maiuscolo. Lo script mostrato di seguito dimostra l'utilizzo della funzione "UCASE".

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

QUI

  • UCASE (`title`) è la funzione incorporata che prende il titolo come parametro e lo restituisce in lettere maiuscole con il nome alias` upper_case_title`.

L'esecuzione dello script sopra in MySQL workbench su Myflixdb ci dà i seguenti risultati mostrati di seguito.

 
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 supporta una serie di funzioni di stringa. Per un elenco completo di tutte le funzioni di stringa incorporate, fare riferimento a questo collegamento http://dev.mysql.com/doc/refman/5.0/en/string-functions.html sul sito Web MySQL.

Funzioni numeriche

Come accennato in precedenza, queste funzioni operano su tipi di dati numerici. Possiamo eseguire calcoli matematici su dati numerici nelle istruzioni SQL.

Operatori aritematici

MySQL supporta i seguenti operatori aritmatici che possono essere utilizzati per eseguire calcoli nelle istruzioni SQL.

Nome

Descrizione

DIV

Divisione intera

/

Divisione

-

Sottrazione

+

Aggiunta

*

Moltiplicazione

% o MOD

Modulo

Diamo ora un'occhiata agli esempi di ciascuno degli operatori precedenti

Divisione intera (DIV)

SELECT 23 DIV 6 ;

L'esecuzione dello script precedente ci dà i seguenti risultati.

3

Operatore di divisione (/)

Vediamo ora l'esempio dell'operatore di divisione. Modificheremo l'esempio DIV.

SELECT 23 / 6 ;

L'esecuzione dello script precedente ci dà i seguenti risultati.

3.8333

Operatore di sottrazione (-)

Vediamo ora l'esempio dell'operatore di sottrazione. Useremo gli stessi valori dei due esempi precedenti

SELECT 23 - 6 ;

L'esecuzione dello script sopra ci dà 17

Operatore di addizione (+)

Vediamo ora l'esempio dell'operatore di addizione. Modificheremo l'esempio precedente.

SELECT 23 + 6 ;

L'esecuzione dello script di cui sopra ci dà 29

Operatore di moltiplicazione (*)

Vediamo ora l'esempio dell'operatore di moltiplicazione. Useremo gli stessi valori degli esempi precedenti.

SELECT 23 * 6 AS `multiplication_result`;

L'esecuzione dello script precedente ci dà i seguenti risultati.

moltiplication_result

138

Operatore modulo (-)

L'operatore modulo divide N per M e ci fornisce il resto. Vediamo ora l'esempio dell'operatore modulo. Useremo gli stessi valori degli esempi precedenti.

SELECT 23 % 6 ;

O

SELECT 23 MOD 6 ;

L'esecuzione dello script sopra ci dà 5

Diamo ora un'occhiata ad alcune delle funzioni numeriche comuni in MySQL.

Piano : questa funzione rimuove i decimali da un numero e lo arrotonda al numero più basso più vicino. Lo script mostrato di seguito ne dimostra l'utilizzo.

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

L'esecuzione dello script precedente ci dà i seguenti risultati.

Floor_result

3

Round : questa funzione arrotonda un numero con posizioni decimali al numero intero più vicino. Lo script mostrato di seguito ne dimostra l'utilizzo.

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

L'esecuzione dello script precedente ci dà i seguenti risultati.

Round_result

4

Rand : questa funzione viene utilizzata per generare un numero casuale, il suo valore cambia ogni volta che viene chiamata la funzione. Lo script mostrato di seguito ne dimostra l'utilizzo.

SELECT RAND() AS `random_result`;

Funzioni memorizzate

Le funzioni memorizzate sono proprio come le funzioni incorporate, tranne per il fatto che devi definire tu stesso la funzione memorizzata. Una volta che una funzione memorizzata è stata creata, può essere utilizzata nelle istruzioni SQL proprio come qualsiasi altra funzione. La sintassi di base per la creazione di una funzione memorizzata è illustrata di seguito

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

QUI

  • "CREATE FUNCTION sf_name ([parameter (s)])" è obbligatorio e dice al server MySQL di creare una funzione chiamata `sf_name 'con parametri opzionali definiti tra parentesi.
  • "RETURNS data type" è obbligatorio e specifica il tipo di dati che la funzione deve restituire.
  • "DETERMINISTICO" significa che la funzione restituirà gli stessi valori se le vengono forniti gli stessi argomenti.
  • "STATEMENTS" è il codice procedurale eseguito dalla funzione.

Vediamo ora un esempio pratico che implementa una funzione incorporata. Supponiamo di voler sapere quali film noleggiati hanno superato la data di ritorno. Possiamo creare una funzione memorizzata che accetta la data di ritorno come parametro e quindi la confronta con la data corrente nel server MySQL. Se la data corrente è inferiore alla data del film di ritorno, restituiamo "No" altrimenti restituiamo "Sì". Lo script mostrato di seguito ci aiuta a raggiungere questo obiettivo.

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|

L'esecuzione dello script precedente ha creato la funzione memorizzata `sf_past_movie_return_date`.

Proviamo ora la nostra funzione memorizzata.

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

L'esecuzione dello script precedente nel workbench MySQL su myflixdb ci dà i seguenti risultati.

 
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

Funzioni definite dall'utente

MySQL supporta anche funzioni definite dall'utente che estendono MySQL. Le funzioni definite dall'utente sono funzioni che è possibile creare utilizzando un linguaggio di programmazione come C, C ++ ecc. E quindi aggiungerle al server MySQL. Una volta aggiunti, possono essere utilizzati come qualsiasi altra funzione.

Sommario

  • Le funzioni ci consentono di migliorare le capacità di MySQL.
  • Le funzioni restituiscono sempre un valore e possono opzionalmente accettare parametri.
  • Le funzioni integrate sono funzioni fornite con MySQL. Possono essere classificati in base ai tipi di dati su cui operano, ad esempio stringhe, data e funzioni numeriche incorporate.
  • Le funzioni memorizzate vengono create dall'utente all'interno del server MySQL e possono essere utilizzate nelle istruzioni SQL.
  • Le funzioni definite dall'utente vengono create al di fuori di MySQL e possono essere incorporate nel server MySQL.