Содержание

Создание хранимых процедур в MySQL

Хранимые процедуры — это определяемый пользователем список предварительно скомпилированных инструкций SQL, которые сохраняются и используются по запросу в банке данных MySQL для выполнения определенного процесса базы данных. Это означает, что существует вероятность повторного использования сценария снова и снова. У процедуры действительно есть заголовок, набор параметров и инструкция из SQL, так что хранимая процедура может работать на основе значения (значений) переданного параметра. Хранимые процедуры должны выполняться с использованием фразы CALL. В этом руководстве давайте подробно рассмотрим процесс создания новых хранимых процедур в предложении MySQL CREATE PROCEDURE. Итак, приступим.

Содержание

  1. Создать хранимую процедуру с помощью Workbench
  2. Создайте хранимую процедуру через оболочку командной строки
  3. Пример 1: Хранимая процедура без параметров
  4. Пример 2: Хранимая процедура с одним параметром
  5. Пример 3: Хранимая процедура с несколькими параметрами
  6. Заключение

Создать хранимую процедуру с помощью Workbench

Откройте только что установленную MySQL Workbench 8. 0 и подключите ее к корневой базе данных localhost.

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

Когда вы исследуете опцию «Таблицы», вы найдете список таблиц в виде сетки. Как показано ниже, у нас есть таблица «социальные».

Щелкните правой кнопкой мыши параметр «Сохраненная процедура» и выберите параметр «Создать хранимую процедуру», как показано на рисунке.

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

Теперь вы можете редактировать этот запрос по своему желанию. Мы называем хранимую процедуру «detail» при получении данных из таблицы «social», где ее значение в столбце «Website» эквивалентно значению «Instagram». Это означает, что процедура хранения при выполнении будет отображать только те записи из этой таблицы, где «веб-сайт» — «Instagram». Щелкните по кнопке Применить.

Вы получите экран предварительного просмотра, где вы можете изменить или изменить свой запрос, если это необходимо. Вы можете увидеть полный синтаксис вновь созданной хранимой процедуры через Workbench. Нажмите кнопку «Применить», чтобы выполнить его.

Если в запросе нет ошибок, он будет работать правильно, как показано ниже. Нажмите на кнопку «Готово».

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

Когда вы выполните эту процедуру, она покажет вам, что единственными записями, имеющими значение столбца «Веб-сайт», является «Instagram», как показано ниже.

Создайте хранимую процедуру через оболочку командной строки

Откройте клиентскую оболочку командной строки MySQL 8.0 и введите пароль MySQL внизу.

Предположим, у нас есть таблица с именем «запись» в схеме базы данных «данные». Давайте проверим его записи с помощью команды SELECT следующим образом:

>> SELECT * FROM data. record;

Используйте команду «использовать данные», чтобы использовать базу данных, в которую вы хотите добавить хранимую процедуру.

>> use data;

Пример 1: Хранимая процедура без параметров

Чтобы создать процедуру без параметра, вы должны создать ее с помощью команды CREATE PROCEDURE, перед которой стоит ключевое слово «DELIMITER». Затем мы создаем процедуру с именем «Фильтр» без параметров. Он выбирает все записи из таблицы «запись», где в столбце «Страна» в конце значений стоит «ia». Процесс должен быть завершен ключевым словом «END».

Мы будем использовать предложение CALL для выполнения хранимой процедуры в командной строке. После выполнения команды CALL мы получаем следующие результаты. Вы можете видеть, что запрос должен получить только те записи, в которых столбец «Страна» имеет «ia» в конце значений.

Пример 2: Хранимая процедура с одним параметром

Пришло время сгенерировать процедуру с одним параметром. Для этого используйте запрос CREATE PROCEDURE с ключевым словом DELIMITER. Итак, мы должны создать процедуру «Rec», которая принимает одно значение в качестве входного аргумента, в котором в этом примере в параметрах пользователя указана переменная «Var1». Начните процедуру с ключевого слова BEGIN. Оператор SELECT используется для выборки всех записей из таблицы ’record’, где столбец ’Name’ имеет то же значение, что и в ’Var1′. Это сопоставление записей. Завершите хранимую процедуру ключевым словом «END», за которым следует знак «&&».

Сначала запустите запрос DELIMITER, чтобы хранимая процедура подготовилась. После этого выполните запрос CALL, после которого укажите имя процедуры и значение ее входного аргумента в фигурных скобках. Вам просто нужно запустить команду, показанную ниже, и вы получите результат. Как мы и предусмотрели в параметрах «Зафар», поэтому после сравнения мы получили такой результат.

Пример 3: Хранимая процедура с несколькими параметрами

Давайте посмотрим, как работает процедура, когда ей предоставлено несколько параметров. Не забудьте использовать ключевое слово «DELIMITER» вместе со знаками «&&». Используйте команду CREATE PROCEDURE, чтобы создать процедуру «New». Эта процедура будет принимать в параметрах два аргумента, например, «var1» и «var2». Начните процедуру с предложения BEGIN. Теперь это что-то новенькое. Предложение SELECT снова выбирает все записи из таблицы ’record’. Первый аргумент, переданный пользователем, будет сопоставлен со значениями столбца «Имя». С другой стороны, второй аргумент, переданный пользователем, будет сопоставлен со значениями столбца «Страна». Если записи совпадают, он будет извлекать все данные из последовательных строк. Процедура будет завершена ключевым словом «END».

Используйте ключевое слово DELIMITER, чтобы активировать процедуру. После этого выполните предложение CALL, за которым следует имя хранимой процедуры. Которое является «New» вместе со значениями параметров. Из изображения ниже видно, что запрос будет извлекать только запись таблицы «запись», в которой совпадают оба значения, введенные пользователем.

Заключение

В этом руководстве вы узнали о различных способах создания хранимой процедуры в MySQL Workbench и клиентской оболочке командной строки MySQL, например, о хранимой процедуре с параметрами и без них.

Хранимые процедуры MySQL {Создание, список, изменение и удаление}

Введение

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

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

В этом руководстве вы научитесь создавать, перечислять, изменять и удалять хранимые процедуры.

Предварительные требования

  • MySQL Server и MySQL Workbench установлены
  • Учетная запись пользователя MySQL с привилегиями root

Что такое хранимые процедуры в MySQL?

Хранимые процедуры MySQL являются предварительно скомпилированными операторами SQL , хранящимися в базе данных. Это подпрограммы, содержащие имя, список параметров и операторы SQL.

Все системы реляционных баз данных поддерживают хранимые процедуры и не требуют дополнительных пакетов среды выполнения.

Как использовать хранимые процедуры?

Для вызова хранимых процедур можно использовать оператор CALL или другие хранимые процедуры. При первом вызове хранимой процедуры MySQL ищет ее в каталоге базы данных, компилирует код, помещает его в кэш-память и выполняет его.

Последующие запуски в том же сеансе выполняют хранимые процедуры из кэш-памяти, что делает их чрезвычайно полезными для повторяющихся задач.

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

Хранимые процедуры могут также включать IF , CASE и LOOP операторы потока управления , которые процедурно реализуют код.

Создать хранимую процедуру

Создать хранимую процедуру двумя способами:

1. Используйте MySQL Shell

Используйте следующий синтаксис для создания хранимой процедуры в MySQL:

 DELIMITER //
CREATE PROCEDURE имя_процедуры ( IN | OUT | INOUT имя_параметра тип_данных_параметра (длина), … )
НАЧИНАТЬ
    Операторы SQL
КОНЕЦ //
РАЗДЕЛИТЕЛЬ ;
 

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

Здесь первый аргумент DELIMITER устанавливает разделитель по умолчанию на // , а последний аргумент DELIMITER снова устанавливает его на точку с запятой

6 ; . Чтобы использовать несколько операторов, укажите разные разделители, например $$

.

Имя процедуры следует после аргумента CREATE PROCEDURE . После имени процедуры используйте круглые скобки, чтобы указать параметры, которые будут использоваться в процедуре, имя параметра, тип данных и длину данных. Разделяйте каждый параметр запятой.

Режимы параметров :

  • IN – Используйте для передачи параметра в качестве ввода. Когда он определен, запрос передает аргумент хранимой процедуре. Значение параметра всегда защищено.
  • OUT – Используется для передачи параметра в качестве вывода. Вы можете изменить значение внутри хранимой процедуры, и новое значение будет передано вызывающей программе.
  • INOUT – Комбинация из IN и OUT параметры. Вызывающая программа передает аргумент, и процедура может изменить параметр INOUT , передав новое значение обратно в программу.

Например:

Выполните хранимую процедуру, вызвав ее:

 CALL имя_процедуры; 

Запрос возвращает результаты хранимой процедуры.

2. Использовать MySQL Workbench

Другой способ создать хранимую процедуру — использовать Мастер MySQL Workbench. Мастер интуитивно понятен и упрощает процесс, поскольку вам не нужно размещать разделители или беспокоиться о формате.

Выполните следующие действия:

Шаг 1: Щелкните правой кнопкой мыши Хранимые процедуры в окне Navigator MySQL Workbench и выберите Создать хранимую процедуру… , чтобы запустить мастер.

Шаг 2: Укажите имя процедуры и введите код в блоке BEGIN END .

Шаг 3: Просмотрите код и нажмите

Применить .

Шаг 4: Подтвердите выполнение, нажав Применить и создать процедуру, нажав Готово .

Шаг 5: Выполните процедуру, чтобы проверить, работает ли она. Создайте новую вкладку SQL для выполнения запросов.

Шаг 6: ВЫЗВАТЬ процедуру на вкладке SQL и нажать

Выполнить .

Если ошибки не возвращаются, MySQL выполняет хранимую процедуру и отображает результаты.

Список хранимых процедур

Существует три способа просмотреть список всех хранимых процедур:

1. Использовать MySQL Shell

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

 SHOW PROCEDURE STATUS [LIKE 'pattern' | WHERE search_condition] 

Оператор SHOW PROCEDURE STATUS возвращает длинный вывод. Оператор отображает имена и характеристики хранимых процедур, к которым у вас есть доступ на сервере.

Прокрутите вывод, чтобы найти процедуры, которые в настоящее время находятся на сервере.

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

Например:

Аргумент WHERE позволяет перечислить хранимые процедуры только в определенной базе данных.

Например:

В этом примере инструкция возвращает только хранимые процедуры для ’ customer_list ’ база данных.

2. Использовать словарь данных

База данных information_schema содержит таблицу с именем подпрограмм , в которой содержится информация о хранимых процедурах и функциях, связанных со всеми базами данных на текущем сервере MySQL.

Используйте следующий синтаксис для просмотра всех хранимых процедур для базы данных:

 SELECT
    имя_подпрограммы
ОТ
    information_schema.routines
ГДЕ
    подпрограмма_тип = 'ПРОЦЕДУРА'
        И процедура_схема = 'имя_базы_данных';
 

3. Используйте MySQL Workbench

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

Шаг 1 : Дважды щелкните базу данных, которую вы хотите использовать, в разделе Navigator .

Шаг 2 : Разверните раскрывающийся список Хранимые процедуры .

Этот элемент показывает все хранимые процедуры для текущей базы данных.

Изменить хранимую процедуру

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

Изменить хранимую процедуру двумя способами:

1. Использовать MySQL Shell

Изменить характеристику процедуры с помощью ALTER PROCEDURE 9Заявление 0006. Например, мы можем добавить комментарий к ранее созданной процедуре. Синтаксис:

 ALTER PROCEDURE имя_процедуры
