CREATE OR REPLACE VIEW ned_in AS




БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

 

Кафедра систем управления

 

ОТЧЕТ ПО ЛАБОРАТОРНЫМ РАБОТАМ

По предмету: ИОСУ

Разработка БД

2 вариант

 

Проверила: Крупская М.А

Выполнил: студент группы 322402

Жарский Д.А

 

 

Минск 2016

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

1. Создать собственную базу данных по полученному варианту. Варианты заданий приведены в Приложении 1 при этом:

- создать таблицы;

- создать ограничения;

- создать индексы, синонимы, последовательности;

- внести данные в таблицы, где необходимо в качестве первичных ключей использовать псевдостолбцы созданных последовательностей.

Последовательности:

CREATE SEQUENCE seqWorkers

INCREMENT BY 1

START WITH 1;

CREATE SEQUENCE seqClients

INCREMENT BY 1

START WITH 1;

CREATE SEQUENCE seqProviders

INCREMENT BY 1

START WITH 1;

CREATE SEQUENCE seqFuels

INCREMENT BY 1

START WITH 1;

CREATE SEQUENCE seqInvoices

INCREMENT BY 1

START WITH 1;

CREATE SEQUENCE seqSales

INCREMENT BY 1

START WITH 1;

Таблицы

CREATE TABLE zh_orders (kz INTEGER not null,

customer VARCHAR(22) not null,

kp integer not null,

data date not null unique,

primary key (kz)

);

 

CREATE TABLE zh_creator (nc INTEGER not null,

adress VARCHAR(22) not null,

tel_no integer not null,

primary key (nc)

);

 

 

CREATE TABLE zh_materials (km INTEGER not null,

nazv_ma VARCHAR2(22) not null,

cvet VARCHAR2(15) not null check(cvet ='black' or cvet ='blue' or cvet ='yellow' or cvet ='green' or cvet ='grey' or cvet ='white' or cvet ='brown'),

primary key (km)

);

 

 

CREATE TABLE zh_catolog(

kp INTEGER not null,

km INTEGER not null,

name VARCHAR(22) not null,

nc INTEGER not null,

cost integer not null,

amount integer,

primary key (kp)

);

 

ALTER TABLE zh_orders add constraint c1 foreign key (kp) references zh_catolog;

 

 

ALTER TABLE zh_catolog add constraint c2 foreign key (km) references zh_materials;

 

 

ALTER TABLE zh_catolog add constraint c3 foreign key (nc) references zh_creator;

 

 

АВТОИНКРИМЕНТ ЗАКАЗОВ

 

create sequence orders_kz

start with 1

increment by 1

nomaxvalue;

 

 

create or replace trigger kz_in

before insert on zh_orders

for each row

begin

if:new.kz is null then

select orders_kz.nextval into:new.kz from dual;

end if;

end;

/

 

АВТОИНКРИМЕНТ МАТЕРИАЛОВ

 

create sequence materials_inc

start with 1

increment by 1

nomaxvalue;

 

 

create or replace trigger km_in

before insert on zh_materials

for each row

begin

if:new.km is null then

select materials_inc.nextval into:new.km from dual;

end if;

end;

/

ЗАПОЛНЕНИЕ

insert into zh_materials values (null, 'pork skin', 'black');

 

insert into zh_creator values (1, 'per. gagarina12-10', 1313133);

insert into zh_catolog values (1, 1, 'sumka la normale', 1, 9.99, 8);

insert into zh_orders values (null, 'petrov', 1, 12-06-2010);

 

 

доделано:

alter table zh_orders add kolichestvo integer;

 

create public synonym zakazy for zh_orders;

create index index_cvet on zh_materials (cvet);

 

 

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

Цель работы – изучить синтаксис и назначение инструкции SELECT,научиться создавать условные, многотабличные, итоговые, параметрические запросы, запросы на объединение и вложенные запросы.

 

. Самостоятельно придумать и реализовать следующие запросы:

1) с внутренним соединением таблиц, используя стандартный синтаксис SQL (JOIN…ON, JOIN…USINGили NATURALJOIN);

– Соединить таблицы при помощи INNER JOIN. Innerjoin необходим для получения только тех строк, для которых существует соответствие записей главной таблицы и присоединяемой.

 

2) с внешним соединением таблиц используя FULLJOIN, LEFTJOINилиRIGHTJOIN. Теперь в запросе 1) изменим innerjoin на leftjoin.(

Как видим, добавились строки с информацией о производителях, товары которых не продавались и не имеются в каталоге.

 

3)с использованием предиката IN с подзапросом.

Информация о товарах, которых покупали не по одному.

 

4) с использованием ANY/ALL с подзапросом

– Вывести информацию о товарах, которых больше чем сделанных из выбранного материала.

select Ca.kp, Ca.name, Ca.cost, Ma.nazv_ma, Ma.cvet, Cr.nc

from zh_catolog Ca, zh_materials Ma, zh_creator Cr

where Ca.Amount > any (select max(amount) from zh_catolog where km ='&NOMER_MATERIALA') and

(Ca.idc = Cr.idc) and (Ma.km = Ca.km)

;

ALL — сравнение будет производиться со всеми записями, которые возвращает подзапрос (или просто со всеми значениями в набор). True вернется только в том случае, если все записи, которые возвращает подзапрос, будут удовлетворять указанному вами условию. Кроме того, в Oracle значение True вернется в ситуации, когда подзапрос не вернет ни одной записи.

В данном случае разницы между ANY/ALL нет, тк в подзапросе только одна запись

5) с использованием предиката EXISTS/NOTEXISTS с подзапросом

– Показать количество оставшегося товара, если за сегодня не было совершено покупок

 

Показать товары, которые не продавались

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

 

1. В своей индивидуальной БД создать:

2. (Горизонтальное обновляемое представление) Выбрать заказы, совершенные за последнюю неделю.

CREATE OR REPLACE VIEW ned_in AS

SELECT * from zh_orders



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-11-19 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: