
- •1. Подготовка и допуск к работе
- •2. Содержание отчета
- •Лабораторная работа №15
- •Лабораторная работа № 16
- •Пример: backup table vines,query,client,distributor,delivery to c:/mysql_bak';
- •Удалены 3 таблицы. Теперь восстановим их.
- •Пример: optimizetablEmytable
- •Лабораторная работа №17
- •Значение usage можно задавать, если необходимо создать пользователя без привилегий.
- •Примеры:
- •Доступ к MySql из сети
- •С помощью утилиты Mysqlshow выполните команду на просмотр структуры и состав таблиц базы Mysql. Приведите в отчете её схему.
- •Лабораторная работа №18
- •Тема: Файлы журналов MySql Репликация в MySql
- •Цель: Формирование умений и знаний для работы в среде субд Mysql.
- •Журнал ошибок
- •Общий журнал запросов
- •Журнал обновлений (update)
- •Бинарный журнал обновлений
- •Журнал медленных запросов
- •Обслуживание файлов журналов
- •Репликация в MySql
- •Настройка репликации
- •Лабораторная работа № 19-20
- •Сохраненные процедуры и функции
- •Сохраненные подпрограммы и таблицы предоставления привилегий
- •Синтаксис хранимых процедур
- •Синтаксис alter procedure и alter function
- •Синтаксис drop procedure и drop function
- •Синтаксис команды call
- •Синтаксис составного оператора begin ... End
- •Синтаксис declare
- •Переменные в сохраненных подпрограммах Локальные переменные declare
- •Команда set
- •Команда select ... Into
- •Условия и драйверы
- •Declare условий
- •Declare драйвера
- •Курсоры
- •Объявление курсоров
- •Инструкция case
- •Инструкция loop
- •Инструкция leave
- •Инструкция iterate
- •5.2.10.6. Инструкция repeat
- •Инструкция while
- •Задание
- •Приложение а
- •Демонстрируется использование mysql в качестве несложного калькулятора:
- •Проверка таблицы при помощи команды describe:
- •Выборка всех данных
- •Выборка определенных строк. Выборка с условием
- •Операторы and и or можно использовать совместно.
- •Предположим, нужно узнать, в каком возрасте животные давали приплод:
- •В этом запросе мы указываем псевдонимы имен таблицы, для обращения к столбцам и определения, к какой из таблиц относится каждая ссылка на столбец.
- •Сортировку можно проводить по нескольким столбцам сразу.
- •Отсортировать результаты по возрасту также можно при помощи выражения orderby:
- •Максимальное значение столбца
Синтаксис alter procedure и alter function
ALTER {PROCEDURE | FUNCTION} sp_name
[characteristic ...]
characteristic:
{CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'
Эта инструкция может использоваться, чтобы изменить характеристики сохраненной процедуры или функции.
Синтаксис drop procedure и drop function
DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name
Эта инструкция используется, чтобы удалить сохраненную процедуру или функцию. Предложение IF EXISTSявляется расширением MySQL. Это предотвращает ошибку, если процедура или функция не существует. Будет произведено предупреждение, которое может просматриваться с помощью командыSHOW WARNINGS.
Синтаксис команды call
CALL sp_name([parameter[,...]])
Инструкция CALLвызывает процедуру, которая была определена предварительно, с помощью командыCREATE PROCEDURE.
CALLможет передавать обратно значения к параметрам использования вызывающего оператора, которые объявлены какOUTилиINOUT. Это также вернет число строк, на которые воздействовал запрос.
Чтобы вернуть значение из процедуры, использующей параметр OUTилиINOUT, передайте параметр посредством переменной пользователя, и затем проверьте значение переменной после возврата из процедуры. Следующая процедура имеет параметрOUT, который процедура устанавливает в текущую (актуальную) версию сервера, и значениеINOUT, которое процедура увеличивает:
CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
# Set value of OUT parameter
SELECT VERSION() INTO ver_param;
# Increment value of INOUT parameter
SET incr_param = incr_param + 1;
END;
Перед вызовом процедуры, инициализируйте переменную, которая будет передана как параметр INOUT. После вызова процедуры, значения в двух переменных будут установлены или изменены:
mysql> SET @increment = 10;
mysql> CALL p(@version, @increment);
mysql> SELECT @version, @increment;
@version |
@increment |
5.0.25-log |
11 |
Синтаксис составного оператора begin ... End
[begin_label:] BEGIN
[statement_list]
END [end_label]
Синтаксис BEGIN ... ENDиспользуется для записи составных инструкций, которые могут появляться внутри сохраненных подпрограмм и триггеров. Составная инструкция может содержать много инструкций, взятых в ключевые словаBEGINиEND. Здесьstatement_listпредставляет список инструкций. Каждая инструкция внутриstatement_listдолжна быть завершена операторным разделителем точкой с запятой (;). Обратите внимание, что списокstatement_listфакультативный, что означает, что пустая составная инструкция (BEGIN END) допустима.
Использование многих инструкций требует, чтобы пользователь был способен послать операторные строки, содержащие операторный разделитель ;. Это обработано в клиенте командной строкиmysqlкомандойdelimiter. Изменение разделителя конца инструкции;(например, на//) позволяет;использоваться в стандартном теле.
Составная инструкция может быть помечена. end_labelне может быть дан, еслиbegin_labelтакже не присутствует. Если оба присутствуют, они должны быть те же самые.
Факультативное предложение [NOT] ATOMICеще не обеспечивается. Это означает, что никакие точки сохранения транзакций не установлены в начале блока команды, и предложениеBEGIN, используемое в этом контексте не имеет никакого эффекта на текущей (актуальной) транзакции.