Funkcje przechowywane w MySQL

Spisie treści

Funkcje przechowywane w MySQL służą do enkapsulacji obliczeń lub operacji z rekordami i polami danych, które są pobierane z zapytania SQL i są typowymi zadaniami lub regułami biznesowymi.

Wielką zaletą jest to, że są one wielokrotnego użytku, a język programowania, w którym tworzone są funkcje, to instrukcje SQL i struktury warunkowe lub powtarzalne.

W przeciwieństwie do procedury składowanej, funkcji składowanej można używać w instrukcjach SQL, w których używa się wyrażenia, które umożliwia tworzenie reguł warunkowych.

Zobaczmy przykład jak tworzymy bazę danych szkoły:

 TWORZENIE BAZY DANYCH `kolegium`
Następnie tworzymy tabelę z wynikami testów uczniów
 - - Struktura tabeli dla tabeli `przypisy do egzaminów` - CREATE TABLE` przypisy do egzaminów` (`id` INT (11) NOT NULL AUTO_INCREMENT,` idalumno` INT (11) NOT NULL, `id materiału` INT (11) NOT NULL, `note1 ` DECIMAL (10,2) NIE NULL,` uwaga2` DECIMAL (10,2) NIE NULL, `note3` DECIMAL (10,2) NIE NULL,` średnia` DECIMAL (10,2) NIE NULL, `stan` VARCHAR (100) NULL DEFAULT NULL, PRIMARY KEY (`id`)) COLLATE = 'latin1_swedish_ci' ENGINE = InnoDB - Indeksy tabeli `notaseams` - ALTER TABLE` notasetest` ADD PRIMARY KEY (`id` ); Następnie dodajemy dane do tabeli egzaminnotes - Zrzut danych dla tabeli `notasensam` INSERT INTO` egzamin notacji` (`id`,` idalumno`, `subjectid`,` note1`, `note2`,` note3`, ` średnia`,` stan`) WARTOŚCI (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', '');

Następnie utworzymy zapisaną funkcję, która przejdzie przez całą tabelę ocen i obliczy średnią ocen dla każdego ucznia według przedmiotu i zaktualizujemy tabelę, aby wskazać, czy jest to zaliczony lub niezaliczony.

Możemy stworzyć funkcję z Phpmyadmin lub dowolnego edytora, który pozwala nam pisać kod SQL;

 CREATE DEFINER = `root` @` localhost` PROCEDURA `oblicz średnią` () LANGUAGE SQL NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' BEGIN / * Deklaruję zmienne dla funkcji * / DECLARE final BOOL DEFAULT FALSE; ZADEKLAROWAĆ identyfikator INT; ZADEKLAROWAĆ INT student; ZADEKLAROWAĆ INT sprawa; ZADEKLAROWAĆ uwaga1 FLOAT; ZADEKLAROWAĆ uwaga2 FLOAT; ZADEKLARUJ uwaga3 FLOAT; ZADEKLAROWAĆ bal FLOAT; / * deklaruję zestaw rekordów lub kursor z danymi z zapytania sql * / DECLARE rslist CURSOR FOR SELECT id, id studenta, id materiału, note1, note2, note3 z notatek testowych; / * Deklaruję zmienną do wykrywania końca powtarzającej się pętli DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET final = TRUE; / * Otwieram zestaw rekordów, aby rozpocząć przechodzenie danych za pomocą pętli * / OPEN rslista; pętla: LOOP FETCH rslist INTO id, student, przedmiot, grade1, grade2, grade3; / * obliczam średnią * / ustaw avg = (note1 + note2 + note3) / 3; / * zapisuję go aktualizując tabelę * / aktualizuję notację egzaminacyjną ustaw średnia = d gdzie idalumno = student i idmateria = przedmiot; / * Jeśli ocena jest większa lub równa 7, aktualizuję status jako Zatwierdzony, w przeciwnym razie status będzie Niepowodzenie * / IF av> = 7 THEN update notaseams set status = 'Approved' gdzie idalumno = student i idmateria = przedmiot; ELSE aktualizacja zestawu notacji egzaminu status = 'Niezdany', gdzie identyfikator studenta = student i identyfikator przedmiotu = przedmiot; KONIEC JEŚLI; JEŚLI koniecTO ZAMKNIJ rslista; ZOSTAW pętlę; KONIEC JEŚLI; PĘTLA KOŃCOWA; KONIEC
Następnie możemy wykonać funkcję za pomocą następującego polecenia:
 CALL `oblicz średnią` ()
Rezultatem będzie automatyczna aktualizacja kolumn średniej i statusu.

Funkcje przechowywane w MySQL są zwykle używane do obliczeń i operacji, podczas gdy procedury przechowywane są zwykle używane do wykonywania reguł biznesowych.

Funkcje zwykle nie wpływają na strukturę bazy danych, ale aby wykonać jakieś obliczenia, porównać i zwrócić wynik lub zmodyfikować dane w tabeli w bazie danych, możemy również utworzyć wyzwalacz do kontroli lub audytu zmian wprowadzanych przez funkcję.

Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave