Клиент (Код клиента, Фамилия, Имя, Отчество, Город) Проживает (
Скачать 99.42 Kb.
|
Контрольная работаСоздадим базу данных: Клиент (Код_клиента, Фамилия, Имя, Отчество, Город); Проживает (Код_клиента ,Номер, Дата_прибытия, Дата_убытия); Номер (Номер, Число мест, Этаж); Тип номера (Число мест, Цена); SQL код: create table client ( idClient int identity(1,1) primary key, firstname varchar(50) null, name varchar(50) null, middleName varchar(50) null, city varchar(50) null ) create table reside( idClient int null, room int null, dateStart date null, dateFinish date null ) create table room( room int primary key, countPlace int null, levelRoom int null, ) create table typeRoom( countPlace int primary key, price int null ) Схема базы данных приведена на рисунке 1. Рисунок 1 – схема базы данных База данных была заполнена тестовыми данными. Необходимо создать запросы к базе данных. Выдать список номеров пятого этажа. SQL код: select room from room where levelRoom = 5 результат запроса на рисунке 2. Рисунок 2 – результат запроса Список номеров, в которых останавливался Суворов из Владимира. SQL код: select room from reside inner join client on reside.idClient = client.idClient where firstName = 'Суворов' and city = 'Владимир' Результат запроса на рисунке 3. Рисунок 3 – результат запроса Каково среднее количество мест в номерах гостиницы? SQL код: select avg(countPlace) from room Результат запроса на рисунке 4. Рисунок 4 – результат запроса Количество клиентов из каждого города, приезжающих в гостиницу. SQL код: select city, count(idClient) from client group by city Результат запроса на рисунке 5. Рисунок 5 – результат запроса Напишите запрос с подзапросом, который перечислит номера, цена проживания в которых не превышает 500 рублей. SQL код: select * from typeRoom where price < = ANY (select price from typeRoom where price < 500) Результат запроса на рисунке 6. Рисунок 6 – результат запроса Увеличьте цену проживания в гостинице на 15%. SQL код: update typeRoom set price = price/100*15 Результат запроса на рисунке 6. Рисунок 7 – результат запроса Добавьте клиента Курочкина Афанасия Егоровича, прибывшего из Калуги, в таблицу КЛИЕНТ. SQL код: insert into client values ('Курочкин', 'Афанасий', 'Егорович', 'Калуга') Результат запроса на рисунке 8. Рисунок 8 – результат запроса Создадим базу данных: Продавцы (Код_продавца, ФИО_продавца, город _продавца, комиссионные_продавца, руководитель, план продаж); Заказчики (Код_заказчика, ФИО_заказчика, город_заказчика, рейтинг заказчика, сумма_кредита); Заказы (номер_заказа, сумма_заказа, дата_заказа, код_продавца, код_заказчика, код_товара, количество_в_заказе) Товар (Код_товара, Наименование_товара, цена, количество) SQL код: create table client( idClient int identity(1,1) primary key , nameclient varchar(50) null, city varchar(50) null, rating int null, sumCredit int null) create table seller( idSeller int identity(1,1) primary key, nameSeller varchar(50) null, city varchar(50) null, commission int null, chif varchar(50) null, planSale int null) create table product( idProduct int identity(1,1) primary key, nameProduct varchar(50) null, price int null, countProduct int null) create table orders( idOrder int identity(1,1) primary key, sumOrder int null, dateOrder date null, idSeller int null, idClient int null, idProduct int null, countProduct int null) Схема базы данных представлена на рисунке 9. Рисунок 9 – схема базы данных Напишите представление, которое выводит список городов, в которых есть заказчики продавца Петрова. SQL код: create view cityPetrov as select client.city from orders inner join client on client.idClient = orders.idClient inner join seller on seller.idSeller = orders.idSeller where nameSeller like 'Петров%' Выборка из представления приведена на рисунке 10. Рисунок 10 – выборка из представления Напишите хранимую процедуру с параметрами, показывающую фамилии и сумму продаж продавцов, работающих под руководством указанного начальника. SQL код: create procedure chif(@nameChif varchar(50)) as select nameSeller, sum(sumOrder) from orders inner join seller on seller.idSeller = orders.idSeller where chif = @nameChif group by nameSeller Вызов процедуры представлен на рисунке 11. Рисунок 11 – вызов процедуры Напишите триггер, который запрещает покупку, если она оформляется после 25 числа каждого месяца. SQL код: create trigger notOrder on Orders for insert, update as declare @day int set @day = (select datepart(dd, dateOrder) from inserted) if @day > 25 begin rollback raiserror('нельзя осуществлять покупки после 25 числа',16,1,777) end Работа триггера представлена на рисунке 12. Рисунок 12 – работа триггера |