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

  • 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
/ Division
- 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

  • „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.