Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 8

Міністерство освіти і науки України

Національний університет «Одеська політехніка»


Інститут комп’ютерних систем
Кафедра інформаційних систем

Лабораторна робота №1
З дисципліни: «Сучасні системи управління базами даних»
Тема: «Розробка ієрархічно-реляційних та об’єктно-реляційних моделей
даних»

Варіант №11

Виконав:
Студент групи АІ-216
Сидоренков Є. С.
Перевірили:
Іванов О.В.

Одеса 2023
SQLPlus
1-4)

5-6)

7)

8)

9)
10-11)

SQLDeveloper

12)

13) CREATE TABLE worker --інформація про співробітника


(
id_ number, --id
name_ varchar2(100), --ПІБ
position_ varchar2(100), --посада
telephone varchar2(15), --номер телефону
email varchar2(50) --електронна пошта
);

CREATE TABLE customer --інформація про клієнта


(
id_ number, --id
name_ varchar2(100), --ПІБ
telephone varchar2(15), --номер телефону
email varchar2(50) --електронна пошта
);

CREATE TABLE automobile --інформація про авто


(
id_ number, --id
brand varchar2(100), --марка
model_ varchar2(100), --модель
year_ number(4) --рік випуску
);

CREATE TABLE spare_parts --інформація про запасні частини


(
id_ number, --id
name_ varchar2(100), --назва
catalog_number varchar2(10), --каталожний номер
availability_ varchar2(1), --наявність
delivery_time number(3, 2) --термін поставки
);

CREATE TABLE order_ --інформація про замовлення


(
id_ number, --id
date_ date, --дата
price number(5, 2) --ціна
);

CREATE TABLE fulfillment_order --інформація про виконання замовлення


(
id_ number, --id
date_ date --дата
);

14) Первинні ключі:


ALTER TABLE worker ADD CONSTRAINT pk_worker PRIMARY KEY (id_);
ALTER TABLE customer ADD CONSTRAINT pk_customer PRIMARY KEY
(id_);
ALTER TABLE automobile ADD CONSTRAINT pk_automobile PRIMARY KEY
(id_);
ALTER TABLE spare_parts ADD CONSTRAINT pk_spare_parts PRIMARY KEY
(id_);
ALTER TABLE order_ ADD CONSTRAINT pk_order PRIMARY KEY (id_);
ALTER TABLE fulfillment_order ADD CONSTRAINT pk_fulfillment_order
PRIMARY KEY (id_);

Зовнішні:
ALTER TABLE automobile ADD CONSTRAINT fk_customer FOREIGN KEY
(id_) REFERENCES customer(id_);
ALTER TABLE order_ ADD CONSTRAINT fk_customer_order FOREIGN KEY
(id_) REFERENCES customer(id_);
ALTER TABLE order_ ADD CONSTRAINT fk_automobile FOREIGN KEY (id_)
REFERENCES automobile(id_);
ALTER TABLE order_ ADD CONSTRAINT fk_spare_parts FOREIGN KEY (id_)
REFERENCES spare_parts(id_);
ALTER TABLE fulfillment_order ADD CONSTRAINT fk_order FOREIGN KEY
(id_) REFERENCES order_(id_);

Віконні функції

15) INSERT INTO automobile VALUES (1, 'Nisan', NULL, 2000);


INSERT INTO automobile VALUES (2, 'Nisan', NULL, 2001);
INSERT INTO automobile VALUES (3, 'BMW', NULL, 1999);
INSERT INTO automobile VALUES (4, 'BMW', NULL, 2002);
INSERT INTO automobile VALUES (5, 'Nisan', NULL, 2000);

SELECT brand, AVG(year_) AS avg_year FROM automobile GROUP BY brand;

16) SELECT id_, brand, model_, year_, SUM(year_)


OVER (PARTITION BY brand ORDER BY year_) as cumulative_sum
FROM automobile;
17) SELECT id_, brand, model_, year_, SUM(year_)
OVER (PARTITION BY brand ORDER BY year_ RANGE BETWEEN
UNBOUNDED PRECEDING AND CURRENT ROW) AS window_sum,
SUM(year_) OVER (ORDER BY brand, year_ RANGE BETWEEN UNBOUNDED
PRECEDING AND CURRENT ROW) AS cumulative_sum
FROM automobile;

18) SELECT id_, brand, model_, year_, SUM(year_)


OVER (PARTITION BY brand ORDER BY year_ ROWS BETWEEN
UNBOUNDED PRECEDING AND CURRENT ROW) AS window_sum,
SUM(year_) OVER (ORDER BY brand, year_ ROWS BETWEEN UNBOUNDED
PRECEDING AND CURRENT ROW) AS cumulative_sum
FROM automobile;

19) SELECT id_, brand, model_, year_,


CASE
WHEN year_ >= 2002 THEN 'Сучасний автомобіль'
WHEN year_ >= 2000 THEN 'Автомобіль 2000-го або 2001-го року'
ELSE 'Старий автомобіль'
END AS text
FROM automobile;
20) SELECT id_, brand, model_, year_,
RANK() OVER (ORDER BY year_ DESC) as year_rank FROM automobile;

Ієрархічні запити

21-22) ALTER TABLE automobile ADD fk_automobile integer REFERENCES


automobile(id_);

UPDATE automobile SET fk_automobile = null WHERE id_ = 1;


UPDATE automobile SET fk_automobile = 1 WHERE id_ = 3;
UPDATE automobile SET fk_automobile = 4 WHERE id_ = 2;
UPDATE automobile SET fk_automobile = 2 WHERE id_ = 5;
UPDATE automobile SET fk_automobile = 3 WHERE id_ = 4;

23) SELECT id_, brand, model_, year_, fk_automobile, LEVEL FROM automobile
START WITH fk_automobile is null
CONNECT BY PRIOR id_ = fk_automobile
ORDER BY LEVEL;
24) SELECT id_, brand, model_, year_, fk_automobile, LEVEL FROM automobile
START WITH id_ = 2
CONNECT BY PRIOR fk_automobile = id_
ORDER BY LEVEL;

You might also like