MySQL-Funktionen und benutzerdefinierte Logik

MySQLMySQLBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie benutzerdefinierte Funktionen in MySQL erstellen und nutzen. Das Lab konzentriert sich darauf, wiederverwendbare Logik in Ihrer Datenbank zu kapseln, indem Sie eine Funktion zur Berechnung der Fläche eines Rechtecks erstellen.

Die Schritte umfassen die Verbindung zum MySQL-Server, die Erstellung einer Datenbank (falls erforderlich), die Definition der calculate_rectangle_area-Funktion mit Eingabeparametern für Länge und Breite sowie die Angabe des Rückgabedatentyps. Der Funktionskörper berechnet die Fläche und gibt das Ergebnis zurück. In den folgenden Schritten wird die Verwendung dieser Funktion in einer SELECT-Abfrage behandelt, die Ausgabe mit Beispieldaten getestet und schließlich die Funktion gelöscht.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mysql(("MySQL")) -.-> mysql/BasicKeywordsandStatementsGroup(["Basic Keywords and Statements"]) mysql/BasicKeywordsandStatementsGroup -.-> mysql/use_database("Database Selection") mysql/BasicKeywordsandStatementsGroup -.-> mysql/create_database("Database Creation") mysql/BasicKeywordsandStatementsGroup -.-> mysql/create_table("Table Creation") mysql/BasicKeywordsandStatementsGroup -.-> mysql/select("Data Retrieval") mysql/BasicKeywordsandStatementsGroup -.-> mysql/insert("Data Insertion") mysql/BasicKeywordsandStatementsGroup -.-> mysql/delete("Data Deletion") subgraph Lab Skills mysql/use_database -.-> lab-550908{{"MySQL-Funktionen und benutzerdefinierte Logik"}} mysql/create_database -.-> lab-550908{{"MySQL-Funktionen und benutzerdefinierte Logik"}} mysql/create_table -.-> lab-550908{{"MySQL-Funktionen und benutzerdefinierte Logik"}} mysql/select -.-> lab-550908{{"MySQL-Funktionen und benutzerdefinierte Logik"}} mysql/insert -.-> lab-550908{{"MySQL-Funktionen und benutzerdefinierte Logik"}} mysql/delete -.-> lab-550908{{"MySQL-Funktionen und benutzerdefinierte Logik"}} end

Erstellen einer Funktion zur Berechnung eines Werts

In diesem Schritt lernen Sie, wie Sie eine Funktion in MySQL erstellen. Funktionen sind eine leistungsstarke Möglichkeit, wiederverwendbare Logik in Ihrer Datenbank zu kapseln. Wir werden eine einfache Funktion erstellen, die die Fläche eines Rechtecks berechnet.

Zunächst verbinden wir uns mit dem MySQL-Server. Öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus:

mysql -u root -p

Sie werden zur Eingabe des Root-Passworts aufgefordert. Geben Sie das Passwort ein und drücken Sie die Eingabetaste.

Jetzt erstellen wir eine Datenbank, mit der wir arbeiten können. Wenn Sie bereits über eine Datenbank verfügen, die Sie verwenden möchten, können Sie diesen Schritt überspringen. Andernfalls führen Sie den folgenden SQL-Befehl aus:

CREATE DATABASE IF NOT EXISTS my_functions_db;
USE my_functions_db;

Als nächstes erstellen wir die Funktion. Die Syntax für die Erstellung einer Funktion in MySQL lautet wie folgt:

CREATE FUNCTION function_name (parameter1 data_type, parameter2 data_type, ...)
RETURNS return_data_type
DETERMINISTIC
BEGIN
  -- Function body
  RETURN return_value;
END;
  • function_name: Der Name der Funktion.
  • parameter1, parameter2, ...: Die Eingabeparameter der Funktion zusammen mit ihren Datentypen.
  • return_data_type: Der Datentyp des von der Funktion zurückgegebenen Werts.
  • DETERMINISTIC: Dieses Schlüsselwort gibt an, dass die Funktion für die gleichen Eingabewerte immer das gleiche Ergebnis zurückgibt. Dies ist für Optimierungszwecke wichtig.
  • BEGIN und END: Diese Schlüsselwörter umschließen den Funktionskörper.
  • RETURN return_value: Diese Anweisung gibt den von der Funktion berechneten Wert zurück.

Jetzt erstellen wir eine Funktion namens calculate_rectangle_area, die die Länge und Breite eines Rechtecks als Eingabe nimmt und dessen Fläche zurückgibt. Führen Sie den folgenden SQL-Befehl aus:

CREATE FUNCTION calculate_rectangle_area (length INT, width INT)
RETURNS INT
DETERMINISTIC
BEGIN
  DECLARE area INT;
  SET area = length * width;
  RETURN area;
END;

In dieser Funktion:

  • Wir deklarieren zwei Eingabeparameter, length und width, beide vom Typ INT.
  • Die Funktion gibt einen INT-Wert zurück, der die Fläche des Rechtecks darstellt.
  • Wir deklarieren eine lokale Variable area vom Typ INT, um die berechnete Fläche zu speichern.
  • Wir berechnen die Fläche, indem wir die Länge und die Breite multiplizieren und speichern das Ergebnis in der Variable area.
  • Schließlich geben wir den Wert der Variable area zurück.

