MySQL Funktionen: Zeichenfolge, Numerisch, Benutzerdefiniert, Gespeichert

Was sind Funktionen?

MySQL kann viel mehr als nur Daten speichern und abrufen. Wir kรถnnen auch Manipulationen an den Daten vornehmen bevor Sie es abrufen oder speichern. Das ist wo MySQL Hier kommen Funktionen ins Spiel. Funktionen sind einfach Codeteile, die bestimmte Operationen ausfรผhren und dann ein Ergebnis zurรผckgeben. Einige Funktionen akzeptieren Parameter, wรคhrend andere keine Parameter akzeptieren.

Schauen wir uns kurz ein Beispiel an MySQL Funktion. StandardmรครŸig, MySQL speichert Datumsdatentypen im Format โ€žJJJJ-MM-TTโ€œ. Angenommen, wir haben eine Anwendung erstellt und unsere Benutzer mรถchten, dass das Datum im Format โ€žTT-MM-JJJJโ€œ zurรผckgegeben wird, das wir verwenden kรถnnen MySQL integrierte Funktion DATE_FORMAT, um dies zu erreichen. DATE_FORMAT ist eine der am hรคufigsten verwendeten Funktionen in MySQL. Wir werden im weiteren Verlauf der Lektion genauer darauf eingehen.

Warum Funktionen verwenden?

Warum Funktionen verwenden?

Basierend auf dem Beispiel in der Einleitung fragen sich Menschen mit Erfahrung in der Computerprogrammierung mรถglicherweise: โ€žWarum sich die Mรผhe machen?โ€œ MySQL Funktionen? Der gleiche Effekt kann mit Skript-/Programmiersprachen erzielt werden?โ€œ Es ist wahr, dass wir das erreichen kรถnnen, indem wir einige Prozeduren/Funktionen in das Anwendungsprogramm schreiben.

Um auf unser DATE-Beispiel in der Einleitung zurรผckzukommen: Damit unsere Benutzer die Daten im gewรผnschten Format erhalten, muss die Business-Schicht die erforderliche Verarbeitung durchfรผhren.

Dies wird zu einem Problem, wenn die Anwendung in andere Systeme integriert werden muss. Wenn wir verwenden MySQL Funktionen wie das DATE_FORMAT, dann kรถnnen wir diese Funktionalitรคt in die Datenbank einbetten und jede Anwendung, die die Daten benรถtigt, erhรคlt sie im erforderlichen Format. Das Reduziert Nacharbeit in der Geschรคftslogik und reduziert Dateninkonsistenzen.

Ein weiterer Grund, warum wir die Verwendung in Betracht ziehen sollten MySQL Funktionen ist die Tatsache, dass es dazu beitragen kann, den Netzwerkverkehr in Client/Server-Anwendungen zu reduzieren. Die Business-Schicht muss nur die gespeicherten Funktionen aufrufen, ohne dass Daten manipuliert werden mรผssen. Im Durchschnitt kann die Verwendung von Funktionen dazu beitragen, die Gesamtsystemleistung erheblich zu verbessern.

Arten von Funktionen

Eingebaute Funktionen

MySQL wird mit einer Reihe integrierter Funktionen geliefert. Integrierte Funktionen sind einfach Funktionen, die bereits im integriert sind MySQL Server. Diese Funktionen ermรถglichen es uns, verschiedene Arten von Manipulationen an den Daten durchzufรผhren. Die integrierten Funktionen kรถnnen grundsรคtzlich in die folgenden am hรคufigsten verwendeten Kategorien eingeteilt werden.

  • Strings-Funktionen โ€“ mit String-Datentypen arbeiten
  • Numerische Funktionen โ€“ mit numerischen Datentypen arbeiten
  • Datumsfunktionen โ€“ mit Datumsdatentypen arbeiten
  • Aggregierte Funktionen โ€“ Bearbeiten Sie alle oben genannten Datentypen und erstellen Sie zusammengefasste Ergebnissรคtze.
  • Weitere Funktionen - MySQL unterstรผtzt auch andere Arten integrierter Funktionen, wir beschrรคnken unsere Lektion jedoch nur auf die oben genannten Funktionen.

Schauen wir uns nun jede der oben genannten Funktionen im Detail an. Wir erklรคren Ihnen die am hรคufigsten genutzten Funktionen anhand unserer โ€žMyflixdbโ€œ.

