Міністерство освіти і науки України
Національний університет “Львівська політехніка”
Кафедра
С А П Р
Розрахункова робота
З курсу:
“Основи організації баз даних і знань”
Львів 2007р.
Файл із командами мови SQL, що формує таблиці:
CREATE TABLE students
(
stud_id int NOT NULL AUTO_INCREMENT,
stud_name char(50) NOT NULL ,
націо char(50) NOT NULL ,
stud_address char(50) NULL ,
stud_city char(50) NULL ,
stud_country char(50) NULL ,
stud_contact char(50) NULL ,
stud_email char(255) NULL ,
prod_id char(10) NULL ,
PRIMARY KEY (stud_id)
) ENGINE=InnoDB;
CREATE TABLE subjects
(
subj_id int NOT NULL ,
subj_name char(255) NOT NULL ,
subj_desc text NULL ,
stud_id int NULL ,
PRIMARY KEY(subj_id)
) ENGINE=InnoDB;
CREATE TABLE firms
(
firm_id int NOT NULL AUTO_INCREMENT ,
firm_name char(50) NOT NULL ,
firm_address char(50) NULL ,
firm_city char(50) NULL ,
firm_country char(50) NULL ,
firm_pay decimal(8,2) NOT NULL ,
stud_id int NULL ,
PRIMARY KEY (firm_id)
) ENGINE=InnoDB;
CREATE TABLE products
(
prod_id char(10) NOT NULL ,
prod_name char(255) NOT NULL ,
prod_price decimal(8,2) NOT NULL ,
prod_desc text NULL ,
firm_id int NULL ,
PRIMARY KEY(prod_id)
) ENGINE=InnoDB;
ALTER TABLE subjects ADD CONSTRAINT fk_subjects_students FOREIGN KEY (stud_id) REFERENCES students (stud_id);
ALTER TABLE products ADD CONSTRAINT fk_products_firms FOREIGN KEY (firm_id) REFERENCES firms (firm_id);
ALTER TABLE firms ADD CONSTRAINT fk_firms_students FOREIGN KEY (stud_id) REFERENCES students (stud_id);
ALTER TABLE students ADD CONSTRAINT fk_students_products FOREIGN KEY (prod_id) REFERENCES products (prod_id);
Файл із командами мови SQL, що заповнює попередньо сформовані таблиці:
INSERT INTO students(stud_id, stud_name, націо, stud_address, stud_city, stud_country, stud_contact, stud_email, prod_id)
VALUES(10001, 'Roman Dropa', 'укр', 'New Street', 'New-York', 'USA', '80670000000', 'dropa@rambler.ru', 'TRNS1');
INSERT INTO students(stud_id, stud_name, націо, stud_address, stud_city, stud_country, stud_contact, stud_email, prod_id)
VALUES(10002, 'Roman Averjanov', 'укр', 'Shuroka Street', 'Veluki mostu', 'Ukraine', '80979358701', 'averyanov@meta.ua', 'TRNS1');
INSERT INTO students(stud_id, stud_name, націо, stud_address, stud_city, stud_country, stud_contact, prod_id)
VALUES(10003, 'Andrij Vojtunsjkuj', 'укр', 'Okrygna Street', 'Lviv', 'Ukraine', '80979602446', 'PROT1');
INSERT INTO students(stud_id, stud_name, націо, stud_address, stud_city, stud_country, stud_contact, stud_email, prod_id)
VALUES(10004, 'Oksana Kaljchenko', 'укр', 'Zelena Street', 'Lviv', 'Ukraine', '80677865231', 'rasta@ukr.net', 'PROT1');
INSERT INTO subjects(subj_id, subj_name, subj_desc, stud_id)
VALUES(10001, 'Menegment', 'Вивчаються видумані поняття, означення, які носять абсолютно неточний і деякою мірою евристичний зміст', 10001);
INSERT INTO subjects(subj_id, subj_name, subj_desc, stud_id)
VALUES(10002, 'Psyhologija', 'Теоретичний вступ в основи психології. Результат вивчення: шо знав, -- те довідався! :)', 10002);
INSERT INTO subjects(subj_id, subj_name, subj_desc, stud_id)
VALUES(10003, 'SUBD', 'Предмет дає знання для розуміння роботи сучасних баз даних.', 10003);
INSERT INTO subjects(subj_id, subj_name, subj_desc, stud_id)
VALUES(10004, 'DMvSAPR', 'Представлення моделей САПР за допомогою графів. Розв"язок задач САПР із використанням теорії графів.', 10004);
INSERT INTO subjects(subj_id, subj_name, subj_desc, stud_id)
VALUES(10005, 'Методи синтезу й оптимізації', 'Вивчення методів синтезу й оптимізації (зокрема мінімізації).', 10001);
INSERT INTO subjects(subj_id, subj_name, subj_desc, stud_id)
VALUES(10006, 'Основи права', 'Вивчення основ юридичного права в Україні.', 10005);
INSERT INTO firms(firm_id, firm_name, firm_address, firm_city, firm_country, firm_pay, stud_id)
VALUES(10001, 'InterObject', 'Gorodocjka', 'Lviv', 'Ukraine', 250.00, 10005);
INSERT INTO firms(firm_id, firm_name, firm_address, firm_city, firm_country, firm_pay, stud_id)
VALUES(10002, 'SoftObject', 'White Street', 'Detroit', 'USA', 485.25, 10004);
INSERT INTO firms(firm_id, firm_name, firm_address, firm_city, firm_country, firm_pay, stud_id)
VALUES(10003, 'SoftServe', 'Valova', 'Lviv', 'Ukraine', 215.75, 10003);
INSERT INTO firms(firm_id, firm_name, firm_address, firm_city, firm_country, firm_pay, stud_id)
VALUES(10004, 'Eleks', 'Knjaguni Oljgu', 'Lviv', 'Ukraine', 290.00, 10002);
INSERT INTO firms(firm_id, firm_name, firm_address, firm_city, firm_country, firm_pay, stud_id)
VALUES(10005, 'Aiaho', 'Far-Far-Away Street', 'Aljaska', 'USA', 150.00, 10001);
INSERT INTO products(prod_id, prod_name, prod_price, prod_desc, firm_id)
VALUES('TRNS1','Pragma 6.0', 99.05, 'Перекладач англійської, української та російської мов.', 10001);
INSERT INTO products(prod_id, prod_name, prod_price, prod_desc, firm_id)
VALUES('TRNS1_bases1','Language bases 1 for Pragma 6.0', 9.05, 'Бази німецької та французької мов.', 10002);
INSERT INTO products(prod_id, prod_name, prod_price, prod_desc, firm_id)
VALUES('TRNS2','Lingvo 12', 199.05, 'Словник і перекладач англійської, російської, німецької, італійської мов.', 10003);
INSERT INTO products(prod_id, prod_name, prod_price, prod_desc, firm_id)
VALUES('PROT1','ESET NOD32', 50.05, 'Protection of your computer from viruses.', 10004);
INSERT INTO products(prod_id, prod_name, prod_price, prod_desc, firm_id)
VALUES('GAME002','WarCraft 3.0beta', 19.99, 'Стратегічна гра.', 10005);
У результаті отримаємо наступні таблиці.
Таблиця firms.
Таблиця products.
Таблиця students.
Таблиця subjects.
Запит №1.
select prod_name, stud_name
from products, students
where students.prod_id=products.prod_id
Результат виконання запиту №1.
Запит №2.
select prod_name, count(students.stud_name)
from products, students
where students.prod_id=products.prod_id
group by prod_name
Результат виконання запиту №2.
Запит №3.
select subjects.subj_name, students.stud_name, students.stud_id
from subjects inner join students
on subjects.stud_id=students.stud_id
Результат виконання запиту №3.
Запит №4.
select subjects.subj_name, students.stud_name, students.stud_id
from students left outer join subjects
on subjects.stud_id=students.stud_id
або
select subjects.subj_name, students.stud_name, students.stud_id
from subjects right outer join students
on subjects.stud_id=students.stud_id
Результат виконання запиту №4.
Запит №5.
select subjects.subj_name, students.stud_name, students.stud_id
from students right outer join subjects
on subjects.stud_id=students.stud_id
або
select subjects.subj_name, students.stud_name, students.stud_id
from subjects left outer join students
on subjects.stud_id=students.stud_id
Результат виконання запиту №5.