Um zu überprüfen, ob die Funktion erfolgreich erstellt wurde, können Sie den folgenden SQL-Befehl ausführen:

SHOW FUNCTION STATUS LIKE 'calculate_rectangle_area';

Dieser Befehl zeigt Informationen über die calculate_rectangle_area-Funktion an, einschließlich ihres Namens, der Datenbank und des Erstellungsdatums.

Verwenden der Funktion in einer SELECT-Abfrage

In diesem Schritt lernen Sie, wie Sie die Funktion, die Sie im vorherigen Schritt erstellt haben, in einer SELECT-Abfrage verwenden. Dies ermöglicht es Ihnen, die Logik der Funktion auf Daten anzuwenden, die aus Ihren Datenbanktabellen abgerufen werden.

Stellen Sie zunächst sicher, dass Sie mit dem MySQL-Server verbunden sind und die my_functions_db-Datenbank (oder die Datenbank, in der Sie die Funktion erstellt haben) verwenden. Wenn Sie die Verbindung geschlossen haben, verbinden Sie sich erneut mit:

mysql -u root -p

Wählen Sie dann die Datenbank aus:

USE my_functions_db;

Jetzt erstellen wir eine Tabelle namens rectangles, um die Länge und Breite verschiedener Rechtecke zu speichern. Führen Sie den folgenden SQL-Befehl aus:

CREATE TABLE rectangles (
  id INT AUTO_INCREMENT PRIMARY KEY,
  length INT,
  width INT
);

Dieser Befehl erstellt eine Tabelle mit drei Spalten:

  • id: Eine automatisch inkrementierende Ganzzahl, die als Primärschlüssel dient.
  • length: Eine Ganzzahl, die die Länge des Rechtecks darstellt.
  • width: Eine Ganzzahl, die die Breite des Rechtecks darstellt.

Als nächstes fügen wir einige Beispieldaten in die rectangles-Tabelle ein. Führen Sie die folgenden SQL-Befehle aus:

INSERT INTO rectangles (length, width) VALUES (5, 10);
INSERT INTO rectangles (length, width) VALUES (7, 8);
INSERT INTO rectangles (length, width) VALUES (12, 3);

Jetzt, da wir einige Daten in der rectangles-Tabelle haben, können wir die calculate_rectangle_area-Funktion in einer SELECT-Abfrage verwenden, um die Fläche jedes Rechtecks zu berechnen. Führen Sie den folgenden SQL-Befehl aus:

SELECT id, length, width, calculate_rectangle_area(length, width) AS area FROM rectangles;

Diese Abfrage ruft die Spalten id, length und width aus der rectangles-Tabelle ab und ruft auch die calculate_rectangle_area-Funktion mit den Spalten length und width als Eingabe auf. Das Ergebnis des Funktionsaufrufs wird als area benannt.

Die Ausgabe der Abfrage wird eine Tabelle mit vier Spalten sein: id, length, width und area. Die Spalte area wird die berechnete Fläche jedes Rechtecks enthalten.

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

+----+--------+-------+------+
| id | length | width | area |
+----+--------+-------+------+
|  1 |      5 |    10 |   50 |
|  2 |      7 |     8 |   56 |
|  3 |     12 |     3 |   36 |
+----+--------+-------+------+

Dies zeigt, wie man eine Funktion in einer SELECT-Abfrage verwendet, um Berechnungen auf Daten aus einer Tabelle durchzuführen.

Testen der Funktionsausgabe mit Beispieldaten

In diesem Schritt werden wir die Ausgabe der Funktion mit verschiedenen Beispieldaten testen, um sicherzustellen, dass sie korrekt funktioniert. Wir werden neue Daten in die rectangles-Tabelle einfügen und dann die calculate_rectangle_area-Funktion verwenden, um die berechneten Flächen zu überprüfen.

Stellen Sie zunächst sicher, dass Sie mit dem MySQL-Server verbunden sind und die my_functions_db-Datenbank verwenden. Wenn Sie die Verbindung geschlossen haben, verbinden Sie sich erneut mit:

mysql -u root -p

Wählen Sie dann die Datenbank aus:

USE my_functions_db;

Jetzt fügen wir einige weitere Beispieldaten in die rectangles-Tabelle mit verschiedenen Werten für Länge und Breite ein. Führen Sie die folgenden SQL-Befehle aus:

INSERT INTO rectangles (length, width) VALUES (10, 10);
INSERT INTO rectangles (length, width) VALUES (2, 5);
INSERT INTO rectangles (length, width) VALUES (15, 4);

Diese Befehle fügen drei neue Zeilen in die rectangles-Tabelle mit den folgenden Werten ein:

  • Länge = 10, Breite = 10
  • Länge = 2, Breite = 5
  • Länge = 15, Breite = 4

Jetzt verwenden wir die SELECT-Abfrage mit der calculate_rectangle_area-Funktion, um die Fläche für alle Rechtecke, einschließlich der neu eingefügten, zu berechnen. Führen Sie den folgenden SQL-Befehl aus:

