Базы данных
Автор: vwaha • Ноябрь 24, 2020 • Лабораторная работа • 949 Слов (4 Страниц) • 352 Просмотры
лабораторная работа № 2
В ходе выполнения лабораторной работы необходимо создать с помощью построителя запросов:
- Запрос на выборку.
Вывод данных таблицы personal_name:
SELECT *
FROM `personal_name`
[pic 1]
Вывод данных двух полей surname и name из таблицы personal_name:
SELECT `surname` , `name`
FROM `personal_name`
[pic 2]
- Запрос на выборку с параметрами.
Вывод данных полей из нескольких таблиц параметром поля`position`.`salary` меньше или равно значению 87,95
SELECT
`transf_exec`.`nom_doc` ,
`order_doc`.`date_approval` ,
`order_doc`.`short_descript` ,
`transf_exec`.`date_transf_exec` ,
CONCAT( `personal_name`.`surname` , ' ', LEFT( `personal_name`.`name` , 1 ) , '.', LEFT( `personal_name`.`patronymic` , 1 ) , '.' ) AS FIO,
`position`.`position_eml` ,
`position`.`salary`
FROM transf_exec
LEFT JOIN `delo`.`order_doc` ON `transf_exec`.`nom_doc` = `order_doc`.`nom_doc`
LEFT JOIN `delo`.`designation` ON `transf_exec`.`id_pos` = `designation`.`id_pos`
LEFT JOIN `delo`.`position` ON `designation`.`id_pos` = `position`.`id_pos`
LEFT JOIN `delo`.`personal_name` ON `designation`.`id_name` = `personal_name`.`id_name`
WHERE `position`.`salary` <= 87.95
[pic 3]
- Запрос на обновление данных.
[pic 4]
UPDATE `position` SET `salary`=45.00 WHERE `id_pos`=5
[pic 5]
- Запрос на удаление записей.
[pic 6]
[pic 7]
[pic 8]
Следующие запросы должны быть реализованы на языке SQL без
помощи построителя запросов:
5. Используя инструкцию CREATE TABLE, создайте запрос на создание новой таблицы для выбранной ранее предметной области, содержащей пять полей, различных типов данных, определив в запросе первичный
ключ и проиндексировав соответствующие поля, используя предложение
CONSTRAINT. После чего создайте запрос на создание еще одной таблицы, содержащей внешний ключ по отношению к первичному ключу предыдущей таблицы. Запустите запрос, после чего проверьте, отразились ли изменения в схеме данных.
CREATE TABLE IF NOT EXISTS `spr_status` (
`id_stat` int(1) NOT NULL AUTO_INCREMENT COMMENT 'ид_записи',
`simv_stat` varchar(2) COLLATE utf8_unicode_ci NOT NULL COMMENT 'символ статуса',
`name_stat` tinytext COLLATE utf8_unicode_ci NOT NULL COMMENT 'Наименование статуса',
`date_stat` date DEFAULT NULL COMMENT 'дата статуса',
`time_stat` time DEFAULT NULL COMMENT 'время статуса',
PRIMARY KEY (`id_stat`,`simv_stat`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Статус документа' AUTO_INCREMENT=1 ;
[pic 9]
CREATE TABLE IF NOT EXISTS `assign_status` (
`id_assign` int(5) NOT NULL AUTO_INCREMENT COMMENT 'ид_записи',
`id_stat` int(1) NOT NULL COMMENT 'символ статуса',
PRIMARY KEY (`id_assign`),
KEY `id_stat` (`id_stat`),
CONSTRAINT `ibfk_1` FOREIGN KEY (`id_stat`) REFERENCES `spr_status` (`id_stat`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Назначение статуса' AUTO_INCREMENT=1 ;
[pic 10]
6. Используя команду CREATE INDEX, создайте запрос на создание нового индекса, используя различные условия назначения индексов (IGNORE NULL, DISALLOW NULL, PRIMARY), а также типы сортировки.
Запрос на создание составного уникального индекса:
CREATE UNIQUE INDEX
`index_ifkd_1`
ON
`designation` (`id_pos`,`id_name`) USING BTREE
Запрос на создание индекса с указанием обратной сортировки (работает в MySQL начиная с версии 8.0):
...