- •Работа с сервером MySql при помощи терминального клиента mysql.Exe
- •Введение
- •Подсоединение к серверу и отсоединение от него
- •Создание пользователейMySqLи назначение прав доступа
- •Использованиеmysqlв пакетном режиме
- •Выполнение запросов
- •Создание и выбор базы данных
- •Работа с таблицами Типы данных столбцов
- •Просмотр существующих таблиц
- •Создание таблицы
- •Просмотр структуры таблицы
- •Модификация структуры таблицы
- •Переименование таблицы
- •Добавление данных в таблицу
- •Обновление (модификация) данных в таблице
- •Удаление строк в таблице
- •Удаление таблицы
- •Определение ключей в бд Определение первичных ключей
- •Определение внешних ключей
- •Задание на лабораторную работу
- •Содержание отчета
- •Работа с сервером MySql при помощи клиента dbForge Studio for MySql
- •Введение
- •Создание соединения и подключение к серверу бд
- •Создание и редактирование таблиц
- •Определение внешних ключей
- •Просмотр и редактирование данных
- •Построение диаграммы бд
- •Экспорт схемы и данных
- •Экспорт схемы и данных вDbForge Studio for MySql версии 4.5
- •Задание на лабораторную работу
- •Содержание отчета
- •Разработка хранимых процедур и функций на сервереMySql
- •Введение
- •Создание, запуск и удаление простой процедуры
- •Создание, запуск и удаление простой функции
- •Простые и системные переменные
- •Параметры процедур и функций
- •Операторы управления ходом выполнения программы
- •Курсоры
- •Задание на лабораторную работу
- •Содержание отчета
- •Исключения и триггеры
- •Исключения
- •ОператорSignal
- •Триггеры
- •Задание на лабораторную работу
- •Содержание отчета
- •Работа с сервером МуSqLвVisualStudio2010
- •Введение
- •Создание проекта и подключение к базе данных
- •Просмотр и редактирование данных при помощиdataGridView
- •Визуальное проектирование интерфейса для работы со связанными данными
- •Работа с изображениями в бд
- •Задание на лабораторную работу
- •Разработкаweb-приложений дляMySqLна языкеPhp
- •Установка и настройкаDenver
- •Соединение с бд и вывод данных
- •Задание на лабораторную работу
Создание, запуск и удаление простой функции
Для создания простой процедуры в клиенте mysql.exeможно выполнить следующие операторы:
DELIMITER //
CREATE FUNCTION Hello_World()
RETURNS VARCHAR(20)
BEGIN
RETURN ‘Hello, world!’;
END
//
Для запуска функции необходимо ввести
SELECT Hello_World()//

Простые и системные переменные
Объявить переменную в хранимой подпрограмме можно в любом месте тела подпрограммы (внутри блока BEGIN..END). Синтаксис оператора объявления переменной:
DECLAREимя [, имя] ... тип_данных [DEFAULTзначение]
Объявить переменную в хранимой подпрограмме можно в любом месте тела подпрограммы. Если параметр DEFAULTотсутствует, то переменная инициализируется со значениемNULL.
Для присвоения значения переменной может быть использован оператор SET. В следующем примере переменнойSприсваивается текстовое значение, которое затем выводится на экран:
CREATE PROCEDURE Hello_World()
BEGIN
DECLARE S VARCHAR(20);
SET S=‘Hello, world!’;
SELECT(S);
END
//
Результат вызова процедуры на выполнение:

Иногда бывает необходимо присвоить переменной значение, возвращаемое в результате запроса. Это можно сделать при помощи оператора SELECT..INTO. При этом запрос должен возвращать только одну строку. Если запрос возвращает пустой результат, это приведет к ошибке 1329 (No data). Если запрос содержит более одной строки, это приведет к ошибке 1172 (Result consisted of more than one row). Количество строк, возвращаемых запросом, можно ограничить опцией LIMITоператораSELECT. Данная опция имеет два параметра. Первый параметр указывает смещение возвращаемого набора строк относительно начала, второй – количество возвращаемых строк. При использовании опции только с одним параметром он интерпретируется как количество возвращаемых строк от начала результата. Таким образом, совместно с оператором SELECT..INTO можно использовать опциюLIMIT1. Следующая процедура выводит наименование самой тяжелой детали:
CREATEPROCEDUREHeavy()
BEGIN
DECLARE S VARCHAR(20);
SELECT weight INTO S FROM Parts ORDER BY Weight DESC LIMIT 1;
SELECT(S);
END
//

В процессе выполнения оператора SELECT..INTO выполняется неявное приведение типа возвращаемого запросом значения типу переменной:
CREATE PROCEDURE Parts_count()
BEGIN
DECLARE S VARCHAR(20);
SELECT count(*) INTO S FROM Parts;
SELECT(S);
END
//

Разница между простыми и системными переменнымив том, что системные переменные доступны извне хранимой процедуры. Системную переменную не нужно инициализировать. Разница в простой и системной переменной пользовании префикса @ в имени системной переменной.
SET @S=‘Hello, world!’;
Значение системной переменной можно узнать после выполнения хранимой процедуры:
CREATE PROCEDURE Parts_count()
BEGIN
SELECT count(*) INTO @S FROM Parts;
END
//

Параметры процедур и функций
Параметры процедуры или функции указываются в операторе CREATEпосле имени в скобках. Если параметров нет, то необходимо указывать пустые скобки. Параметры бывают типовIN,OUTINOUT(см. таблицу).
|
Режим |
Предназначение |
Использование параметра |
|
IN |
Только для чтения |
Значение параметра может применяться, но не может быть изменено в модуле |
|
OUT |
Только для записи |
В модуле можно присваивать значение параметру, но нельзя использовать его. |
|
IN OUT |
Для чтения и записи |
В модуле можно использовать и изменять значение параметра |
Пример процедуры, в которой используется один параметр INи один параметрOUT:
CREATE PROCEDURE Parts_count(IN Mat VARCHAR(20),OUT PNum INT)
BEGIN
SELECT count(*) INTO PNum FROM Parts WHERE Material=Mat ;
END
//

CALL Parts_count(‘Rubber’,@S)//

Пример функции с параметром:
CREATE FUNCTION Hello_World(S VARCHAR(20))
RETURNS VARCHAR(20)
BEGIN
RETURN CONCAT(‘Hello ’,S,’!!!’);
END
//
Для запуска функции необходимо ввести
SELECT Hello_World(‘Root’)//

