Добавил:
rushevamar@mail.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лаба 6 / отчет лаба 6 бд

.docx
Скачиваний:
17
Добавлен:
17.06.2021
Размер:
20.88 Кб
Скачать

Министерство образования Республики Беларусь

Учреждение образования БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Инженерно-экономический факультет Кафедра экономической информатики

Лабораторная работа № 6

«Манипулирование данными с помощью команд языка Transact-SQL»

Выполнил: Рушева М. В.

группы 972303

Проверил: Марусич И. Ю.

Минск 2021

Цель работы

  1. Изучить команды языка манипулирования данными.

  2. Освоить основные команды языка определения данных.

Задачи

  1. Выборка данных из таблиц и представлений.

  2. Обновление данных в таблицах и представлениях.

  3. Удаление данных из таблиц и представлений.

  4. Изменение структуры таблицы.

  5. Удаление таблиц из базы данных.

Решение

USE СкладЛаба5

GO

/*Выборка данных из таблиц и представлений*/

/*1*/

SELECT *

FROM Клиент

WHERE ФИОРуководителя LIKE '%гор%' AND (КодРегиона NOT BETWEEN 101 AND 200 OR КодРегиона IS NULL )

GO

/*2*/

/*соответсвие*/

SELECT *

FROM Поставщик

WHERE УсловияОплаты NOT LIKE 'Предоплата' OR (КодРегиона NOT BETWEEN 101 AND 200)

AND (КодРегиона NOT BETWEEN 301 and 400)

GO

/*3*/

SELECT *

FROM Регион

WHERE (Страна = 'Россия' AND Город != 'Москва')

OR (Страна = 'Беларусь' AND Город != 'Минск' AND Город != 'Гомель')

GO

/*4*/

SELECT *

FROM Товар

WHERE (КодВалюты = 'USD' AND Цена BETWEEN 200 AND 800)

OR (КодВалюты = 'EUR' AND Цена BETWEEN 100 AND 500 OR Цена IS NULL)

/*5*/

SELECT Заказ.КодКлиента , Заказ.КодТовара , Заказ.КодПоставщика, Клиент.ИмяКлиента, Товар.Наименование , Поставщик.ИмяПоставщика

FROM Заказ

INNER JOIN Поставщик ON Поставщик.КодПоставщика = Заказ.КодПоставщика

INNER JOIN Товар ON Товар.КодТовара = Заказ.КодТовара

INNER JOIN Клиент ON Клиент.КодКлиента = Заказ.КодКлиента

WHERE (Количество IS NULL ) OR (Количество NOT BETWEEN 2 AND 20)

/*6*/

SELECT СрокПоставки - ДатаЗаказа AS Просрочка, КодТовара , Заказ.КодКлиента , Клиент.ИмяКлиента , Количество

FROM Заказ

INNER JOIN Клиент ON Клиент.КодКлиента = Заказ.КодКлиента

WHERE КодПоставщика = 123 OR КодПоставщика = 456 AND СрокПоставки - ДатаЗаказа > 45

ORDER BY ДатаЗаказа DESC , ИмяКлиента , Количество

/*7*/

SELECT *

FROM Запрос4

WHERE (Наименование LIKE '%тер%' OR Наименование LIKE '%тор%' OR Наименование LIKE '%а')

AND (Количество BETWEEN 5 AND 10 OR ЕдиницаИзм = 'штука' OR ЕдиницаИзм = 'литр')

/*Обновление данных в таблицах 1*/

UPDATE Клиент

SET ИмяКлиента = 'ГП ”Верас М”' , ФИОРуководителя = NULL

WHERE ИмяКлиента = 'ГП ”Верас”'

/*Обновление данных в таблицах 2*/

UPDATE Поставщик

SET УсловияОплаты = 'По договору поставки'

WHERE (ИмяПоставщика LIKE '%н' OR ИмяПоставщика LIKE '%т' OR ИмяПоставщика LIKE '%л')

AND (ИмяПоставщика NOT LIKE 'ЗАО%' OR ИмяПоставщика NOT LIKE 'ОАО%')

/*Обновление данных в таблицах 3*/

UPDATE Товар

SET КодВалюты = 'RUR' , Цена = Цена / 285

WHERE Цена BETWEEN 100000 AND 1000000

UPDATE Товар

SET КодВалюты = 'USD' , Цена = Цена / 9100

WHERE Цена > 1000000

/*Обновление данных в таблицах 4*/

UPDATE Заказ

SET СрокПоставки =

( CASE

WHEN (ДатаЗаказа < '15.10.2021') THEN ДатаЗаказа + 14

WHEN (ДатаЗаказа >= '15.10.2021') THEN ДатаЗаказа +10

ELSE ДатаЗаказа + 20

END )

/*Добавление*/

INSERT INTO Валюта

VALUES ('GRV','Украинские гривны',0.01,250)

GO

INSERT INTO Товар

VALUES (666,'ПК-клавиатура','штука',2630,'GRV','Да')

INSERT INTO Товар

VALUES (777,'Разъем USB','штука',135,'GRV','Да')

INSERT INTO Товар

VALUES (888,'Принтер Lexmark','штука',12790,'GRV','Да')

GO

INSERT INTO Заказ(КодКлиента,КодТовара,Количество,КодПоставщика)

VALUES(4,666,17,345)

INSERT INTO Заказ(КодКлиента,КодТовара,Количество,КодПоставщика)

VALUES(5,777,5,234)

INSERT INTO Заказ(КодКлиента,КодТовара,Количество,КодПоставщика)

VALUES(3,888,14,456)

INSERT INTO Заказ(КодКлиента,КодТовара,Количество,КодПоставщика)

VALUES(5,666,9,345)

GO

/*удаление строк*/

ALTER TABLE Товар DROP CONSTRAINT FK_Товар_Валюта

DELETE FROM Валюта

WHERE КодВалюты = 'GRV'

GO

/*удаление таблицы регион*/

EXEC sp_fkeys 'Регион'

GO

ALTER TABLE Клиент DROP CONSTRAINT FK_Клиент_Регион -- первая команда

ALTER TABLE Поставщик DROP CONSTRAINT FK_Поставщик_Регион -- первая команда

DROP TABLE Регион -- вторая команда

GO

/*удаление таблицы поставщик*/

ALTER TABLE Заказ DROP CONSTRAINT FK_Заказ_Поставщик -- первая команда

DROP TABLE Поставщик -- вторая команда

GO

/*удаление предстовления*/

DROP VIEW Запрос3 ;

GO

SET DATEFORMAT dmy

SELECT КодЗаказа, КодТовара , Заказ.КодКлиента , Клиент.ИмяКлиента , Количество, DATEDIFF(day,ДатаЗаказа,СрокПоставки) as просрочка

FROM Заказ

INNER JOIN Клиент ON Клиент.КодКлиента = Заказ.КодКлиента

WHERE КодПоставщика = 123 OR КодПоставщика = 456 AND DATEDIFF(day,ДатаЗаказа,СрокПоставки) < 45

ORDER BY ДатаЗаказа DESC , ИмяКлиента , Количество

Вывод: Как видно из кода скрипта на языка Transact-SQL, почти каждой команде на языке Transact-SQL соответствует команда в среде MS SQL Server Management Studio, однако скрипт более эффективен, т.к его можно запускать множество раз и он более гибок.

Соседние файлы в папке лаба 6