Добавил:
rushevamar@mail.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
8
Добавлен:
17.06.2021
Размер:
5.31 Кб
Скачать
USE СкладЛаба5
GO

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


/*1*/
SELECT * /*Выборка всех столбцов и всех строк*/
/*тут будет горизонтальный фильтр*/
FROM Клиент
WHERE ФИОРуководителя LIKE '%гор%' AND (КодРегиона NOT BETWEEN 101 AND 200 OR КодРегиона IS NULL )
GO

/*2*/
/*соответсвие*/
SELECT *
FROM Поставщик
WHERE УсловияОплаты != 'Предоплата' 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) /*IS NULL -- не определено*/


SET DATEFORMAT dmy
/*ДОП ЗАДАНИЕ*/
SELECT Заказ.КодЗаказа , Заказ.СрокПоставки , Поставщик.ИмяПоставщика, Поставщик.КодПоставщика, Регион.Адрес
FROM Поставщик
INNER JOIN Регион ON Регион.КодРегиона = Поставщик.КодРегиона
INNER JOIN Заказ ON Заказ.КодПоставщика = Поставщик.КодПоставщика
WHERE (Количество < 100 ) and (СрокПоставки = '07.05.2021' ) or (СрокПоставки = '06.05.2021') or (СрокПоставки = '08.05.2021') /*getdate()-1 or getdate() or getdate()+1*/



/*6*/
SELECT Клиент.ИмяКлиента, Товар.Наименование, Заказ.*
FROM Заказ
inner join Клиент on Заказ.КодКлиента = Клиент.КодКлиента
inner join Товар on Заказ.КодТовара= Товар.КодТовара
inner join Поставщик on Заказ.КодПоставщика= Поставщик.КодПоставщика
inner join Регион on Поставщик.КодРегиона = Регион.КодРегиона
where (Регион.Страна = 'Россия' or Регион.Страна = 'Украина') and СрокПоставки - ДатаЗаказа > 45
order by ДатаЗаказа desc, Клиент.ИмяКлиента, Количество 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


/*удаление строк*/
/*DROP CONSTRAINT используется для удаления уникального, первичного ключа, внешнего ключа
или ограничения проверки*/
/*ALTER TABLE -- свойства связей*/
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 просрочка
/*DATEDIFF возвращает разность дней между двумя значениями даты*/
FROM Заказ
INNER JOIN Клиент ON Клиент.КодКлиента = Заказ.КодКлиента
WHERE КодПоставщика = 123 OR КодПоставщика = 456 AND DATEDIFF(day,ДатаЗаказа,СрокПоставки) < 45
ORDER BY ДатаЗаказа DESC , ИмяКлиента , Количество
Соседние файлы в папке чужие лабы бд и прочее