String-Funktionen

Wir haben uns bereits angeschaut, was String-Funktionen bewirken. Wir werden uns ein praktisches Beispiel ansehen, das sie verwendet. In unserer Filmtabelle werden die Filmtitel in Kombinationen aus Klein- und GroรŸbuchstaben gespeichert. Angenommen, wir mรถchten eine Abfrageliste erhalten, die die Filmtitel in GroรŸbuchstaben zurรผckgibt. Dazu kรถnnen wir die Funktion โ€žUCASEโ€œ verwenden. Es nimmt einen String als Parameter und wandelt alle Buchstaben in GroรŸbuchstaben um. Das unten gezeigte Skript demonstriert die Verwendung der Funktion โ€žUCASEโ€œ.

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

HIER KLICKEN

  • UCASE(`title`) ist die integrierte Funktion, die den Titel als Parameter akzeptiert und ihn in GroรŸbuchstaben mit dem Aliasnamen โ€župper_case_titleโ€œ zurรผckgibt.

Ausfรผhren des obigen Skripts in MySQL Workbench gegen Myflixdb liefert uns die folgenden, unten dargestellten Ergebnisse.

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 unterstรผtzt eine Reihe von String-Funktionen. Eine vollstรคndige Liste aller integrierten String-Funktionen finden Sie unter diesem Link http://dev.mysql.com/doc/refman/5.0/en/string-functions.html on MySQL Webseite.

Numerische Funktionen

Wie bereits erwรคhnt, arbeiten diese Funktionen mit numerischen Datentypen. Wir kรถnnen in den SQL-Anweisungen mathematische Berechnungen mit numerischen Daten durchfรผhren.

Arithemische Operatoren

MySQL unterstรผtzt die folgenden arithmischen Operatoren, die zum Durchfรผhren von Berechnungen in den SQL-Anweisungen verwendet werden kรถnnen.

Name Beschreibung
DIV Ganzzahlige Division
/ Anwendungen
- Subtraktion
+ Zusatz
* Vervielfรคltigen
% oder MOD Modul

Schauen wir uns nun Beispiele fรผr jeden der oben genannten Operatoren an.

Ganzzahldivision (DIV)

SELECT 23 DIV 6 ;

Die Ausfรผhrung des obigen Skripts fรผhrt zu den folgenden Ergebnissen.

3

Divisionsoperator (/)

Schauen wir uns nun das Beispiel mit dem Divisionsoperator an. Wir werden das DIV-Beispiel รคndern.

SELECT 23 / 6 ;

Die Ausfรผhrung des obigen Skripts fรผhrt zu den folgenden Ergebnissen.

3.8333

Subtraktionsoperator (-)

Schauen wir uns nun das Beispiel mit dem Subtraktionsoperator an. Wir verwenden die gleichen Werte wie in den beiden vorherigen Beispielen.

SELECT 23 - 6 ;

Die Ausfรผhrung des obigen Skripts ergibt 17

Additionsoperator (+)

Schauen wir uns nun das Beispiel fรผr den Additionsoperator an. Wir werden das vorherige Beispiel modifizieren.

SELECT 23 + 6 ;

Die Ausfรผhrung des obigen Skripts ergibt 29

Multiplikationsoperator (*)

Schauen wir uns nun das Beispiel mit dem Multiplikationsoperator an. Wir verwenden dieselben Werte wie in den vorherigen Beispielen.

SELECT 23 * 6 AS `multiplication_result`;

Die Ausfรผhrung des obigen Skripts fรผhrt zu den folgenden Ergebnissen.

multiplication_result
138

Modulo-Operator (-)

Der Modulo-Operator dividiert N durch M und gibt uns den Rest. Sehen wir uns nun das Beispiel des Modulo-Operators an. Wir verwenden dieselben Werte wie in den vorherigen Beispielen.

SELECT 23 % 6 ;

OR

SELECT 23 MOD 6 ;

Das Ausfรผhren des obigen Skripts ergibt 5

Schauen wir uns nun einige der hรคufigsten numerischen Funktionen an MySQL.

Boden โ€“ diese Funktion entfernt Dezimalstellen aus einer Zahl und rundet sie auf die nรคchstniedrigere Zahl. Das unten gezeigte Skript demonstriert seine Verwendung.

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

