Die in MySQL gespeicherten Funktionen werden verwendet, um Berechnungen oder Operationen mit Datensätzen und Datenfeldern zu kapseln, die aus einer SQL-Abfrage stammen und allgemeine Aufgaben oder Geschäftsregeln darstellen.
Ein großer Vorteil ist, dass sie wiederverwendbar sind und die Programmiersprache, in der die Funktionen entwickelt werden, über SQL-Anweisungen und bedingte oder sich wiederholende Strukturen besteht.
Im Gegensatz zu einer gespeicherten Prozedur können Sie eine gespeicherte Funktion in SQL-Anweisungen verwenden, in denen Sie einen Ausdruck verwenden, mit dem Sie bedingte Regeln erstellen können.
Sehen wir uns ein Beispiel an, in dem wir eine Datenbank einer Schule erstellen:
DATENBANK ERSTELLEN `college`Als nächstes erstellen wir eine Tabelle mit den Testergebnissen der Schüler
- - Tabellenstruktur für Tabelle `examnotes` - CREATE TABLE` examnotes` (`id` INT (11) NOT NULL AUTO_INCREMENT,` idalumno` INT (11) NOT NULL, `material id` INT (11) NOT NULL, `note1 ` DECIMAL (10,2) NOT NULL,` note2` DECIMAL (10,2) NOT NULL, `note3` DECIMAL (10,2) NOT NULL,` Average` DECIMAL (10,2) NOT NULL, `state` VARCHAR (100) NULL DEFAULT NULL, PRIMARY KEY (`id`)) COLLATE = 'latin1_swedish_ci' ENGINE = InnoDB - Indizes der Tabelle `notaseams` - ALTER TABLE` notasetest` ADD PRIMARY KEY (`id` ); Als nächstes fügen wir der Tabelle examnotes einige Daten hinzu - Datendump für die Tabelle `notasensam` INSERT IN`` notation exam` (`id`,` idalumno`, `subjectid`,` note1`, `note2`,` note3`, ` Durchschnitt`,` Zustand`) WERTE (1, 1000, 1, '8.00', '9.25', '7.00', '0.00', ''), (2, 1001, 1, '6.33', '8.50' , '8.00', '0.00', ''), (3, 1002, 1, '10.00',' 7.50',' 8.33',' 0.00',' '), (4, 1003, 2,' 4.50 ' , '2.00', '5.50', '0.00', ''), (5, 1004, 1, '3.50', '2.00', '4.00', '0.00', '');
Als Nächstes erstellen wir eine gespeicherte Funktion, die die gesamte Notentabelle durchgeht und die Durchschnittsnote für jeden Schüler nach Fach berechnet und die Tabelle aktualisiert, um anzugeben, ob sie bestanden oder nicht bestanden ist.
Wir können die Funktion aus Phpmyadmin oder einem beliebigen Editor erstellen, der es uns ermöglicht, SQL-Code zu schreiben;
CREATE DEFINER = `root` @` localhost` PROCEDURE `Durchschnitt berechnen` () SPRACHE SQL NICHT DETERMINISTISCH ENTHÄLT SQL SQL SECURITY DEFINER COMMENT '' BEGIN / * Ich deklariere Variablen für die Funktion * / DECLARE final BOOL DEFAULT FALSE; DECLARE-ID INT; DECLARE INT-Student; DECLARE INT Angelegenheit; ERKLÄREN Anmerkung1 FLOAT; ERKLÄREN Anmerkung2 FLOAT; ERKLÄREN Anmerkung3 FLOAT; DECLARE Abschlussball FLOAT; / * Ich deklariere ein Recordset oder einen Cursor mit den Daten aus der SQL-Abfrage * / DECLARE rslist CURSOR FÜR SELECT id, student id, material id, note1, note2, note3 aus Testnotizen; / * Ich deklariere eine Variable, um das Ende einer sich wiederholenden Schleife zu erkennen DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET final = TRUE; / * Ich öffne das Recordset, um die Datendurchquerung mit einer Schleife zu starten * / OPEN rslista; Schleife: LOOP FETCH rslist INTO ID, Schüler, Fach, Klasse1, Klasse2, Klasse3; / * Ich berechne den Durchschnitt * / set avg = (note1 + note2 + note3) / 3; / * Ich speichere es, indem ich die Tabelle aktualisiere * / Prüfungsnotation aktualisieren set Average = d where idalumno = Student and idmateria = Fach; / * Wenn die Note größer oder gleich 7 ist, aktualisiere ich den Status als Genehmigt, andernfalls lautet der Status fehlgeschlagen * / IF av> = 7 THEN update notaseams set status = 'Approved' wobei idalumno = Student und idmateria = Fach; ELSE-Prüfungsnotation aktualisieren Satzstatus = 'Fehlgeschlagen' wobei Schüler-ID = Schüler und Fach-ID = Fach; ENDE WENN; IF finalTHEN CLOSE rslist; LEAVE-Schleife; ENDE WENN; SCHLEIFE ENDE; ENDEDann können wir die Funktion mit dem folgenden Befehl ausführen:
CALL `Durchschnitt berechnen` ()Das Ergebnis ist die automatische Aktualisierung der Durchschnitts- und Statusspalten.
In MySQL gespeicherte Funktionen werden normalerweise für Berechnungen und Operationen verwendet, während gespeicherte Prozeduren normalerweise für die Ausführung von Geschäftsregeln verwendet werden.
Die Funktionen wirken sich normalerweise nicht auf die Struktur der Datenbank aus, aber um Berechnungen durchzuführen, ein Ergebnis zu vergleichen und zurückzugeben oder Daten in einer Tabelle in der Datenbank zu ändern, können wir auch einen Trigger erstellen, um die von einer Funktion vorgenommenen Änderungen zu kontrollieren oder zu überprüfen.
Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben