Функции, хранящиеся в MySQL

{title}

Функции, хранящиеся в MySQL, используются для инкапсуляции вычислений или операций с записями и полями данных, которые взяты из запроса SQL и являются общими задачами или бизнес-правилами.

Большим преимуществом является то, что они могут использоваться повторно, а язык программирования, на котором разрабатываются функции, - это операторы SQL и условные или повторяющиеся структуры.

В отличие от хранимой процедуры, вы можете использовать функцию, хранящуюся в операторах SQL, где используется выражение, позволяющее создавать условные правила.

Давайте посмотрим на пример, мы создаем базу данных школы:

 CREATE DATABASE `школа` 
Далее мы создаем таблицу с примечаниями студенческого экзамена
 - - Структура таблицы для таблицы `notasexamenes` - CREATE TABLE` notasexamenes` (` id` INT (11) NOT NULL AUTO_INCREMENT, `idalum` INT (11) NOT NULL, ` idmateria` INT (11) NOT NULL, `note1` DECIMAL (10.2) NOT NULL, ` note2` DECIMAL (10.2) NOT NULL, `note3` DECIMAL (10.2) NOT NULL, ` среднее` DECIMAL (10.2) NOT NULL, `status` VARCHAR (100) NULL ПО УМОЛЧАНИЮ NULL, ПЕРВИЧНЫЙ КЛЮЧ (` id`)) COLLATE = "latin1_swedish_ci" ENGINE = InnoDB - Табличные индексы `notasexamenes` - ALTER TABLE` notasexamenes` ДОБАВИТЬ ПЕРВИЧНЫЙ КЛЮЧ (` id` ); Затем мы добавляем некоторые данные в таблицу notasexamenes - дамп данных для таблицы `notasexamenes` INSERT INTO` notasexamenes` (` id`, `idalum`, ` idmateria`, `note1`, ` note2`, `note3`, «средний», «статус») ЗНАЧЕНИЯ (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», «»); 

{title}

Затем мы создадим сохраненную функцию, которая будет охватывать всю таблицу оценок и вычислять среднюю оценку каждого учащегося по предмету и обновлять таблицу, чтобы указать, одобрено ли это или отклонено.

Мы можем создать функцию из Phpmyadmin или любого редактора, который позволяет писать код SQL;

{title}

 CREATE DEFINER = `root` @` localhost` ПРОЦЕДУРА `вычисление среднего` () ЯЗЫК SQL НЕ ДЕТЕРМИНИСТИЧЕСКИЙ СОДЕРЖИТ КОММЕНТАРИЙ ОПРЕДЕЛЕНИЯ БЕЗОПАСНОСТИ SQL SQL '' BEGIN / * Объявить переменные для функции * / DECLARE final BOOL DEFAULT FALSE; ОБЪЯВИТЬ id INT; ОБЪЯВИТЬ INT студенту; ОБЪЯВИТЬ материю INT; ЗАЯВИТЕ примечание1 FLOAT; ЗАЯВИТЕ записку2 FLOAT; ЗАЯВИТЕ записку 3 FLOAT; ОБЪЯВИТЬ выпускной плавать; / * Я объявляю набор записей или курсор с данными запроса sql * / DECLARE rslist CURSOR FOR SELECT id, idalumno, idmateria, note1, note2, note3 из нота-шестименцев; / * Я объявляю переменную для определения конца повторяющегося цикла. ОБЪЯВИТЬ ПРОДОЛЖИТЬ HANDLER FOR SQLSTATE '02000' SET final = TRUE; / * Я открываю набор записей, чтобы начать путь данных с помощью цикла * / OPEN rslist; цикл: LOOP FETCH rslist INTO id, учащийся, предмет, класс 1, класс 2, класс 3; / * Рассчитать среднее значение * / установить выпускной = = (примечание1 + примечание2 + примечание3) / 3; / * Я сохраняю это, обновляя таблицу * / update notasexamenes set среднее = d, где idalumno = студент и idmateria = предмет; / * Если оценка больше или равна 7, я обновляю статус как Одобренный, но статус будет Отклонен * / IF prom> = 7 ТОГДА обновлять notasexamenes set status = "Approved", где idalum = student и idmateria = subject; ELSE update notasexamenes set status = "Устаревший", где idalumno = студент и idmateria = предмет; END IF; ЕСЛИ окончательно ЗАКРЫТЬ rslist; ВЫЙТИ из петли; END IF; КОНЕЦ ЦИКЛА; END 
Затем мы можем выполнить функцию, используя следующую команду:
 ЗВОНИТЕ `рассчитать среднее` () 
Результатом будет автоматическое обновление среднего и статусного столбцов.

{title}

Функции, хранящиеся в MySQL, обычно используются для вычислений и операций, в то время как хранимые процедуры обычно используются для выполнения бизнес-правил.

Функции обычно не влияют на структуру базы данных, но для выполнения некоторых вычислений, сравнения и возврата результата или изменения данных в таблице базы данных мы также можем создать триггер или триггер для управления или аудита. изменения, которые делает функция.

  • 0