SELECT id, length, width, calculate_rectangle_area(length, width) AS area FROM rectangles;

Diese Abfrage wird alle Zeilen aus der rectangles-Tabelle abrufen und die Fläche für jedes Rechteck mit der calculate_rectangle_area-Funktion berechnen.

Die Ausgabe der Abfrage sollte jetzt die Flächen für die neuen Rechtecke enthalten:

+----+--------+-------+------+
| id | length | width | area |
+----+--------+-------+------+
|  1 |      5 |    10 |   50 |
|  2 |      7 |     8 |   56 |
|  3 |     12 |     3 |   36 |
|  4 |     10 |    10 |  100 |
|  5 |      2 |     5 |   10 |
|  6 |     15 |     4 |   60 |
+----+--------+-------+------+

Überprüfen Sie, ob die berechneten Flächen für die neuen Daten korrekt sind:

  • Ein Rechteck mit einer Länge von 10 und einer Breite von 10 hat eine Fläche von 100 (10 * 10 = 100).
  • Ein Rechteck mit einer Länge von 2 und einer Breite von 5 hat eine Fläche von 10 (2 * 5 = 10).
  • Ein Rechteck mit einer Länge von 15 und einer Breite von 4 hat eine Fläche von 60 (15 * 4 = 60).

Wenn die berechneten Flächen korrekt sind, bestätigt dies, dass die calculate_rectangle_area-Funktion wie erwartet funktioniert. Dieser Schritt trägt dazu bei, die Zuverlässigkeit Ihrer Funktion zu gewährleisten, indem Sie sie mit verschiedenen Eingaben testen.

Die Funktion löschen

In diesem Schritt lernen Sie, wie Sie die Funktion, die Sie zuvor erstellt haben, löschen können. Wenn Sie eine Funktion löschen, wird sie aus der Datenbank entfernt. Daher ist es wichtig, sicherzustellen, dass Sie sie nicht mehr benötigen, bevor Sie sie löschen.

Stellen Sie zunächst sicher, dass Sie mit dem MySQL-Server verbunden sind und die my_functions_db-Datenbank verwenden. Wenn Sie die Verbindung geschlossen haben, verbinden Sie sich erneut mit:

mysql -u root -p

Wählen Sie dann die Datenbank aus:

USE my_functions_db;

Um die calculate_rectangle_area-Funktion zu löschen, führen Sie den folgenden SQL-Befehl aus:

DROP FUNCTION IF EXISTS calculate_rectangle_area;
  • DROP FUNCTION: Dies ist der SQL-Befehl, der verwendet wird, um eine Funktion zu entfernen.
  • IF EXISTS: Diese Klausel verhindert, dass ein Fehler auftritt, wenn die Funktion nicht existiert. Es ist eine gute Praxis, diese Klausel einzubeziehen, um unerwartete Fehler zu vermeiden.
  • calculate_rectangle_area: Dies ist der Name der Funktion, die Sie löschen möchten.

Nachdem Sie diesen Befehl ausgeführt haben, wird die calculate_rectangle_area-Funktion aus der my_functions_db-Datenbank entfernt.

Um zu überprüfen, ob die Funktion gelöscht wurde, können Sie versuchen, aus der rectangles-Tabelle unter Verwendung der Funktion auszuwählen. Führen Sie den folgenden SQL-Befehl aus:

SELECT id, length, width, calculate_rectangle_area(length, width) AS area FROM rectangles;

Dieser Befehl sollte jetzt einen Fehler zurückgeben, da die calculate_rectangle_area-Funktion nicht mehr existiert. Die Fehlermeldung wird ähnlich wie folgt lauten: ERROR 1305 (42000): FUNCTION my_functions_db.calculate_rectangle_area does not exist.

Alternativ können Sie erneut den SHOW FUNCTION STATUS-Befehl verwenden:

SHOW FUNCTION STATUS LIKE 'calculate_rectangle_area';

Dieser Befehl sollte ein leeres Ergebnis zurückgeben, was darauf hinweist, dass die Funktion nicht mehr existiert.

Durch das Löschen der Funktion haben Sie sie aus der Datenbank entfernt und Ressourcen freigegeben. Denken Sie daran, nur Funktionen zu löschen, von denen Sie sicher sind, dass Sie sie nicht mehr benötigen.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie in MySQL eine Funktion erstellen, um wiederverwendbare Logik zu kapseln. Der Prozess umfasste die Verbindung zum MySQL-Server, die Erstellung einer Datenbank (falls erforderlich) und die Definition einer Funktion mit Eingabeparametern, einem Rückgabedatentyp und dem Schlüsselwort DETERMINISTIC.

Insbesondere haben Sie die calculate_rectangle_area-Funktion erstellt, die die Länge und Breite eines Rechtecks als Eingabe nimmt und dessen Fläche zurückgibt. Der Funktionskörper umfasste die Deklaration einer lokalen Variablen zur Speicherung der berechneten Fläche und die Verwendung der RETURN-Anweisung, um das Ergebnis zurückzugeben.