- •Общие указания к выполнению практических работ
- •Критерии оценки:
- •Практическая работа № 1
- •Указания по выполнению практической работы Возможности монитора MySql
- •Задание 1
- •Описание учебного примера
- •Практическая работа №2
- •Указания по выполнению практической работы Команда alter table
- •Удаление таблиц
- •Задание 1
- •Контрольные вопросы
- •Задание 1
- •Задание 2
- •Контрольные вопросы
- •Практическая работа № 3
- •Указания по выполнению практической работы
- •Задание 1
- •Задание 1
- •Задание 2
- •1. Создание eer-диаграммы
- •Контрольные вопросы
- •Лабораторная работа № 7
- •Указания по выполнению лабораторной работы
- •Для компонента adoConnection1 устанавливаем следующие свойства
- •Простая выборка
- •Использование вычисляемых полей
- •Логические связки and и or
- •Выборка с упорядочением
- •Контрольные вопросы
- •Практическая работа № 11
- •Указания к выполнению лабораторной работы Запросы к нескольким таблицам
- •Задание1
- •Табличный подзапрос
- •Использование операций in и not in
- •Использование операций some, any и all
- •Использование exists и not exists
- •Задание
- •Контрольные вопросы
- •Лабораторная работа № 14
- •Команда insert
- •Задание 1
- •Команда update
- •Задание 2
- •Команда delete
- •Задание 3
- •Контрольные вопросы
- •Лабораторная работа № 15
- •Задание
- •Задание 2
- •Контрольные вопросы
- •Лабораторная работа № 16
- •Контрольные вопросы
- •Практическая работа № 17
- •Задание 1
- •Задание 2
- •Контрольные вопросы
- •Практическая работа № 18
- •Добавление триггера
- •Создание триггера на before update
- •Удаление триггера
- •Список созданных триггеров
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Контрольные вопросы
- •Лабораторная работа № 19
- •Задание 1
- •Задание 2
- •Контрольные вопросы
- •Практическая работа № 20
- •Задание 1
- •Контрольные вопросы
- •Практическая работа № 21
- •Уровни привилегий и пользователи
- •Отмена привилегий и удаление пользователей
- •Задание 1 Работа локально
- •Варианты заданий предметных областей для создания баз данных Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант16
- •Вариант 17
- •Вариант 18
- •Вариант 19
- •Вариант 20
- •Вариант 22
- •Вариант 23
- •Вариант 24
- •Вариант 25
- •Вариант 26
- •Вариант 27
- •Вариант 28
- •Вариант 29
- •Вариант 30
- •Вариант 31
- •Вариант 32
Задание 2
Создать таблицы следующей структуры:
1. Квартиры(*НомерКвартиры, Адрес, Телефон, КолвоКомнат, Этаж, Район, Владелец, Стоимость, ПризнакПродажи), если квартира не продана, то ПризнакПродажи=0, если продана, то 1.
2. Сделка(*НомерСделки, Дата, СуммаСделки, ФИО_Реелтера). Написать триггер, который каждый раз при добавлении записи в таблицу «Сделка», помечает квартиру в таблице «Квартиры» как проданную, т.е. поле «ПризнакПродажи» устанавливается равным 1.
Задание 3
Отпуск товара со склада выполняется по документу «Накладная», который имеет шапку и строки. В шапке накладной содержится информация о том, кому, кем и когда отпускается товар со склада. В строках накладной содержится информация о тех товарах, которые отпускаются по этой накладной. По одной накладной можно отпустить несколько разных товаров со склада.
Информация о накладных хранится в двух таблицах:
«ШапкаНакладной» и «СтрокиНакладной». Таблицы имеют следующую структуру:
1. ШапкаНакладной(*НомерНакл, Поставщик, Покупатель, ДатаОтпуска, СуммаПоНакл)
2. СтрокиНакладной(*НомерЗаписи, НомерНакл, НазваниеТовара, Цена, Колво, ЕдИзм).
Где
* - отмечены первичные ключи
ЕдИзм – единица измерения товара: штуки, пачки, ящики и т.д.
СуммаПоНакл – сумма товара по всей накладной, считается как сумма произведения Цена* Колво по всем строкам данной накладной.
Поле «НомерНакл» в таблице «СтрокиНакладной» является внешним ключом и ссылается на первичный ключ таблицы «ШапкаНакладной».
Создать таблицы. Написать триггеры, которые бы при изменении, удалении, добавлении строк в таблице «СтрокиНакладной» автоматически обновляли поле СуммаПоНакл в таблице «ШапкаНакладной».
Задание 4
Создайте триггеры для своего варианта базы данных.
Контрольные вопросы
Что такое триггер?
Для чего используются контекстные переменные в теле триггера?
Можно ли в теле триггера использовать локальные переменные?
Можно ли в теле триггера использовать операторы ветвлений и циклические операторы?
С помощью каких команд можно создать триггер? Как удалить триггер?
Каким образом посмотреть какие триггеры уже созданы в базе данных?
Приведите примеры триггеров.
Лабораторная работа № 19
Тема: «Создание транзакции с откатом и фиксацией»
Цель работы: Научиться создавать запросы в клиентском приложении.
Время выполнения: подготовка: 5 мин; выполнение: 120 мин; проверка: 10 мин; всего: 135 мин.
Указания к выполнению лабораторной работы
Транзакция - это группа операций обработки данных, выполняемых как некоторое неделимое действие над базой данных, осмысленное с точки зрения пользователя.
По умолчанию СУБД MySQL работает в режиме автоматического завершения транзакций, т.е. как только выполняется оператор обновления данных, который модифицирует таблицу, MySQL тут же сохраняет изменения на диске. Для объединения в транзакцию нескольких операторов необходимо отключить этот режим. Это можно осуществить при помощи оператора SET AUTOCOMMIT
mysql> SET AUTOCOMMIT=0;
После отключения режима автоматического завершения транзакций следует использовать оператор COMMIT, чтобы сохранить изменения на диске, либо ROLLBACK, чтобы отменять изменения, выполненные с момента начала транзакции. Для того, чтобы включить режим автоматического завершения транзакций необходимо выполнить оператор SET AUTOCOMMIT=1.
mysql> SET AUTOCOMMIT=0; mysql> INSERT INTO catalogs VALUES(NULL,'Переферия'); mysql> INSERT INTO catalogs VALUES(NULL,'Разное'); mysql> SELECT * FROM catalogs;
id_catalog |
name |
1 |
Процессоры |
2 |
Материнские платы |
3 |
Видеоадаптары |
4 |
Жёсткие диски |
5 |
Оперативная память |
6 |
Переферия |
7 |
Разное |
mysql> ROLLBACK; mysql> SELECT * FROM catalogs;
id_catalog |
name |
1 |
Процессоры |
2 |
Материнские платы |
3 |
Видеоадаптары |
4 |
Жёсткие диски |
5 |
Оперативная память |
mysql> INSERT INTO catalogs VALUES(NULL,'Переферия'); mysql> INSERT INTO catalogs VALUES(NULL,'Разное'); mysql> COMMIT; mysql> SELECT * FROM catalogs;
id_catalog |
name |
1 |
Процессоры |
2 |
Материнские платы |
3 |
Видеоадаптары |
4 |
Жёсткие диски |
5 |
Оперативная память |
9 |
Переферия |
10 |
Разное |
mysql> SET AUTOCOMMIT=1;
В таблицу catalogs добавляются новые записи, при этом выполнения оператора ROLLBACK позволяет отменить все изменения, которые были произведены над таблицей catalogs. Напротив, оператор COMMIT сохраняет изменения на диске и уже следующий оператор ROLLBACK вернёт последнее сохранённое состояние.
Для того чтобы включить режим автоматического завершения транзакций только для отдельной последовательности операторов, можно воспользоваться оператором START TRANSACTION.
mysql> START TRANSACTION; mysql> SELECT @total := count FROM products -> WHERE name = 'Celeron D 320 2.4GHz';
@total := count |
1 |
mysql> UPDATE products SET count = @total - 1 -> WHERE name = 'Celeron D 320 2.4GHz'; mysql> COMMIT;
После выполнения оператора START TRANSACTION режим автоматического завершения транзакций остаётся включённым до явного завершения транзакции с помощью оператора COMMIT или отката транзакции при помощи ROLLBACK.
Общий вид работы транзакции:
1. SET AUTOCOMMIT=0;
2. START TRANSACTION;
3. UPDATE ...;
UPDATE ...;
UPDATE ...;
4. если на каком либо из UPDATE произошел сбой, то - ROLLBACK , иначе - COMMIT;
5. SET AUTOCOMMIT=1;
