- •Общие указания к выполнению практических работ
- •Критерии оценки:
- •Практическая работа № 1
- •Указания по выполнению практической работы Возможности монитора MySql
- •Задание 1
- •Описание учебного примера
- •Удаление таблиц
- •Задание 1
- •Контрольные вопросы
- •Практическая работа №2
- •Указания по выполнению практической работы Команда alter table
- •Задание 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
Задание 1
Написать транзакцию: в таблице PaySumma изменить оплату (поле PaySum) с кодом 6 с 20 на 100, а затем изменить дату оплаты (PayDate ) с '06/13/2001' на '06/11/2001'". Транзакция должна пройти успешно.
Написать транзакцию: в таблицу Sotr(id, FIO, zarpl) добавить три новые записи (1, Иванов, 20000); (2, Петров, 23000); (3, Сидоров, 2500). Затем удалить запись с фамилией Егоров. Поскольку Егорова нет, то транзакция не должна пройти.
Задание 2
Написать транзакции к своему варианту базы данных
Контрольные вопросы
Что такое транзакции?
Какой оператор используется для того, чтобы транзакция прошла?
Какой оператор используется для того, чтобы транзакция не выполнялась?
Что определяется командой SET AUTOCOMMIT?
Каким оператором можно воспользоваться, чтобы включить режим автоматического завершения транзакций только для отдельной последовательности операторов?
Практическая работа № 20
Тема: «Блокировка таблиц».
Цель работы: Научиться создавать запросы в клиентском приложении.
Время выполнения: подготовка: 5 мин; выполнение: 120 мин; проверка: 10 мин; всего: 135 мин.
Указания к выполнению лабораторной работы
Для таблиц типа MyISAM использование транзакций недопустимо. Однако их можно эмулировать при помощи операторов LOCK TABLES и UNLOCK TABLES. Данные операторы блокируют всю таблицу, в результате чего никто не может работать с таблицами до тех пор, пока они остаются заблокированными.
Пример:
LOCK TABLES catalogs WRITE;
INSERT INTO catalogs VALUES(NULL, ’ПЕрифери’);
INSERT INTO catalogs VALUES(NULL,’Разное’);
UNLOCK TABLES;
Если в потоке возникает блокировка операции READ для некоторой таблицы, то только этот поток (и все другие потоки) могут читать из данной таблицы. Если для некоторой таблицы в потоке существует блокировка WRITE, тогда только поток, содержащий блокировку, может осуществлять операции чтения (READ) и записи (WRITE) на данной таблице. Остальные потоки блокируются.
При использовании команды LOCK TABLES необходимо блокировать все таблицы, которые предполагается использовать в последующих запросах, употребляя при этом те же самые псевдонимы, которые будут в запросах! Если таблица упоминается в запросе несколько раз (с псевдонимами), необходимо заблокировать каждый псевдоним!
Блокировка WRITE обычно имеет более высокий приоритет, чем блокировка READ, чтобы гарантировать, что изменения обрабатываются так быстро, как возможно. Это означает, что если один поток получает блокировку READ и затем иной поток запрашивает блокировку WRITE, последующие запросы на блокировку READ будут ожидать, пока поток WRITE не получит блокировку и не снимет ее
Задание 1
Выполните операторы создания и блокировки таблиц, представленные ниже.
DROP TABLE IF EXISTS `access`;
CREATE TABLE `access` (
`uid` int(10) unsigned default NULL,
`resource` varchar(255) default NULL,
UNIQUE KEY `row` (`uid`,`resource`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
LOCK TABLES `access` WRITE;
INSERT INTO `access` VALUES (26,'MOD_pages'),(31,'MOD_pages'),(32,'MOD_pages'),(33,'MOD_pages'),(34,'MOD_pages'),(38,'MOD_pages');
UNLOCK TABLES;
DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders` (
`id` int(10) unsigned NOT NULL auto_increment,
`serializedItems` text,
`status` tinyint(3) unsigned NOT NULL default '0',
`orderTime` int(10) unsigned default NULL,
`completeTime` int(10) unsigned default NULL,
`managerId` int(10) unsigned default NULL,
`itemsCount` int(10) unsigned default NULL,
`totalPrice` float(7,2) default NULL,
`orderComment` text,
`userName` varchar(255) default NULL,
`userEmail` varchar(255) default NULL,
`userPhone` varchar(255) default NULL,
`prices` enum('roz','opt') default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
LOCK TABLES `orders` WRITE;
INSERT INTO `orders` VALUES (18,'a:1:{i:273;s:2:\"22\";}',0,1144262776,NULL,NULL,22,3775.20,'asdf\r\nasdf\r\nasdf\r\nasdf\r\nasdf\r\nasdf','','','','opt'),(19,'a:1:{i:351;s:1:\"2\";}',0,1145315161,NULL,NULL,2,674.00,'gf','g','s','gfd','roz'),(17,'a:6:{i:256;s:3:\"234\";i:273;s:1:\"4\";i:257;s:3:\"234\";i:133;s:2:\"43\";i:264;s:4:\"1190\";i:241;s:1:\"4\";}',3,1144262515,1144262671,1,1709,14909.49,'','egf','','','opt');
UNLOCK TABLES;
Оператор блокировки таблицы, представленный ниже записан неверно. Напишите правильный оператор блокировки таблиц при использовании псевдонимов.
LOCK TABLES products READ;
SELECT * FROM products AS P:
