Лабораторная работа №5
.docЛипецкий государственный технический университет
Кафедра автоматизированных систем управления
Лабораторная работа №5
по базам данных
Создание запросов
|
Студент |
|
|
|
Филатов А.А. |
|
||||||||
|
|
|
подпись, дата |
|
фамилия, инициалы |
|
||||||||
|
Группа |
|
АС-09 |
|
|
|
|
|||||||
|
|
|
|
|
|
|
||||||||
|
Принял |
|
|
|
|
|
||||||||
|
|
|
|
|
Домашнев П.А. |
|
||||||||
|
ученая степень, звание |
|
подпись, дата |
|
фамилия, инициалы |
|
Липецк 2012 г.
1. Задание
Составить и выполнить SQL запросы к ранее созданной базе данных в среде MS SQL Server. Составить 3 запроса по описанию модели из лабораторной работы №1. Предоставить текст запроса и его результат. Запросы должны использовать операторы INSERT, DELETE, UPDATE.
2. Диаграмма
Рисунок 1. Диаграмма
3. Запросы
3.1 INSERT
Формулирование: для всех завершенных и оцененных реализаций, в которых отсутствует исправления создать такие с записью "замечаний нет".
Текст запроса:
INSERT INTO Remark (execution_id, content)
SELECT T.execution_id, ‘Замечаний нет' AS content
FROM ( SELECT E.execution_id
FROM Execution E
WHERE E.date_end IS NOT NULL
AND E.rating IS NOT NULL
EXCEPT
SELECT E.execution_id
FROM Execution E INNER JOIN Remark R
ON E.execution_id = R.execution_id) T
Результат выполнения: (строк обработано: 7)
3.2 DELETE
Формулирование: удалить все заказы, которые не имеют ни одной реализации и заказ был оформлен более месяца назад.
Текст запроса:
DELETE FROM Zakaz
WHERE
(SELECT COUNT(*) FROM
(SELECT zakaz_id FROM Zakaz
EXCEPT
SELECT Z.zakaz_id FROM Zakaz Z, Execution E
WHERE E.zakaz_id = Z.zakaz_id
GROUP BY Z.zakaz_id) T
WHERE T.zakaz_id = Zakaz.zakaz_id) = 1
AND
DATEDIFF(day, date_add, GETDATE()) > 30
Результат запроса: (строк обработано: 1)
3.3 UPDATE
Формулирование: Всем неоплаченным товарам поставить скидку 5%, если заказчик сделал 3 и более заказов, и текущая скидка меньше 5%.
Текст запроса:
UPDATE Zakaz
SET discount = 5
WHERE
(SELECT COUNT(*)
FROM Zakaz Z
WHERE client_id = Z.client_id) > 3
AND (discount IS NULL
OR discount < 5)
AND date_pay IS NULL
Результат запроса: (строк обработано: 6)