Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
задания практика 3 часть консоль БД MySQLпо ПР ТРЗБД_.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1.64 Mб
Скачать

Задание 1

  1. Написать транзакцию: в таблице PaySumma изменить оплату (поле PaySum) с кодом 6 с 20 на 100, а затем изменить дату оплаты (PayDate ) с '06/13/2001' на '06/11/2001'". Транзакция должна пройти успешно.

  2. Написать транзакцию: в таблицу Sotr(id, FIO, zarpl) добавить три новые записи (1, Иванов, 20000); (2, Петров, 23000); (3, Сидоров, 2500). Затем удалить запись с фамилией Егоров. Поскольку Егорова нет, то транзакция не должна пройти.

Задание 2

Написать транзакции к своему варианту базы данных

Контрольные вопросы

  1. Что такое транзакции?

  2. Какой оператор используется для того, чтобы транзакция прошла?

  3. Какой оператор используется для того, чтобы транзакция не выполнялась?

  4. Что определяется командой SET AUTOCOMMIT?

  5. Каким оператором можно воспользоваться, чтобы включить режим автоматического завершения транзакций только для отдельной последовательности операторов?

Практическая работа № 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

  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;

  1. Оператор блокировки таблицы, представленный ниже записан неверно. Напишите правильный оператор блокировки таблиц при использовании псевдонимов.

LOCK TABLES products READ;

SELECT * FROM products AS P: