
- •Работа с сервером 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
- •Соединение с бд и вывод данных
- •Задание на лабораторную работу
Задание на лабораторную работу
Для БД «Предприятие» реализовать и проверить работу следующих процедур и функций:
Реализовать функцию, которая возвращает количество различных городов, в которых находятся поставщики определенного проекта (входной параметр).
Реализовать функцию, которая возвращает количество различных городов, в которых находятся проекты, обеспечиваемые определенным поставщиком (входной параметр).
Реализовать функцию, которая возвращает количество различных городов, в которых находятся поставщики определенной детали (входной параметр).
Реализовать процедуру, которая выводит информацию обо всех поставщиках и количестве различных городов, в которых находятся обслуживаемые ими проекты. Примечание: использовать функцию, реализованную в п. 1.b.
Реализовать процедуру, которая выводит информацию обо всех проектах и количестве различных городов, в которых находятся обслуживающие их поставщики. Примечание: использовать функцию, реализованную в п. 1.a.
Написать процедуру, которая изменяет имя каждой детали на имя, формируемое как «Имя_детали-N», где N – порядковый номер в списке всех одноименных деталей в порядке возрастания веса детали. Примечание: использовать вызов вышеописанной процедуры Parts_rename.
Содержание отчета
В отчете привести код процедур и функций, результаты выполнения, содержимое таблиц до и после (при необходимости) выполнения процедур и функций.
Пример реализации функции, которая возвращает количество различных городов, в которых находятся проекты, где используется определенная деталь (входной параметр):
CREATE FUNCTION Qty_of_Prj_Towns(S VARCHAR(20))
RETURNS INTEGER
BEGIN
DECLARE N INTEGER;
SELECT COUNT(*) INTO N FROM Towns WHERE Town_ID IN (SELECT Projects.Town_ID FROM Parts, Projects, Supply WHERE Parts.Part_ID= Supply.Part_ID AND Projects.Project_ID=Supply.Project_ID AND Parts.Part_name=S);
RETURN N;
END
Исключения и триггеры
Исключения
Исключения, или исключительные ситуации – это ошибки, которые возникают в процессе выполнения инструкций SQL.MySQL перехватывает ошибки и реагирует на них при помощи т.н. обработчиков (handlers). Механизм функционирования обработчиков исключений позволяет четко отделить код обработки ошибок от исполняемых операторов.
Когда происходит ошибка, инициируется исключение. В результате выполнение исполняемого блока прерывается и управление передается отдельному разделу исключений в текущем блоке, если таковой имеется. После обработки исключения возврат в тот блок, из которого оно было инициировано, невозможен, поэтому управление переходит во внешний блок.
Существует два вида исключений:
Системное исключение.Определяется вMySQL и обычно инициируется ядром СУБД, обнаружившим ошибку.
Пользовательское исключение.Определяется программистом, следовательно оно специфично для данного приложения.
Системные исключения возникают при попытке выполнения недопустимых SQL-инструкций. О возникновении исключения можно узнать из сообщения клиентаmysql.exe. Например, при попытке выбрать данные из несуществующей таблицы произойдет следующее:
Информация о произошедшем исключении стоит из трех элементов:
1. Число – код ошибки (1146). Этот код определен в MySQLи несовместим с другими СУБД.
2. Пятисимвольный код системной переменной SQLSTATE(42S02). Эти значения определяются в стандартахANSISQLиODBCи стандартизированы в большей степени.
3. Текстовое описание ошибки (Table ‘database1.no_such_table’ doesn’t exist).
При создании обработчика исключения можно использовать различные способы идентификации исключения. Синтаксис оператора создания исключения:
DECLARE<тип_обработчика>HANDLER
FOR<идентификатор_исключения> [,<идентификатор_исключения>] ...
<операторы>;
Здесь параметр <тип_обработчика> может принимать значения CONTINUE, EXIT или UNDO. Для обработчиков типа CONTINUE выполнение программы, вызвавшей исключение, продолжается после выполнения кода обработчика. Для обработчиков типа EXITвыполнение текущего блокаBEGIN…ENDпрограммы, вызвавшей исключение, прерывается. Обработчики типаUNDOне поддерживаются в версииMySQL5.5.
Параметр <идентификатор_исключения> может представлять собой значение SQLSTATE, имя исключения, которое было задано при его создании оператором DECLARE ... CONDITION, а также одно из ключевых слов:
SQLWARNING – синоним для значений SQLSTATE, начинающихся с 01
NOT FOUND - синоним для значений SQLSTATE, начинающихся с 02
SQLEXCEPTION - синоним для значений SQLSTATE, НЕ начинающихся с 00, 01 или 02
Например, создадим процедуру, в которой определим обработчик для исключения с кодом 42S02:
CREATE PROCEDURE h()
BEGIN
DECLARE CONTINUE HANDLER FOR SQLSTATE '42S02' SELECT (‘Таблица не существует!’);
SELECT * FROM No_such_table;
END;
Вариант процедуры с предварительно заданным именем исключения при помощи DECLARE ... CONDITION:
CREATE PROCEDURE h()
BEGIN
DECLARE No_my_table CONDITION FOR SQLSTATE '42S02';
DECLARE CONTINUE HANDLER FOR No_my_table SELECT (‘Таблица не существует!’);
SELECT * FROM No_such_table;
END;
Вариант процедуры с использованием синонима SQLEXCEPTION для идентификации исключения:
CREATE PROCEDURE h()
BEGIN
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SELECT (‘Таблица не существует!’);
SELECT * FROM No_such_table;
END;
Следующий пример демонстрирует продолжение выполнения программы после обработчика типа CONTINUE:
CREATE PROCEDURE h()
BEGIN
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SELECT (‘Таблица не существует!’);
SELECT * FROM No_such_table;
SET @A=1;
END;
Если использовать обработчик типа EXIT, то выполнение программы прерывается:
CREATE PROCEDURE h()
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION SELECT (‘Таблица не существует!’);
SELECT * FROM No_such_table;
SET @A=1;
END;
Следующая процедура содержит обработчик исключения 23000 (ER_DUP_KEY)
CREATE PROCEDURE h()
BEGIN
DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SELECT ‘Первичный ключ уже существует’;
INSERT INTO Parts VALUES (9,’Spoon’,’Wood’,30);
INSERT INTO Parts VALUES (9,’Spoon’,’Wood’,30);
END;