COMMENT 'Вставьте сюда комментарий';
 

2. Использовать MySQL Workbench

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

MySQL Workbench удаляет существующую хранимую процедуру, а создает новую после внесения изменений.

Выполните следующие действия:

Шаг 1: В разделе «Навигатор» щелкните правой кнопкой мыши хранимую процедуру, которую необходимо изменить. Выберите элемент Изменить хранимую процедуру… .

Шаг 2: Когда откроется вкладка, внесите необходимые изменения в существующую хранимую процедуру и нажмите Применить .

Шаг 3: Появится окно просмотра SQL Script , показывающее процесс — удаление существующей хранимой процедуры и создание новой, содержащей изменения.

Нажмите Применить , а затем Готово в следующем окне, чтобы выполнить сценарий.

Удалить хранимую процедуру

Чтобы удалить (удалить) процедуру:

1. Использовать MySQL Shell

Удалите хранимую процедуру с сервера с помощью оператора DROP PROCEDURE .

Основной синтаксис:

 DROP PROCEDURE [ЕСЛИ СУЩЕСТВУЕТ] имя_хранимой_процедуры; 

ЕСЛИ СУЩЕСТВУЕТ 9Параметр 0006 удаляет хранимую процедуру, только если она существует на сервере. Введите имя хранимой процедуры вместо синтаксиса имя_хранимой_процедуры .

Например:

Поскольку на сервере нет процедуры с именем ‘ test ’, в выходных данных указано, что затронуто 0 строк и указанная процедура не существует.

Удаление несуществующей процедуры без параметра IF EXISTS возвращает ошибку.

2. Использовать MySQL Workbench

Чтобы удалить хранимую процедуру с помощью MySQL Workbench, выполните следующие действия:

Шаг 1: Разверните элемент «Хранимые процедуры» в разделе «Навигатор». Щелкните правой кнопкой мыши хранимую процедуру, которую хотите удалить, и выберите Удалить хранимую процедуру… в контекстном меню.

Шаг 2: В окне подтверждения щелкните Drop Now , чтобы удалить хранимую процедуру.

Это действие безвозвратно удаляет процедура.

Преимущества и недостатки хранимых процедур MySQL

Хранимые процедуры имеют несколько преимуществ и недостатков, поскольку они адаптированы к конкретным потребностям. Ниже приведены некоторые преимущества и недостатки.

Преимущества использования хранимых процедур

Преимущества хранимых процедур:

Уменьшение сетевого трафика

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

Повышенная безопасность

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

Централизованная бизнес-логика

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

Недостатки использования хранимых процедур

Недостатки хранимых процедур:

Использование ресурсов

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

Нет переносимости

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

Устранение неполадок и тестирование

MySQL не предоставляет утилит для тестирования и отладки хранимых процедур, поэтому их отладка может быть затруднена. Разработка и поддержка хранимых процедур требуют обширных знаний. Это является проблемой для новых разработчиков и приводит к дополнительным затратам на обслуживание.

Заключение

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

Создание хранимых процедур в MySQL

Хранимые процедуры представляют собой определяемый пользователем список предварительно скомпилированных инструкций SQL, которые сохраняются и используются по требованию в банке данных MySQL для выполнения определенного процесса базы данных. Это означает, что возможно повторное использование сценария снова и снова. Процедура имеет заголовок, набор параметров и оператор SQL(-ов), так что хранимая процедура может работать на основе значения (значений) переданного параметра. Хранимые процедуры должны выполняться с использованием фразы CALL. В этом руководстве давайте шаг за шагом рассмотрим процесс создания новых хранимых процедур в предложении MySQL CREATE PROCEDURE. Итак, давайте начнем.

Создать хранимую процедуру через Workbench:

Откройте только что установленную версию MySQL Workbench 8.0 и соедините ее с корневой базой данных localhost.

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

При изучении параметра «Таблицы» вы найдете список таблиц в виде сетки. Как показано ниже, у нас есть таблица «social».

Щелкните правой кнопкой мыши параметр «Хранимая процедура» и выберите параметр «Создать хранимую процедуру», как показано на рисунке.

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

Теперь вы можете редактировать этот запрос по своему желанию. Мы назовем хранимую процедуру «подробно», получая данные из таблицы «социальные», где ее значение в столбце «Веб-сайт» эквивалентно «Instagram». Это означает, что процедура хранения после выполнения будет отображать только те записи из этой таблице, где «веб-сайт» — «Instagram». Нажмите кнопку «Применить».

Вы получите экран предварительного просмотра, где вы можете изменить или изменить свой запрос, если это необходимо. Вы можете увидеть полный синтаксис вновь созданной хранимой процедуры через Workbench. Нажмите кнопку «Применить», чтобы выполнить его.

Если в запросе нет ошибок, он будет работать правильно, как показано ниже. Нажмите на кнопку Готово.

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

Когда вы выполните эту процедуру, она покажет вам, что единственными записями, имеющими значение столбца «Веб-сайт», является «Instagram», как показано ниже.

Создать хранимую процедуру через оболочку командной строки:

Откройте клиентскую оболочку командной строки MySQL 8.0 и введите пароль MySQL внизу.

Предположим, у нас есть таблица с именем «запись» в схеме базы данных «данные». Проверим его записи командой SELECT следующим образом:

>> SELECT * FROM data.record;

Используйте команду «использовать данные», чтобы использовать базу данных, в которую вы хотите добавить хранимую процедуру.

>> использовать данные;

Пример 01: Хранимая процедура без параметров

Чтобы создать процедуру без параметров, вы должны создать ее с помощью команды CREATE PROCEDURE, перед которой стоит ключевое слово «DELIMITER». Затем мы создаем процедуру с именем «Фильтр» без параметров. Он извлекает все записи из таблицы «запись», где столбец «Страна» имеет «ia» в конце своих значений. Процесс должен быть завершен ключевым словом «КОНЕЦ».

Мы будем использовать предложение CALL для выполнения хранимой процедуры в командной строке. После запуска команды CALL мы получаем следующие результаты. Вы можете видеть, что запрос должен извлекать только те записи, где столбец «Страна» имеет «ia» в конце своих значений.

Пример 02: хранимая процедура с одним параметром

Самое время сгенерировать процедуру с одним параметром. Для этого используйте запрос CREATE PROCEDURE, возглавляемый ключевым словом «DELIMITER». Итак, мы должны создать процедуру «Rec», которая принимает одно значение в качестве входного аргумента, в котором в этом примере используется переменная «Var1» пользователя в ее параметры. Начните процедуру с ключевого слова «НАЧАТЬ». Оператор SELECT используется для выборки всех записей из таблицы «record», где столбец «Name» имеет то же значение, что и в «Var1». Это сопоставление записей. Завершите хранимую процедуру ключевым словом «END», за которым следуют знаки «&&».


Сначала запустите запрос DELIMITER для подготовки хранимой процедуры. После этого выполните запрос CALL, за которым в фигурных скобках следует имя процедуры и значение ее входного аргумента. Вам просто нужно запустить показанную ниже команду, и вы получите результаты. Так как мы указали «Зафар» в наших параметрах, поэтому после сравнения мы получили такой результат.

Пример 03: хранимая процедура с несколькими параметрами

Давайте посмотрим, как работает процедура, если ей предоставлено несколько параметров. Не забудьте использовать ключевое слово «DELIMITER» вместе со знаками «&&». Используйте команду CREATE PROCEDURE, чтобы создать процедуру «Новая». Эта процедура будет принимать два аргумента в своих параметрах, например. «вар1» и «вар2». Начните процедуру с предложения BEGIN. Теперь это что-то новое. Предложение SELECT снова извлекает все записи из таблицы «record».