Die Ausfรผhrung des obigen Skripts fรผhrt zu den folgenden Ergebnissen.

Floor_result
3

Rund โ€“ diese Funktion rundet eine Zahl mit Dezimalstellen auf die nรคchste ganze Zahl. Das unten gezeigte Skript demonstriert seine Verwendung.

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

Die Ausfรผhrung des obigen Skripts fรผhrt zu den folgenden Ergebnissen.

Round_result
4

Rand โ€“ Mit dieser Funktion wird eine Zufallszahl generiert, deren Wert sich bei jedem Aufruf der Funktion รคndert. Das unten gezeigte Skript demonstriert seine Verwendung.

SELECT RAND() AS `random_result`;

Gespeicherte Funktionen

Gespeicherte Funktionen รคhneln integrierten Funktionen, auรŸer dass Sie die gespeicherte Funktion selbst definieren mรผssen. Sobald eine gespeicherte Funktion erstellt wurde, kann sie wie jede andere Funktion in SQL-Anweisungen verwendet werden. Die grundlegende Syntax zum Erstellen einer gespeicherten Funktion ist wie folgt

CREATE FUNCTION sf_name ([parameter(s)])
   RETURNS data type
   DETERMINISTIC
   STATEMENTS

HIER KLICKEN

  • โ€žCREATE FUNCTION sf_name ([Parameter(s)])โ€œ ist obligatorisch und erzรคhlt MySQL Server, um eine Funktion namens โ€žsf_nameโ€œ mit optionalen Parametern zu erstellen, die in Klammern definiert sind.
  • โ€žRETURNS-Datentypโ€œ ist obligatorisch und gibt den Datentyp an, den die Funktion zurรผckgeben soll.
  • โ€žDETERMINISTISCHโ€œ bedeutet, dass die Funktion dieselben Werte zurรผckgibt, wenn ihr dieselben Argumente รผbergeben werden.
  • โ€žERKLร„RUNGENโ€œ ist der prozedurale Code, den die Funktion ausfรผhrt.

Schauen wir uns nun ein praktisches Beispiel an, das eine eingebaute Funktion implementiert. Angenommen, wir mรถchten wissen, welche ausgeliehenen Filme das Rรผckgabedatum รผberschritten haben. Wir kรถnnen eine gespeicherte Funktion erstellen, die das Rรผckgabedatum als Parameter akzeptiert und es dann mit dem aktuellen Datum in MySQL Server. Wenn das aktuelle Datum vor dem nรคchsten Filmdatum liegt, geben wir โ€žNeinโ€œ zurรผck, andernfalls geben wir โ€žJaโ€œ zurรผck. Das unten gezeigte Skript hilft uns dabei.

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|

Durch die Ausfรผhrung des obigen Skripts wurde die gespeicherte Funktion โ€žsf_past_movie_return_dateโ€œ erstellt.

Testen wir nun unsere gespeicherte Funktion.

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

Ausfรผhren des obigen Skripts in MySQL Workbench gegen myflixdb liefert uns folgende Ergebnisse.

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

Benutzerdefinierte Funktionen

MySQL Unterstรผtzt auch benutzerdefinierte Funktionen, die erweitert werden kรถnnen MySQL. Benutzerdefinierte Funktionen sind Funktionen, die Sie mit einer Programmiersprache erstellen kรถnnen, z C, C++ usw. und fรผgen Sie sie dann hinzu zu MySQL Server. Sobald sie hinzugefรผgt wurden, kรถnnen sie wie jede andere Funktion verwendet werden.

Zusammenfassung

  • Mithilfe von Funktionen kรถnnen wir die Fรคhigkeiten von erweitern MySQL.
  • Funktionen geben immer einen Wert zurรผck und kรถnnen optional Parameter akzeptieren.
  • Integrierte Funktionen sind Funktionen, die im Lieferumfang enthalten sind MySQL. Sie kรถnnen nach den Datentypen kategorisiert werden, mit denen sie arbeiten, d. h. Zeichenfolgen, Datumsangaben und numerische integrierte Funktionen.
  • Gespeicherte Funktionen werden vom Benutzer darin erstellt MySQL Server und kann in SQL-Anweisungen verwendet werden.
  • Benutzerdefinierte Funktionen werden auรŸerhalb erstellt MySQL und kann integriert werden MySQL Server.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: