Was sind Funktionen?
MySQL kann viel mehr als nur Daten speichern und abrufen . Wir können die Daten auch manipulieren, bevor wir sie abrufen oder speichern. Hier kommen MySQL-Funktionen ins Spiel. Funktionen sind einfach Codeteile, die einige Operationen ausführen und dann ein Ergebnis zurückgeben. Einige Funktionen akzeptieren Parameter, während andere Funktionen keine Parameter akzeptieren.
Schauen wir uns kurz ein Beispiel für die MySQL-Funktion an. Standardmäßig speichert MySQL 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. Dazu können wir die in MySQL integrierte Funktion DATE_FORMAT verwenden. DATE_FORMAT ist eine der am häufigsten verwendeten Funktionen in MySQL. Wir werden es uns genauer ansehen, während wir die Lektion entfalten.
Warum Funktionen verwenden?
Anhand des in der Einleitung gegebenen Beispiels denken Personen mit Erfahrung in der Computerprogrammierung möglicherweise: "Warum sollten MySQL-Funktionen gestört werden? Der gleiche Effekt kann mit der Skript- / Programmiersprache erzielt werden." Es ist wahr, dass wir dies erreichen können, indem wir einige Prozeduren / Funktionen in das Anwendungsprogramm schreiben.
Zurück zu unserem DATE-Beispiel in der Einführung: 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 MySQL-Funktionen wie DATE_FORMAT verwenden, können wir diese Funktionalität in die Datenbank einbetten, und jede Anwendung, die die Daten benötigt, erhält sie im erforderlichen Format. Dies reduziert die Nacharbeit in der Geschäftslogik und reduziert Dateninkonsistenzen.
Ein weiterer Grund, warum wir die Verwendung von MySQL-Funktionen in Betracht ziehen sollten, ist die Tatsache, dass dies dazu beitragen kann, den Netzwerkverkehr in Client / Server-Anwendungen zu reduzieren . Business Layer muss nur die gespeicherten Funktionen aufrufen, ohne dass Daten bearbeitet 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. Eingebaute Funktionen sind einfach Funktionen, die bereits auf dem MySQL-Server implementiert sind. Mit diesen Funktionen können wir verschiedene Arten von Manipulationen an den Daten durchführen. Die eingebauten Funktionen können grundsätzlich in die folgenden am häufigsten verwendeten Kategorien eingeteilt werden.
- Strings-Funktionen - arbeiten mit String-Datentypen
- Numerische Funktionen - arbeiten mit numerischen Datentypen
- Datumsfunktionen - arbeiten mit Datumsdatentypen
- Aggregierte Funktionen - Arbeiten Sie mit allen oben genannten Datentypen und erstellen Sie zusammengefasste Ergebnismengen.
- Andere Funktionen - MySQL unterstützt auch andere Arten von integrierten Funktionen, aber wir werden unsere Lektion nur auf die oben genannten Funktionen beschränken.
Schauen wir uns nun jede der oben genannten Funktionen im Detail an. Wir werden die am häufigsten verwendeten Funktionen mit unserer "Myflixdb" erklären.
String-Funktionen
Wir haben uns bereits angesehen, was String-Funktionen tun. Wir werden uns ein praktisches Beispiel ansehen, das sie verwendet. In unserer Filmtabelle werden die Filmtitel mit Kombinationen aus Klein- und Großbuchstaben gespeichert. Angenommen, wir möchten eine Abfrageliste erhalten, die die Filmtitel in Großbuchstaben zurückgibt. Wir können die "UCASE" -Funktion verwenden, um dies zu tun. Es nimmt eine Zeichenfolge als Parameter und konvertiert alle Buchstaben in Großbuchstaben. 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 verwendet und ihn in Großbuchstaben mit dem Aliasnamen` large_case_title` zurückgibt.
Wenn Sie das obige Skript in der MySQL-Workbench für die Myflixdb ausführen, erhalten Sie die folgenden 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 Zeichenfolgenfunktionen. Eine vollständige Liste aller integrierten Zeichenfolgenfunktionen finden Sie unter diesem Link http://dev.mysql.com/doc/refman/5.0/en/string-functions.html auf der MySQL-Website.
Numerische Funktionen
Wie bereits erwähnt, arbeiten diese Funktionen mit numerischen Datentypen. Wir können mathematische Berechnungen für numerische Daten in den SQL-Anweisungen durchführen.
Arithematische Operatoren
MySQL unterstützt die folgenden arithmatischen Operatoren, mit denen Berechnungen in den SQL-Anweisungen durchgeführt werden können.
Name |
Beschreibung |
---|---|
DIV |
Ganzzahlige Division |
/. |
Teilung |
- - |
Subtraktion |
+ |
Zusatz |
* * |
Multiplikation |
% oder MOD |
Modul |
Schauen wir uns nun Beispiele für jeden der oben genannten Operatoren an
Integer Division (DIV)
SELECT 23 DIV 6 ;
Wenn Sie das obige Skript ausführen, erhalten Sie die folgenden Ergebnisse.
3
Abteilungsbetreiber (/)
Schauen wir uns nun das Beispiel für den Divisionsoperator an. Wir werden das DIV-Beispiel modifizieren.
SELECT 23 / 6 ;
Wenn Sie das obige Skript ausführen, erhalten Sie die folgenden Ergebnisse.
3,8333
Subtraktionsoperator (-)
Schauen wir uns nun das Beispiel des Subtraktionsoperators an. Wir werden die gleichen Werte wie in den beiden vorherigen Beispielen verwenden
SELECT 23 - 6 ;
Wenn Sie das obige Skript ausführen, erhalten Sie 17
Additionsoperator (+)
Schauen wir uns nun das Beispiel für den Additionsoperator an. Wir werden das vorherige Beispiel ändern.
SELECT 23 + 6 ;
Wenn Sie das obige Skript ausführen, erhalten Sie 29
Multiplikationsoperator (*)
Schauen wir uns nun das Beispiel des Multiplikationsoperators an. Wir werden die gleichen Werte wie in den vorherigen Beispielen verwenden.
SELECT 23 * 6 AS `multiplication_result`;
Wenn Sie das obige Skript ausführen, erhalten Sie die folgenden Ergebnisse.
Multiplikationsergebnis |
138 |
Modulo-Operator (-)
Der Modulo-Operator teilt N durch M und gibt uns den Rest. Schauen wir uns nun das Modulo-Operator-Beispiel an. Wir werden die gleichen Werte wie in den vorherigen Beispielen verwenden.
SELECT 23 % 6 ;
ODER
SELECT 23 MOD 6 ;
Wenn Sie das obige Skript ausführen, erhalten Sie 5
Schauen wir uns nun einige der gängigen numerischen Funktionen in MySQL an.
Etage - Diese Funktion entfernt Dezimalstellen von einer Zahl und rundet sie auf die nächstniedrigere Zahl. Das unten gezeigte Skript demonstriert seine Verwendung.
SELECT FLOOR(23 / 6) AS `floor_result`;
Wenn Sie das obige Skript ausführen, erhalten Sie die folgenden Ergebnisse.
Floor_result |
3 |
Runden - 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`;
Wenn Sie das obige Skript ausführen, erhalten Sie die folgenden Ergebnisse.
Round_result |
4 |
Rand - Diese Funktion wird verwendet, um eine Zufallszahl zu generieren. Ihr Wert ändert sich jedes Mal, wenn die Funktion aufgerufen wird. Das unten gezeigte Skript demonstriert seine Verwendung.
SELECT RAND() AS `random_result`;
Gespeicherte Funktionen
Gespeicherte Funktionen sind wie eingebaute Funktionen, nur 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 lautet wie folgt
CREATE FUNCTION sf_name ([parameter(s)])RETURNS data typeDETERMINISTICSTATEMENTS
HIER
- "CREATE FUNCTION sf_name ([parameter (s)])" ist obligatorisch und weist den MySQL-Server an, eine Funktion mit dem Namen "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.
- "DETERMINISTIC" bedeutet, dass die Funktion dieselben Werte zurückgibt , wenn dieselben Argumente angegeben werden.
- "STATEMENTS" ist der Prozedurcode, 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 nach dem Rückgabedatum liegen. Wir können eine gespeicherte Funktion erstellen, die das Rückgabedatum als Parameter akzeptiert und es dann mit dem aktuellen Datum auf dem MySQL-Server vergleicht. Wenn das aktuelle Datum kleiner als das Rückgabedatum des Films ist, 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)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|
Durch Ausführen 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`;
Wenn Sie das obige Skript in der MySQL-Workbench gegen die myflixdb ausführen, erhalten Sie die folgenden 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 MySQL erweitern. Benutzerdefinierte Funktionen sind Funktionen, die Sie mit einer Programmiersprache wie C, C ++ usw. erstellen und dann dem MySQL-Server hinzufügen können. Einmal hinzugefügt, können sie wie jede andere Funktion verwendet werden.
Zusammenfassung
- Mit Funktionen können wir die Funktionen von MySQL verbessern.
- Funktionen geben immer einen Wert zurück und können optional Parameter akzeptieren.
- Eingebaute Funktionen sind Funktionen, die mit MySQL ausgeliefert werden. Sie können nach den Datentypen kategorisiert werden, mit denen sie arbeiten, dh Zeichenfolgen, Datum und numerische integrierte Funktionen.
- Gespeicherte Funktionen werden vom Benutzer auf dem MySQL-Server erstellt und können in SQL-Anweisungen verwendet werden.
- Benutzerdefinierte Funktionen werden außerhalb von MySQL erstellt und können in den MySQL-Server integriert werden.